我在以下代码中收到语法错误3075。我正在尝试打开一个记录集,其中字段[subject]包含来自打开表单的[ID](Edit_Shipment_frm!Text105)。主题字段的布局如下:信息请求 - 1715,其中1715是[ID]。我知道我需要在条件中使用[ID]之前的通配符。我正在努力找到一种方法来实现访问将接受的方法。有没有人有任何想法?我在下面看不到任何遗漏的操作符,所以它一定不喜欢我的语法。提前谢谢!
Set rst1 = db.OpenRecordset("SELECT Subject, Contents FROM LinkedTable WHERE Subject = *" & [Forms]![Edit_Shipment_frm]![Text105])
答案 0 :(得分:0)
你不能像这样使用星号。正确的SQL将是
... WHERE Textfield LIKE '*" & [string that contains a part of Textfield] & "*'"
但你反过来(你的ID是搜索字符串的一部分)。
您需要从表单字段中提取ID。如果[Text105]
(请给这个字段一个有意义的名字!)总是看起来像“某个字符串 - ID”,你可以使用Split()
函数:
S = "SELECT Subject, Contents FROM LinkedTable WHERE Subject = " & _
Split([Forms]![Edit_Shipment_frm]![Text105], " - ")(1)
Set rst1 = db.OpenRecordset(S)
Split()
返回一个从0开始的数组,因此Split(..., " - ")(1)
给出“ - ”后的部分。
但是为了获得一些错误检查(例如,如果“ - ”可以是ID之前的字符串的一部分),则应该将提取放入单独的函数中,在该函数中检查NULL,并使用数组的UBound()
。