我需要实现一个组合框,它绑定到TpFIBDataSet
(TDataSet
的后代)。我以前做了好几次。如果它只包含预定义的值,那就不是什么大事了。
这一次,我想要一个接受用户输入的自定义值的组合框,同时也让用户能够选择一些预定义的值。在组合框的字段所属的记录发布之前,新输入的值应插入到数据库的某个表中。
在我看来,主要问题是预定义的值在内部表示为整数ID(我使用的组合框是来自Roy Woll的 InfoPower 包的TwwDBComboBox
,因为它实现了maplist功能),因为该字段是外键,而自定义值几乎可以是所有内容(仅限于掩码)
如何区分整数ID和整数用户输入,例如?
请参阅组合框的设置属性:
AComboBox.Style := csDropDown;
AComboBox.MapList := True;
我没有请求解决方案,因为接受这段代码并且很开心。我宁愿寻找可能有或有类似问题的其他人的建议。
答案 0 :(得分:0)
例如,如何区分整数ID和整数用户输入?
您返回数据库。直接查询select count(*) from table where id = ComboBoxId
或者使用数据集的Locate
方法
或者在MyList: TList<Integer>
中保留一个缓存,并执行MyList.BinarySearch
以查看该项目是否已存在于数据库中。
显然,缓存仅在数据库是单用户时才有效,否则您将无法使其保持最新状态。
如果它不在DB中,则运行insert查询。 插入后,您运行默认的组合框行为,因为现在值肯定在数据库中。