[英]Access Run-Time error 2465. Can't find the field '1' referred to in your expression
I need help with this code. 我需要有关此代码的帮助。
Option Compare Database
Option Explicit
Private Sub BTNSEARCHOnetoOne_Click()
Dim SQL As String
SQL = "SELECT [00_SheetList-Revit-UNION].PACKAGE, [00_SheetList-Revit-UNION].DRAWING, [00_SheetList-Revit-UNION].DISCIPLINE, Hillsboro_OR_xlsx.FileName_Hillsboro_OR, Hillsboro_OR_xlsx.FilePath_Hillsboro_OR FROM Hillsboro_OR_xlsx, WHERE(([00_SheetList-Revit-UNION].PACKAGE) Like '" & Me.TXTKeywordsPackage & "') AND ((Hillsboro_OR_xlsx.FileName_Hillsboro_OR) Like ('*" & ([00_SheetList-Revit-UNION].DRAWING) & "*')"
Me.SubONEtoONEInsideJoin.Form.RecordSource = SQL
Me.SubONEtoONEInsideJoin.Form.Requery
Me.SubONEtoONENullJoin.Form.Requery
End Sub
Private Sub Detail_Click()
End Sub
I narrowed it down to this part of the code. 我将其范围缩小到了代码的这一部分。
"...((Hillsboro_OR_xlsx.FileName_Hillsboro_OR) Like ('*" & ([00_SheetList-Revit-UNION].DRAWING) & "*')"
As I can take this part out and it works. 因为我可以将这一部分讲出来,并且可以正常工作。 Is this just syntax?
这只是语法吗?
It looks like that you had something wrong here 看来您这里有问题
you have written 你写
Like '" & Me.TXTKeywordsPackage & "'
but it has to be like this 但必须像这样
Like '*" & Me.TXTKeywordsPackage & "*'
you had this part wrong 你这部分错了
check this below part 在下面检查一下
Like ('*" & ([00_SheetList-Revit-UNION].DRAWING) & "*')
Make sure that you are getting the value from textbox. 确保从文本框中获取值。 It looks like you are calling table column.
看起来您正在调用表列。
Carefully count your parenthesis. 仔细计算您的括号。
There should be an additional )
at the very end. 最后应该有一个额外的
)
。
Currently, your SQL has a number of syntax issues: 当前,您的SQL存在许多语法问题:
WHERE
clause; WHERE
子句前的逗号; WHERE
condition; WHERE
条件中的未括弧的括号; [00_SheetList-Revit-UNION]
) not referenced in FROM
or JOIN
clauses. FROM
或JOIN
子句中未引用未知别名( [00_SheetList-Revit-UNION]
)。 Possibly you meant to cross join this source with Hillsboro_OR_xlsx
. Hillsboro_OR_xlsx
交叉加入此源。 See issues with current code with line breaks for illustration: 请参见带有换行符的当前代码问题以进行说明:
SQL = "SELECT [00_SheetList-Revit-UNION].PACKAGE," _
& " [00_SheetList-Revit-UNION].DRAWING," _
& " [00_SheetList-Revit-UNION].DISCIPLINE," _
& " Hillsboro_OR_xlsx.FileName_Hillsboro_OR, " _
& " Hillsboro_OR_xlsx.FilePath_Hillsboro_OR " _
& " FROM Hillsboro_OR_xlsx, " _
& " WHERE(([00_SheetList-Revit-UNION].PACKAGE) " _
& " Like '" & Me.TXTKeywordsPackage & "') " _
& " AND " _
& " ((Hillsboro_OR_xlsx.FileName_Hillsboro_OR) " _
& " Like ('*" & ([00_SheetList-Revit-UNION].DRAWING) & "*')"
These issues can be mitigated with parameterized queries (an industry best practice when writing SQL in application code) which is supported in MS Access using QueryDef Parameters . 可以通过使用QueryDef Parameters的 MS Access支持的参数化查询(在应用程序代码中编写SQL时的行业最佳实践)来缓解这些问题。 Below are a few advantages and further below adjustment to your setup.
以下是一些优点,下面进一步调整您的设置。
SQL (with no VBA) SQL (无VBA)
Save below as a stored Access query, using parameters and table aliases. 使用参数和表别名将以下内容另存为存储的Access查询。 Also,
[00_SheetList-Revit-UNION]
is cross joined (comma-separated in FROM
clause) as assumed above. 同样,
[00_SheetList-Revit-UNION]
, [00_SheetList-Revit-UNION]
被交叉连接(在FROM
子句中以逗号分隔)。
PARAMETERS [PackageParam] Text;
SELECT o.PACKAGE, o.DRAWING, o.DISCIPLINE,
h.FileName_Hillsboro_OR, h.FilePath_Hillsboro_OR
FROM Hillsboro_OR_xlsx h, [00_SheetList-Revit-UNION] o
WHERE ((o.PACKAGE) Like [PackageParam])
AND ((h.FileName_Hillsboro_OR) Like '*' & o.DRAWING & '*');
VBA VBA
Private Sub BTNSEARCHOnetoOne_Click()
Dim qDef As QueryDef
Dim rst As Recordset
' OPEN SAVED QUERY
Set qDef = CurrentDb.QueryDefs("mySavedQuery")
' BIND PARAMETERS
qDef![PackageParam] = "*" & Me.TXTKeywordsPackage & "*"
' BUILD RECORDSET FROM QUERYDEF AND SET TO SUBFORM
Set rst = qDef.OpenRecordset()
Me.SubONEtoONEInsideJoin.Form.Recordset = rst
Me.SubONEtoONENullJoin.Form.Requery
Set qDef = Nothing
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.