Привет ребята я написал функцию, которая имеет проверить идентификатор данную функцию в качестве iID
и затем выводит имя члена он найден, в противном случае она должна выход, что он не найденне может выполнить эту операцию в открытом/закрытом наборе данных?
Различный таблица активна, когда эта функция вызывается, поэтому он должен изменить таблицу Members
(для поиска идентификатора), а затем снова после этого (у меня есть несколько таблиц)
function fCheckID(iID:integer):String;
var sTable:string;
begin
sTable:=datamoduleX.tableX.TableName;
datamoduleX.tableX.TableName:='Members';
if datamoduleX.tableX.Locate('RefNo',iID,[]) then
result:=dmRooiX.tblRooiX['Name']+' '+datamoduleX.tableX['Surname']
else
result:='ID: '+inttostr(iID)+' does not exist';
datamoduleX.tableX.TableName:=sTable;
end;
но проблема каждый раз, когда я называю эту функцию Я получаю сообщение об ошибке «Не удается выполнить эту операцию в открытом наборе данных»
, если я закрою набор данных, прежде чем запускать функцию, которую я получаю «Не удается выполнить эту операцию в закрытом наборе данных»
Я знаю, что ошибка возникает, когда я пытаюсь получить доступ к названию таблицы или ее изменить (функция не дает ошибка, когда эти 3 строки закомментированы)
Я понятия не имею, как сделать эту работу любая помощь будет принята с благодарностью
Используйте подготовленный запрос для такого рода операций –
мне очень жаль, но я не знаю, что вы имеете в виду, что – RaymondSWalters
Ваш подход совершенно неправильно, IMO: а) вы, кажется, не знают, что вы можете одновременно открыть несколько таблиц; b) Не изменяйте TableName таблицы для доступа к другой таблице в базе данных, вместо этого используйте отдельный компонент Table; c) Вы выполняете поиск в наборе данных в одном datamodule, но затем смотрите данные из другой таблицы в другой формат данных. Я думаю, было бы лучше, если бы вы изучили базовый онлайн-курс Delphi db и начали снова. – MartynA