Полное внешнее соединение не поддерживается в Microsoft.Jet.OLEDB.4.0?

Я запрашиваю файл Dbf и хочу полностью объединить два запроса в консольном приложении C#. Но похоже, что полное соединение не поддерживается в 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 JOIN. Вам нужно сделать левое соединение и объединить результаты, используя UNION ALL с правым соединением. Смотрите этот урок.

Другие вопросы по тегам