0

Dbf ファイルをクエリしていますが、C# コンソール アプリケーションで 2 つのクエリを完全に結合したいと考えています。しかし、Microsoft.jet.oledb.4.0 では Full Join がサポートされていないようです。クエリを実行すると、次のエラーが表示されます。

IErrorInfo.GetDescription が E_FAIL(0x80004005) で失敗しました。

テーブルの詳細と目的のクエリ動作は次のとおりです。

購入および販売トランザクションは、テーブル Mtrans.DBF に格納されます。また、フィールド It_type は、購入トランザクションと販売トランザクションを区別するために使用されます。商品の販売数量と購入数量の両方を 1 行にまとめたいと考えています。

しかし、完全結合の代わりに左結合または内部結合または右結合を使用すると、クエリはエラーなしでスムーズに実行されます。これで私を助けてください。このエラーの回避策がある場合は、ここの専門家にいくつかのライトを点灯するように依頼します.

ここに私のクエリ式があります

OleDbDataAdapter da = new OleDbDataAdapter();

da = new OleDbDataAdapter("select purtran.it_name,purtran.it_code,
purtran.purcqnty,purtran.puruqnty,saltran.cqnty,
saltran.uqnty,saltran.avalue from 
(select first(it_name) as    
it_name,mtrans.it_code,sum(cqnty) as purcqnty,sum(uqnty)
as puruqnty 
from mtrans 
where date >=#" + fdt + "# and 
date <=#" + tdt + "# and  (voucher is null  or len(voucher) =0)
 and it_type = '01' 
group by it_code) as purtran
full join
(select it_code,sum(cqnty) as cqnty,
sum(uqnty) as uqnty,sum(avalue) as avalue,first(tp1) as tp1 
from mtrans 
where date >=#" + fdt + "# and date <=#" + tdt + "# 
and (voucher is null or len(voucher) = 0) and 
it_type = '02' group by it_code)
saltran  
on saltran.it_code = purtran.it_code ", con);
da.Fill(dt);
4

1 に答える 1

1

いいえ。Access は FULL JOIN をサポートしていません。LEFT JOIN を実行し、UNION ALL を使用して結果を RIGHT JOIN と組み合わせる必要があります。このチュートリアルを参照してください。

于 2014-06-08T15:55:39.987 に答える