我有一个连接到数据库查询的 DBLookupComboBox 。那部分工作正常。当我运行程序时, DBLookupComboBox 会填充查询结果。我想在程序首次运行或时看到 DBLookupComboBox 填充第一项“请选择”新项目操作已启动。 (见下图)
此外,如果我正在加载以前保存的已选择索引2“快速消除”的数据库记录,我如何让 DBLookupComboBox 显示所选条目?
是的,“请选择”是索引0,它将作为查询的一部分进行检索。
答案 0 :(得分:5)
你可以试试这个(我知道你现在已经解决了它,正如你2年前提出的那样),但万一其他人有兴趣...
dbluLookup.KeyValue := dbluLookup.ListSource.DataSet.FieldByName(dbluLookup.KeyField).Value;
只需将KeyValue设置为ListSource数据集中的第一条记录,该记录应为“请选择”行。
答案 1 :(得分:1)
这样做的一种方法是将“请选择”添加到您选择的基础表中,此元组的键将为0.然后当您显示组合框并且连接字段的值为0,将显示“请选择”。当然,您必须确保永远不会选择此值!
答案 2 :(得分:1)
我的猜测是底层表字段的值是NULL而不是零,这告诉DBComboBox没有选择任何值并且它会相应地显示。
如果表中的值为零,我认为将选择组合编辑字段中的文本来指示,但我可能会错误地回想起这一点。
无论如何,只需检查Field1.IsNull(或IsEmpty)然后将其设置为零。这意味着你不能再区分“未知值”(NULL)和“无选择值”(零),除非你阻止零值重新进入表格......
答案 3 :(得分:1)
DBLookupComboBox
默认显示ListField(s)
KeyField
ListSource
与DataField
中的DataSource
相匹配。因此,为了确保显示DataField
为NULL的某些值,您必须在KeyField
中提供ListSource
NULL。但可以想象,不希望在与ListSource
关联的下垫表中使用NULL值。
避免这种情况的一种方法是使用ListSource
将{NULL}值添加到UNION SELECT
后面的数据集中。这应该可以正常工作,因为该数据集不必是可编辑的。
现在,为确保此特殊数据集仅在您向DataSource
关联的数据集添加新记录时可用,请在ListSource.DataSet
中管理DataSource.OnStateChange
的查询。在DataSource.State = dsInsert
时,请更新ListSource.DataSet
。
答案 4 :(得分:0)
Steve Childs对TwwDBLookupCombo,InfoPower组件
的修改cboFilterTravel1.LookupValue := cboFilterTravel1.LookupTable.FieldByName(cboFilterTravel1.LookupField).Value;
感谢Steve It为我工作