0

我必须将许多Excell文件(转换为CSV)转换为我的应用程序的数据库布局。

在我的表中,有一些字段使用其他表列表的外键,当我的转换代码找到这样的字段时,它没有外来 id,而是在Excell.

我发现目前最好的方法是插入一个新行,聚焦该TDBLookupComboBox字段,然后通过 SO 发送消息以模拟我正在输入文本。然后该ComboBox autocomplete功能将在外国列表中选择正确的项目。

如果这是最好的方法,我该怎么做?要使用 Delphi 2006 和 Firebird 发送这些键盘消息?

4

1 回答 1

1

与其“模拟”用户,不如执行组件通过代码执行的操作。它使用 TDataSet.Locate 方法查找部分字符串并将 DataSet 游标设置为找到的记录。然后它使用查找源来获取值。

var
  SearchString: string;
begin
  SearchString := 'Dat';
  if LookupDataSet.Locate('MySearchField', SearchString, [loCaseInsensitive, loPartialKey]) then
  begin
    DestDataSet.Edit;
    DestDataSet.FieldByName('FLD_ID').AsInteger := LookupDataSet.FieldByName('FLD_ID').AsInteger;
    // DestDataSet.Post;
  end
  else
    raise Exception.CreateFmt('Lookup value not found for "%s"', [SearchString]);
end;
于 2012-08-18T12:38:21.227 回答