我有一个控制组合框的文本框,控制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非常适合大多数供应商。
但是有一个看起来并不奇怪的人,叫他" McTrouble先生"。当从下拉列表中选择他时,所有4个文本框显示" #ERROR"。他是导致此问题的约400家供应商中唯一一家。我尝试使用我创建的表单删除他并重新输入他。尝试在后端表本身这样做,没有运气。和他在一起的那些盒子总是显示#ERROR。
组合框是从包含以下字段的表中提取的供应商名称:
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
表格上的日期类型是:
Number Number Text Text
然后,此处的其他字段将填充文本框。
我在这里缺少什么?
有更简单的方法吗?
答案 0 :(得分:1)
供应商名称中可能只有一个引用,如O'Donnell或O'Malley。构建sql子句的代码也使用单引号,导致格式不正确的字符串如下所示: IP ='O'Malley'
尝试:
=DLookUp("IPPhone","Vendors","IP=""" & [Forms]![Project Details]![cboIP] & """")
我用两个双引号替换每个单引号。在VBA中,这是双引号转义的奇怪方式。
更好的解决方案,假设供应商是供应商的主要密钥。
主键应该用于查找值(如果可用)。