补充我的回答 if Locate('field1;field2;field3', VarArrayOf([val1,val2, val3]), [loPartialKey]) then Table1.Delete; 在loPartialKey的位置有两个参数可选, TLocateOption = (loCaseInsensitive, loPartialKey);loCaseInsensitive不在乎大小写 loPartialKey部分匹配条件
xiaonanw(小南) TLocateOptions中没有search,编译出错。麻烦你在想想。 ghz2000(编程马大哈) 你说的帮助里都有。以下是帮助中的例子: with CustTable do Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '831-431-1000']), [loPartialKey]); 我写的那句没错吧?可就是不行!一旦第一个字段符合,就停下来返回True;
xiaonanw(小南) TLocateOptions中没有search,编译出错。麻烦你在想想。 ghz2000(编程马大哈) 你说的帮助里都有。以下是帮助中的例子: with CustTable do Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '831-431-1000']), [loPartialKey]); 我写的那句没错吧?可就是不行!一旦第一个字段符合,就停下来返回True;
if DataModule1.FSJHTable.Locate('ZYDH;SFDM;KLDM',VarArrayOf([Copy(ComboBox1.Text,1,2),DataModule1.TJSTable['SFDM'],DataModule1.TJSTable['KLDM']]),[]) then begin if DataModule1.FSJHTable['SYRS']=0 then begin ShowMessage('该专业已录满!'); Abort; end; end else begin ShowMessage('无此专业!'); Abort; end;
locate一旦查到符合条件的纪录,便自动指向改纪录、不会继续查找
换Query是可以的,但我想搞清楚是怎么回事。
locate EXP do while not EOF begin .......... locatenext end;
while locate(...) do delete
locate就是这样。 还是用TQUERY吧,
LOCATE一定是移动记录指针到符合检索条件的第一个数剧列,如果你使用TABLE你可以使用 FILTER 或 RANGE
还是用query吧,如果数据库大了你会受不了的
用sql语句查其是否存在 然后用sql语句删除 再刷新一下就可以了 select count(*) cccount from ....where ....
它只是移动油标到你想要的纪录上.
if table1.locate('FieldName1;FieldName2',[val1,val2],[]) then
Table1.Delete;
if Locate('field1;field2;field3', VarArrayOf([val1,val2, val3]), [loPartialKey]) then
Table1.Delete;
在loPartialKey的位置有两个参数可选,
TLocateOption = (loCaseInsensitive, loPartialKey);loCaseInsensitive不在乎大小写
loPartialKey部分匹配条件
ghz2000(编程马大哈) 你说的帮助里都有。以下是帮助中的例子:
with CustTable do
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '831-431-1000']), [loPartialKey]);
我写的那句没错吧?可就是不行!一旦第一个字段符合,就停下来返回True;
ghz2000(编程马大哈) 你说的帮助里都有。以下是帮助中的例子:
with CustTable do
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '831-431-1000']), [loPartialKey]);
我写的那句没错吧?可就是不行!一旦第一个字段符合,就停下来返回True;
begin
if DataModule1.FSJHTable['SYRS']=0 then
begin
ShowMessage('该专业已录满!');
Abort;
end;
end
else
begin
ShowMessage('无此专业!');
Abort;
end;
do while not EOF begin
..........
locatenext
end;
还是用TQUERY吧,
FILTER 或 RANGE
然后用sql语句删除
再刷新一下就可以了
select count(*) cccount from ....where ....