#由组合框控制的文本框出现错误,但仅当在组合框中输入特定值时

#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])

如果可用,应使用主键来查找值。