2014-01-10 15 views
0

我有一個文本框,需要我鍵入一個數字,然後單擊按鈕以查找相關值。但現在我需要做的是如果我輸入3號碼例如「123」,它將返回與以「123」開頭的任何記錄相關的所有號碼。我不確定是否有可能。我使用下面的代碼,但是當我運行它時,它給我一個類型錯配。使用通配符查找鏈接到查詢的文本框的記錄

Private Sub Command35_Click() 
    If IsNull(Me.Text22.Value) = True Then 
    MsgBox "You need to enter a reference number" 
    ElseIf IsNull(Me.Text22.Value) = False Then 
    Me.List28.RowSource = "SELECT dbo_Typesofmaterial.[MATERIAL NAME], dbo_Inventory.[REFF NUMBER], dbo_Whse.[NAME], dbo_Inventory.NO_IN, dbo_Inventory.[POSITION], dbo_Inventory.[PO NO], dbo_Inventory.[REF NO2], dbo_Suppliers.SUPPLIERID, dbo_Inventory.DATE, dbo_Inventory.MATTYPE FROM (dbo_OrderDetails INNER JOIN (((dbo_Inventory INNER JOIN dbo_PurchaseOrders ON dbo_Inventory.[PO NO] = dbo_PurchaseOrders.[PO NO]) INNER JOIN dbo_Suppliers ON dbo_PurchaseOrders.ID = dbo_Suppliers.ID) INNER JOIN dbo_Typesofmaterial ON dbo_Inventory.MATTYPE = dbo_Typesofaterial.ID) ON dbo_OrderDetails.[REFF NUMBER] = dbo_Inventory.[REFF NUMBER]) INNER JOIN dbo_Whse ON dbo_Inventory.[FINAL DESTN ] = dbo_Whse.[WHSE NO] WHERE (((dbo_Inventory.[REF NO2])= " * " & [Forms]![Ref No Locator]![Text22] & " * "));" 
    Else 
    End If 
End Sub 

回答

3

你的問題的標準如下:

WHERE (((dbo_Inventory.[REF NO2])= " * " & [Forms]![Ref No Locator]![Text22] & " * "))

我覺得你有一對夫婦的問題。首先,您需要使用Like而不是=進行通配符搜索。其次,dbo_Inventory.[REF NO2]是一個數字字段,您試圖將字符串用作條件值。因此,您需要使用CStr將數字字段轉換爲字符串以符合所使用的條件。另外,由於您匹配前3個字符,所以在開始時不需要通配符。

WHERE (((CStr(dbo_Inventory.[REF NO2])) Like '" & [Forms]![Ref No Locator]![Text22] & "*'"))

+0

謝謝@Matt Weller那正是我錯過的!我不知道我必須使用CStr轉換爲字符串。我一定會記住這一點。再次感謝您的幫助。 – Dre488