![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
RIGHT JOIN в ADO
SelfDestructor © (2002-04-24 21:13:00)Никак не могу ничего понять! Есть такой запрос:
SELECT
SB.NUM, SB.PROGRAM, SB.KIND, SB.ENRICHMENT,
BN.BATCHNAME,
MDC.PHYS, MDC.CHEM, MDC.PURE,
SB.LIG_MASS_UNIT, SB.LIG_MASS,
RKE.CODE,
BE.UNIT, BE.MASS,
RKI.CODE,
BI.UNIT, BI.MASS
FROM
MAT_DEF_CODE AS MDC RIGHT JOIN (
BATCHNAME AS BN RIGHT JOIN (((
REF_KIND_IS AS RKI RIGHT JOIN
BATCH_IS AS BI ON RKI.ID=BI.IS_ID) RIGHT JOIN (
REF_KIND_EL AS RKE RIGHT JOIN
BATCH_EL AS BE ON RKE.ID=BE.EL_ID) ON BE.ID=BI.EL_ID) RIGHT JOIN
SIL_BATCH AS SB ON (BE.BATCH_ID=SB.ID AND BE.REPORT_TYPE=:pRepType)) ON BN.ID=SB.BATCHNAME_ID) ON MDC.ID=SB.MDC_ID
WHERE SB.REP_ID=:pRepID
ORDER BY
SB.NUM, SB.KIND, RKE.CODE;
В нем содержатся два параметра:pRepTypeи:pRepID. В Access2000 этот запрос работает правильно. Запрос не возвращает ни одной записи через TADOQuery. Если значение одного(любого из них) из параметров прописать в код запроса, то запрос работает правильно. Раньше этот запрос выбирал данные, там не было такой вещи какON (BE.BATCH_ID=SB.ID AND BE.REPORT_TYPE=:pRepType)(было простоON BE.BATCH_ID=SB.ID), но он возвращал не то, что мне надо. Может быть ADO не понимает таких сиквельных вещей? Правда он же работает, когда я вместо параметра число проставляю.
Спецы, помогите! Голову на этом сломал.
SelfDestructor (2002-04-25 11:03:00) [1]Оба параметра имеют тип ftInteger(хотя я честно говоря не совсем понимаю, хачем он нужен, по умолчанию подставляется ftFixedChar и с ним прекрасно работают другие запросы, даже когда поля числовые)
оба поля в Access2000 имеют тип "Числовой" Длинное целое
Johnmen (2002-04-25 10:29:00) [2]Некорректно описаны параметры - их тип и т.д.
SelfDestructor (2002-04-25 10:25:00) [3]Коротко и ясно не получается =))
Попробую: есть запрос с двумя параметрами, программно подставляем одному параметру значение 1, другому 252(не важно какое) - не выбирает данные.
Убираем первый параметр, вместо него в текст запроса вписываем 1 - выбирает данные.
Оставляем первый, убираем второй, вместо него вписываем 252 - выбирает данные.
Разве такое может быть в принципе? Где здесь может быть упущение?
Johnmen (2002-04-25 09:23:00) [4]И дальше будешь ломать, пока не научишься ясно и короткозадавать вопросы !