我有最奇怪的问题:一个 Dataset.Locate 说他找到了一条记录并跳转到它,但该记录不符合标准。
这是我的代码:
procedure TFZoekEmp.edtZoekNaamEmpChange(Sender: TObject);
var
lFound:boolean;
begin
lFound:=FDataSet.Locate('EMNM', edtZoekNaamEmp.Text, [loCaseInsensitive, loPartialKey]);
if lFound then
WWMessageDlg('Looking for:'+edtZoekNaamEmp.Text+'/found:'+ FDataset.fieldbyname('EMNM').asstring,mtWarning,[mbOK],0)
else
WWMessageDlg('Looking for:'+edtZoekNaamEmp.Text+'/but alas, not found.',mtWarning,[mbOK],0);
end;
这是输出的屏幕截图:
这是一个简单的过程,用于在覆盖中输入员工姓名(屏幕截图中的“Zoek 员工”窗口)并跳转到包含搜索字符串的第一条记录(主窗体上的网格,在左侧)
我正在使用德尔福 10.3。FDataset 是一个 TADODataset,它连接到本地 Access 数据库,由动态创建的 SQL 字符串提供。除了该 SQL 语句中的 WHER 之外,数据集还由数据集的“过滤器”属性进一步过滤。
有一个选项可以更改网格的排序顺序。当它实际上按名称排序时(ORDER BY 子句),一切正常;当它按出生日期排序时,会出现上述结果。
我可以不再信任 TDataset 的“定位”过程吗?