2014-01-15 38 views
1

當我單擊發票預覽上的確定按鈕時,出現「運行時錯誤」3615「類型在表達式中不匹配」。DoCmd.OpenReport上的錯誤

我打開主菜單>>選擇一個工單ID >>點擊發票預覽>>接受默認信息>>點擊確定。當我這樣做時,我得到了上述錯誤。我無法弄清楚它爲什麼會發生,並且在兩個地方都改變了字段類型,並且認爲我錯誤地編碼了各種不同格式的VBA代碼。

是否有人可以幫助我得到錯誤的底部...

鏈接刪除...

回答

0

當您單擊該按鈕,這是btnInvoicePreview_Click()線觸發錯誤#3615,「表達式中的類型不匹配」。

DoCmd.OpenReport "Invoice", acPreview 

錯誤的發生是由於在發票報表的記錄源查詢這一條款。

FROM 
    Employee 
    RIGHT JOIN 
     (
      Client 
      INNER JOIN [Work Order] 
      ON Client.ClientID = [Work Order].ClientID 
     ) 
    ON Employee.EmployeeID = [Work Order].EmployeeID 

Employee.EmployeeID是自動編號,這意味着它的基本數據類型是長整型。但[Work Order].EmployeeID是文本數據類型。所以你得到「類型不匹配」錯誤,因爲查詢要求加入一個帶有文本字段的數字字段。

兩種方式來解決這個問題...

  1. 變化在一個表中的字段類型,以便這兩個領域都具有相同的數據類型,或至少兼容的數據類型
  2. 撒開的數據類型相匹配其他數據類型... 2例子:ON Employee.EmployeeID = CLng([Work Order].EmployeeID);或ON CStr(Employee.EmployeeID) = [Work Order].EmployeeID

第一種方法可能需要改變其它數據庫對象(查詢,窗體,報表),使他們不因場數據類型的變化打破。我不知道這會是多麼廣泛(也是痛苦)。

第二種方法可以工作,但Access查詢設計器將不再能夠在設計視圖中顯示聯接條件。如果您需要轉換的值與您需要轉換的值不兼容,則會存在更大的問題。例如,所有這些拋出錯誤:CLng(Null); CLng(""); CLng("foo")

+0

謝謝......現在我可以修復我的報告問題,但至少會顯示出來。大聲笑! :) 謝謝 –