[英]Subquery not working with Access linked tables
我正在嘗試構建一個從包含財務信息的數據庫中提取信息的工具,但是我遇到了這個問題。 以下查詢將為我提供一些我需要的數據,但是一旦在子查詢中添加,我就會收到錯誤消息
“ ODBC –調用失敗”。
如果我用靜態的"WHERE TRAN_NUMBER IN (0,1,2,3..)"
替換子查詢,它將返回期望值。 子查詢本身運行時返回期望值。
我正在使用MS Access和C#和OleDB庫來執行此操作
任何想法我做錯了什么?
SELECT NOMINAL_CODE, DETAILS, AMOUNT, TYPE
FROM AUDIT_JOURNAL
WHERE TRAN_NUMBER IN
(SELECT AUDIT_TRAIL_ID
FROM PROJECT_TRAN
WHERE AUDIT_TRAIL_ID > 0);
類型“ System.Data.OleDb.OleDbException”的第一次機會異常發生在System.Data.dll中
附加信息:ODBC--調用失敗
編輯:當通過ODBC鏈接到另一個數據庫時,子查詢看起來不起作用(原始數據庫是SageLine50數據庫)。 我已經靜態導入了表,它似乎可以工作。 有誰知道我如何在不靜態導入表的情況下完成這項工作?
代替使用IN子句和子查詢,您可以嘗試JOIN
SELECT
aj.NOMINAL_CODE,
aj.DETAILS,
aj.AMOUNT,
aj.TYPE
FROM
AUDIT_JOURNAL AS aj
INNER JOIN
PROJECT_TRAN AS pt
ON aj.TRAN_NUMBER = pt.AUDIT_TRAIL_ID
WHERE pt.AUDIT_TRAIL_ID > 0
回復:您對問題的編輯中的評論
通過ODBC鏈接到另一個數據庫時,子查詢看起來不起作用(原始數據庫是SageLine50數據庫)。
對於所有 ODBC鏈接表肯定不是這樣。 我在SQL Server 2008 R2中創建了表[AUDIT_JOURNAL]和[PROJECT_TRAN],在Access 2010中創建了鏈接表,並且原始查詢在Access中工作正常。 (我的也是。)您的問題幾乎可以肯定是由SageLine50 ODBC驅動程序缺陷引起的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.