簡體   English   中英

MS Access VBA 中的 SQL 指令

[英]SQL instruction in MS Access VBA

Chr(34) 的想法給出

MsgBox1 SELECT * FROM Emp WHERE JobNumber = BFLA
MsgBox2 "SELECT * FROM Emp WHERE JobNumber = BFLA"

看起來好像它應該在 OpenRecordset 中工作,但給出了“'SELECT ....BFLA'”的“找不到表”消息

'" & xx & "'" 的想法給出

MsgBox1 SELECT * FROM Emp WHERE JobNumber = 'BFLA'
MsgBox2 "SELECT * FROM Emp WHERE JobNumber = 'BFLA'"

這也給出了“'SELECT ....'BFLA'”的“找不到表”消息(BFLA之前的額外單引號)

有效的原始代碼是:

xx = Me![JobID]

Set r1 = db.OpenRecordset("Select * from Emp where EmployeeID = " & Nz(Me![JobID]))

在這段代碼中,EmployeeID 是一個數值

最新的代碼是:

xx = Me![JobNumber] ' the JobNumber from the Combo box which is tested in MsgBox 1 and is correct

xxSQL = "SELECT * FROM Emp WHERE JobNumber = '" & xx & "'"

MsgBox xxSQL, vbOKOnly

xxSQL = Chr(34) & xxSQL & Chr(34)

MsgBox xxSQL, vbOKOnly ' which shows what will go into the OpenRecordset

Set r1 = CurrentDb.OpenRecordset(xxSQL)

很抱歉上次格式不正確,希望我已經掌握了消息框...

克里斯

以下為原帖

我正在嘗試修復一些現有的 Access 代碼,因為源應用程序已更改,而且我真的很難將變量放入 SQL 的 Select 語句中。 我已經閱讀了許多與此類似的已解決問題,並在此 Select 之前、之后和中間嘗試了許多“””排列,並嘗試將其拆分。

xx = Me![JobNumber]
xxSQL = "SELECT * FROM Emp WHERE JobNumber = " & xx
MsgBox xxSQL, vbOKOnly
xxSQL = """ & xxSQL & """
MsgBox xxSQL, vbOKOnly
Set r1 = CurrentDb.OpenRecordset(xxSQL)

JobNumber 現在是一個 4 個字符的字符串,它從組合框中循環瀏覽各種作業,並為每個作業生成一個報告頁面。 第一個 MsgBox 生成 SELECT * FROM Emp WHERE JobNumber = BFLA(有效代碼)

表 Emp 存在並且有一個字段 JobNumber,其中還包含與 Me! 匹配的 4 個字符字符串(包括 BFLA)。 組合框。

第二個 MsgBox 生成“& xxSQL &”,然后是 Access 錯誤消息 - 找不到輸入表或查詢“'& xxSQL &”',因為我無法正確獲取雙引號的數量和位置。

然后生成報告,重復 2 個 MsgBoxes,因為它在組合框列表中循環,報告很好,除了缺少 Emp 表中的內容。 除了引入 JobNumber 之外,Emp 表沒有任何變化,並且 Set r1 之后的代碼沒有變化。

我擔心這對於比我更有經驗的人來說是一個 2 秒的修復,這會很尷尬,但我無法修復它!

謝謝

克里斯

試試這個 - 使用引號作為xx是文本:

xx = Me![JobNumber]
xxSQL = "SELECT * FROM Emp WHERE JobNumber = '" & xx & "'"
MsgBox xxSQL, vbOKOnly
Set r1 = CurrentDb.OpenRecordset(xxSQL)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM