Access からプルしている C# TableAdapter で奇妙な動作が見られます。Access で結果を返し、TableAdapter クエリ ビルダーの [クエリの実行] ウィンドウで結果を返すクエリがありますが、コードで失敗し、[データのプレビュー] ダイアログを使用すると失敗します。
問題は DateTime パラメータにあるようです。奇妙なのは、ネストされた select ステートメント内に配置された場合にのみ失敗することです。クエリ全体に適用すると正常に機能します。残念ながら、ネストされた部分で必要ですが、常に「基準式のデータ型の不一致」が発生します。他のパラメーターを削除し、入れ子になったクエリに data パラメーターを残した場合も、クエリは機能します。
作品:
SELECT Employee.FirstName, TimeCard.ID
FROM (((Employee INNER JOIN
MasterFilmUnit ON Employee.ID = MasterFilmUnit.ID) INNER JOIN
MasterDepartment ON Employee.ID = MasterDepartment.ID) LEFT OUTER JOIN
(SELECT ID, WorkDate, EmployeeID
FROM DailyTimeCard
WHERE (WorkDate = ?)) TimeCard ON TimeCard.EmployeeID = Employee.ID)
作品:
SELECT Employee.FirstName, TimeCard.ID
FROM (((Employee INNER JOIN
MasterFilmUnit ON Employee.ID = MasterFilmUnit.ID) INNER JOIN
MasterDepartment ON Employee.ID = MasterDepartment.ID) LEFT OUTER JOIN
(SELECT ID, WorkDate, EmployeeID
FROM DailyTimeCard
) TimeCard ON TimeCard.EmployeeID = Employee.ID)
WHERE Employee.ProjectID=? AND WorkDate = ?
動作しません:
SELECT Employee.FirstName, TimeCard.ID
FROM (((Employee INNER JOIN
MasterFilmUnit ON Employee.ID = MasterFilmUnit.ID) INNER JOIN
MasterDepartment ON Employee.ID = MasterDepartment.ID) LEFT OUTER JOIN
(SELECT ID, WorkDate, EmployeeID
FROM DailyTimeCard
WHERE WorkDate = ? ) TimeCard ON TimeCard.EmployeeID = Employee.ID)
WHERE Employee.ProjectID=?
編集
クエリの従業員部分をネストすることで、目的の出力を取得できたため、クエリ全体に where ステートメントを適用する必要がありません。私は今稼働していますが、それでも、オリジナルが機能しない理由がわかりません。
作品:
SELECT Employee.FirstName, TimeCard.ID
FROM ((((SELECT Employee.*
FROM Employee Employee_1
WHERE (ProjectID = ?)) Employee Left OUTER JOIN
MasterFilmUnit ON Employee.ID = MasterFilmUnit.ID) LEFT OUTER JOIN
MasterDepartment ON Employee.ID = MasterDepartment.ID) LEFT OUTER JOIN
(SELECT DailyTimeCard.*
FROM DailyTimeCard
WHERE (WorkDate = ?)) TimeCard ON TimeCard.EmployeeID = Employee.ID)
どんな助けでも大歓迎です。私は困惑しています。