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

时间:2015-07-20 18:38:43

标签: sql ms-access ms-access-2010 database-administration

我有一个控制组合框的文本框,控制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

然后,此处的其他字段将填充文本框。

我在这里缺少什么?

有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

供应商名称中可能只有一个引用,如O'Donnell或O'Malley。构建sql子句的代码也使用单引号,导致格式不正确的字符串如下所示: IP ='O'Malley'

尝试:

=DLookUp("IPPhone","Vendors","IP=""" & [Forms]![Project Details]![cboIP] & """")

我用两个双引号替换每个单引号。在VBA中,这是双引号转义的奇怪方式。

更好的解决方案,假设供应商是供应商的主要密钥。

  • 组合RowSource:SELECT Vendors.Vendor,Vendors.IP [...其余SQL]
  • combo ColumnCount:2
  • combo ColumWidths:0; 1.5(零隐藏组合中的第一列)
  • = DLookUp(“IPPhone”,“供应商”,“供应商=”和[表格]![项目详情]![cboIP])

主键应该用于查找值(如果可用)。