首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

adoQuery 与 Sort 与 Locate,该怎么处理

2012-10-13 
adoQuery 与 Sort 与 Locate今天迂到一个奇怪的现象.adoQuery加了sort后, 再locate的结果总是同一条记录,

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
……

热点排行