Delphi 将字符串传递给DBLookupComboBox
在Delphi XE6中将字符串传递给DBLookupComboBox时,我遇到访问冲突。Delphi 将字符串传递给DBLookupComboBox,delphi,delphi-xe6,Delphi,Delphi Xe6,在Delphi XE6中将字符串传递给DBLookupComboBox时,我遇到访问冲突。BusName是一个字符串,包含来自订单表单的公司名称。我使用的控件是否正确 下面是关于DBLookupComboBox设置的一些信息 KeyField称为CustID ListField被称为CompanyName ListSource被称为CustNames CustNameDBLCBox.Field.AsString:= OrdersForm.BusName; 不确定我遗漏了什么?一个DBLooku
BusName
是一个字符串,包含来自订单表单的公司名称。我使用的控件是否正确
下面是关于DBLookupComboBox设置的一些信息
KeyField
称为CustID
ListField
被称为CompanyName
ListSource
被称为CustNames
CustNameDBLCBox.Field.AsString:= OrdersForm.BusName;
不确定我遗漏了什么?一个
DBLookupCombobox
可以用于两个不同的目的。通常会分配
数据源
和数据字段
,以使用它更改/显示一个数据字段的字段以及LookUpdateSet中的数据。DBLookupCombobox中的每个手动更改都会将数据字段设置为键字段的值,并且通过Datasource绑定的数据集中的任何更改都会使用ListSource定义的数据集中的键字段找到的Listfield值更改显示的值 DBLookupCombobox的另一种用法是在不绑定Datasource/Datafield的情况下使用它,仅用于选择一个值,并使用Keyvalue或文本进行进一步的工作 TL;DR
以下是两个可能导致访问冲突的原因:
CustNameDBLCBox.Field.AsString:=
这将导致您所描述的访问冲突,因为未分配字段:属性字段:TField read FDataField代码>
如果您要分配数据源/数据字段,则可能会出现一个错误,指向数据字段的无效值,例如整数字符串,但不是访问冲突李>
要更改显示的值,您必须更改KeyValue:
if CustNameDBLCBox.ListSource.DataSet.Locate(CustNameDBLCBox.ListField, OrdersForm.BusName ,[]) then
CustNameDBLCBox.KeyValue := CustNameDBLCBox.ListSource.DataSet.FieldByName(CustNameDBLCBox.KeyField).Value;
更新:在客户订单上,向调用者报价订单估算时。当来电者说他们想安排订单时,用户单击订单按钮,该按钮获取一些数据(即客户姓名、地址信息),关闭表单,然后打开新的服务表单以下订单。这里有一个DBLookupComboBox。因为我们已经从客户订单中知道了客户名称,所以我希望该名称出现在DBLookupComboBox中。因此,我将来自Orders表单的BusName(字符串-公司名称)传递给DBLookupComboBox。是这样做的吗?