#由组合框控制的文本框出现错误,但仅当在组合框中输入特定值时
#Error in text boxes controlled by a combo box, but only when a certain value is entered in the combo
我有一个文本框控制一个组合框依次控制 4 个文本框。
第一个文本框由用户填写或附加带有四位数商店编号的查询。
组合框填充了以下查询。
SELECT Vendors.IP
FROM Vendors
WHERE (((Vendors.Store)=[Forms].[Project Details].[Store]));
该组合框随后会填充文本框。
=DLookUp("IPPhone","Vendors","IP='" & [Forms]![Project Details]![cboIP] & "'")
"IPPhone" 实际上是 4 个单独的值(每个文本框 1 个),但为简单起见对它们进行了编辑。此 dlookup 对大多数供应商都非常有效。
但是有一个看起来一点也不奇怪,就叫他"Mr McTrouble"。从下拉列表中选择他时,所有 4 个文本框都显示“#ERROR”。他是造成这种情况的大约 400 家供应商中唯一的一个。我试过使用我创建的表格删除他并重新输入他。尝试在后端 table 本身这样做,但没有成功。与他一起,这些框总是显示#ERROR。
组合框是从具有以下字段的 table 中提取的供应商名称:
Store Vendor IP IPPHONE
1111 000001 John Johnson 111-111-1111
2222 000002 Mike 111-111-1112
2222 000003 Frankie Frank 111-111-1113
3333 000004 Joe Bob 111-111-1114
4444 000005 Smith Smith 111-111-1115
5555 000006 Mr McTrouble 111-111-1116
table 上的日期类型是:
Number Number Text Text
然后此处的其他字段填充文本框。
我在这里错过了什么?
有更简单的方法吗?
供应商名称中可能有一个单引号,例如 O'Donnell 或 O'Malley。构建 sql 子句的代码也使用单引号,导致格式不正确的字符串如下所示:IP='O'Malley'
尝试:
=DLookUp("IPPhone","Vendors","IP=""" & [Forms]![Project Details]![cboIP] & """")
我用两个双引号替换了每个单引号。在 VBA 中,这是双引号转义的奇怪方式。
更好的解决方案,假设 Vendor 是 Vendor 的主键。
- combo RowSource: SELECT Vendors.Vendor,Vendors.IP [...你的其余 SQL]
- 组合列数:2
- combo ColumWidths: 0;1.5(零隐藏组合中的第一列)
- =DLookUp("IPPhone","Vendors","Vendor=" & [表格]![项目详情]![cboIP])
如果可用,应使用主键来查找值。
我有一个文本框控制一个组合框依次控制 4 个文本框。
第一个文本框由用户填写或附加带有四位数商店编号的查询。
组合框填充了以下查询。
SELECT Vendors.IP
FROM Vendors
WHERE (((Vendors.Store)=[Forms].[Project Details].[Store]));
该组合框随后会填充文本框。
=DLookUp("IPPhone","Vendors","IP='" & [Forms]![Project Details]![cboIP] & "'")
"IPPhone" 实际上是 4 个单独的值(每个文本框 1 个),但为简单起见对它们进行了编辑。此 dlookup 对大多数供应商都非常有效。
但是有一个看起来一点也不奇怪,就叫他"Mr McTrouble"。从下拉列表中选择他时,所有 4 个文本框都显示“#ERROR”。他是造成这种情况的大约 400 家供应商中唯一的一个。我试过使用我创建的表格删除他并重新输入他。尝试在后端 table 本身这样做,但没有成功。与他一起,这些框总是显示#ERROR。
组合框是从具有以下字段的 table 中提取的供应商名称:
Store Vendor IP IPPHONE
1111 000001 John Johnson 111-111-1111
2222 000002 Mike 111-111-1112
2222 000003 Frankie Frank 111-111-1113
3333 000004 Joe Bob 111-111-1114
4444 000005 Smith Smith 111-111-1115
5555 000006 Mr McTrouble 111-111-1116
table 上的日期类型是:
Number Number Text Text
然后此处的其他字段填充文本框。
我在这里错过了什么?
有更简单的方法吗?
供应商名称中可能有一个单引号,例如 O'Donnell 或 O'Malley。构建 sql 子句的代码也使用单引号,导致格式不正确的字符串如下所示:IP='O'Malley'
尝试:
=DLookUp("IPPhone","Vendors","IP=""" & [Forms]![Project Details]![cboIP] & """")
我用两个双引号替换了每个单引号。在 VBA 中,这是双引号转义的奇怪方式。
更好的解决方案,假设 Vendor 是 Vendor 的主键。
- combo RowSource: SELECT Vendors.Vendor,Vendors.IP [...你的其余 SQL]
- 组合列数:2
- combo ColumWidths: 0;1.5(零隐藏组合中的第一列)
- =DLookUp("IPPhone","Vendors","Vendor=" & [表格]![项目详情]![cboIP])
如果可用,应使用主键来查找值。