我必须将许多Excell
个文件(转换为CSV
)转换为我的应用程序的数据库布局。
在我的表中有一些字段使用外键用于其他表列表,当我的转换代码找到这样的字段时,它没有外来ID,但在Excell
上键入了简单文本。
我发现目前,最好的方法是插入一个新行,将焦点放在TDBLookupComboBox
字段,然后通过SO发送消息来模拟我正在键入文本。然后,ComboBox
autocomplete
功能将在外部列表中选择正确的项目。
如果这是最好的方式,我该怎么做?使用Delphi 2006和Firebird发送这些键盘消息?
答案 0 :(得分: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;