2014-06-08 11 views
0

Dbf 파일을 쿼리 할 때 C# 콘솔 응용 프로그램에서 두 쿼리를 완전히 조인하려고합니다. 그러나 Full Join은 Microsoft.jet.oledb.4.0에서 지원되지 않는 것 같습니다. 쿼리를 실행하면 다음 오류가 발생합니다.전체 외부 조인이 Microsoft.Jet.OLEDB.4.0에서 지원되지 않습니까?

IErrorInfo.GetDescription이 E_FAIL (0x80004005)과 함께 실패했습니다.

다음은 표 세부 정보 및 원하는 쿼리 동작입니다.

구매 및 판매 트랜잭션은 테이블 Mtrans.DBF에 저장됩니다. 필드 It_type은 구매 트랜잭션과 판매 트랜잭션을 구별하는 데 사용됩니다. 항목의 판매 수량과 구매 수량을 한 행에 결합하고자합니다.

그러나 전체 조인 대신 왼쪽 또는 안쪽 또는 오른쪽 조인을 사용하면 쿼리가 원활하게 실행됩니다. 제발 도와주세요. 이 오류에 대한 해결 방법이 있으면 전문가에게 요청하여 조명을 켜십시오.

은 여기 내 쿼리 EXpresision

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); 

답변

1

번호 액세스 가입 FULL 지원하지 않는 것입니다. LEFT JOIN을 수행하고 UNION ALL을 사용하여 결과를 올바른 조인과 결합해야합니다. 이 tutorial을 참조하십시오.

+0

고마워요 론 토 네베! 그것은 너무 많은 도움이되었습니다 !! 귀하의 "연합 전체"제안은 잘 해결되었습니다! –

+0

당신은 매우 환영합니다! –