2015-11-02 26 views
0

我在下面的代碼中收到語法錯誤3075。我試圖打開一個記錄集,其中[主題]字段包含來自打開表單(Edit_Shipment_frm!Text105)的[ID]。主題字段的佈局如下:信息請求 - 1715,其中1715是[ID]。我知道我需要在條件中的[ID]之前使用通配符。我正在努力尋找一種方法來做到這一點,接入將接受。有沒有人有任何想法?我在下面看不到任何丟失的操作符,所以它不應該像我的語法。先謝謝你!帶通配符的查詢表達式中的語法錯誤

Set rst1 = db.OpenRecordset("SELECT Subject, Contents FROM LinkedTable WHERE Subject = *" & [Forms]![Edit_Shipment_frm]![Text105]) 

回答

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()

相關問題