【问题标题】:#Error in text boxes controlled by a combo box, but only when a certain value is entered in the combo#由组合框控制的文本框中出错,但仅当在组合中输入某个值时
【发布时间】:2015-07-20 18:38:43
【问题描述】:

我有一个文本框控制一个组合框,依次控制 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 家供应商中唯一一个造成这种情况的。我尝试使用我创建的表格删除他并重新输入他。尝试在后端表本身这样做,但没有运气。与他一起,这些框总是显示#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

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

我在这里错过了什么?

有更简单的方法吗?

【问题讨论】:

  • 我想回答您的问题,我们需要有关非工作记录和单个工作记录的具体信息。否则很难确定原因。

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


【解决方案1】:

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

试试:

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

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

更好的解决方案,假设 Vendor 是 Vendor 的主键。

  • 组合行来源:SELECT Vendors.Vendor,Vendors.IP [... SQL 的其余部分]
  • 组合列数:2
  • combo ColumWidths: 0;1.5(0 隐藏组合中的第一列)
  • =DLookUp("IPPhone","Vendors","Vendor=" & [Forms]![Project Details]![cboIP])

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多