读书人

adoQuery 与 Sort 与 Locate,该怎么处

发布时间: 2012-10-13 11:38:17 作者: rapoo

adoQuery 与 Sort 与 Locate
今天迂到一个奇怪的现象.
adoQuery加了sort后, 再locate的结果总是同一条记录, 除掉 sort这句, 就正常了.
代码如下:
if not dm1.qEmpl.Active then dm1.qEmpl.Open;
dm1.qEmpl.sort:='wkno';
with TDataSource(Sender).DataSet do
begin
if (State in [dsInsert,dsEdit])and(Field <> nil)and(Field.FieldName='fs1') then
begin
if dm1.qEmpl.Locate('wkno',Field.AsString,[]) then
begin
FieldByName('fs2').AsString:=dm1.qEmpl.fieldbyname('wkna').AsString;
FieldByName('fi1').AsString:=dm1.qEmpl.fieldbyname('EmplID').AsString;
end else showmessage('No Found');
end;

把第二行 dm1.qEmpl.Sort:='wkno' 删掉, 就正常了.
百思不得其解.

[解决办法]
dm1.qEmpl.sort:='wkno'; -> qEmpl.Sort := 'wkno DESC';

sort也不是这么用的哦。 要加ASC 或DESC



[解决办法]
locate不是同一条记录就出问题了,没有问题啊
[解决办法]
Sort是排序,字段后要加上ASC/DESC(大写)
[解决办法]

探讨
今天迂到一个奇怪的现象.
adoQuery加了sort后, 再locate的结果总是同一条记录, 除掉 sort这句, 就正常了.
代码如下:
if not dm1.qEmpl.Active then dm1.qEmpl.Open;
dm1.qEmpl.sort:='wkno';
with TDataSource(Sender).DataSet do
begin
……

读书人网 >.NET

热点推荐