无法对 open/closed 数据集执行此操作?
cannot perform this operation on a open/closed dataset?
大家好,我写了一个函数,它必须检查给函数的 ID 作为 iID
,然后输出它找到的成员的名字,否则它必须输出它不是找到
调用此函数时,另一个 table 处于活动状态,因此它必须将 table 更改为 Members
(以搜索 ID),然后再返回(我有多个tables)
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;
但问题是每次我调用此函数时都会收到一条错误消息 "Cannot perform this operation on an open dataset"
如果我在 运行 函数之前关闭数据集,我会得到 "Cannot perform this operation on a closed dataset"
我知道当我尝试访问 table 名称或更改它时发生错误(当这 3 行被注释掉时,该函数不会给出错误)
我不知道该怎么做
任何帮助将不胜感激
示例:
Table1.TableName := 'TABLE1';
Table1.Open;
Table1.TableName := 'TABLE2'; <-- Cannot perform this operation on Open data set. Because Table1 is open
Table1.Locate('ID',11,[]);
简单的解决方案
Table1.TableName := 'TABLE1';
Table1.Open;
Table1.Close; <--Close table before change table name
Table1.TableName := 'TABLE2';
Table1.Open; <-- Open new table before do Locate
Table1.Locate('ID',11,[]);
大家好,我写了一个函数,它必须检查给函数的 ID 作为 iID
,然后输出它找到的成员的名字,否则它必须输出它不是找到
调用此函数时,另一个 table 处于活动状态,因此它必须将 table 更改为 Members
(以搜索 ID),然后再返回(我有多个tables)
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;
但问题是每次我调用此函数时都会收到一条错误消息 "Cannot perform this operation on an open dataset"
如果我在 运行 函数之前关闭数据集,我会得到 "Cannot perform this operation on a closed dataset"
我知道当我尝试访问 table 名称或更改它时发生错误(当这 3 行被注释掉时,该函数不会给出错误)
我不知道该怎么做 任何帮助将不胜感激
示例:
Table1.TableName := 'TABLE1';
Table1.Open;
Table1.TableName := 'TABLE2'; <-- Cannot perform this operation on Open data set. Because Table1 is open
Table1.Locate('ID',11,[]);
简单的解决方案
Table1.TableName := 'TABLE1';
Table1.Open;
Table1.Close; <--Close table before change table name
Table1.TableName := 'TABLE2';
Table1.Open; <-- Open new table before do Locate
Table1.Locate('ID',11,[]);