Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TRxQuery [D6, IB6.x]


Jaxtor ©   (2003-06-26 10:45:00) 

Запрос выполняется(при установке свойства Active=true во время
Design mode):

select cast (Stock as Varchar(63)) as VENSTGR,
cast(NULL AS Integer) as PRODUCTID,
cast(NULL AS Integer) as VENSTGRID,
cast(NULL AS Varchar(63)) as PN,
cast(NULL AS Varchar(255)) as PRODUCT,
cast(NULL AS Varchar(63)) as COMMENT,
si.quantity as STOCK,
cast(NULL AS Integer) as FORSALE,
cast(NULL AS Integer) as TRANZIT1,
cast(NULL AS Integer) as TRANZIT2,
cast(NULL AS Integer) as TRANZIT3,
cast(NULL AS Integer) as TRANZIT4,
cast(NULL AS Double Precision) as PRICE,
cast(NULL AS Double Precision) as OLDPRICE,
cast(NULL AS TimeStamp) as PRICEUPDATEDATE,
cast(NULL AS TimeStamp) as DATA
from Stock s,stockitem si where (s.stockid=(select stockid from stockitem where saveprod_atrid=
(select Saveprod_atrid from savepr_atr where SaveProdID=
(select SaveProdID from saveprod where PN like "%3c%"))))
and (si.stockitemid=(select stockitemid from stockitem where saveprod_atrid=
(select Saveprod_atrid from savepr_atr where SaveProdID=
(select SaveProdID from saveprod where PN like "%3c%"))))
union all
select gr.VenStGr, st.productid, st.venstgrid, st.PN,st.Product,st.comment, st.stock, st.forsale,st.tranzit1,st.tranzit2,st.tranzit3,st.tranzit4,st.price,st.oldprice,st.priceupdatedate,gr.data from VENSTOCK st,VENSTGR gr
where st.VenStGrId=gr.VenStGrId
%cond
order by 7 desc,
9 desc,
10 desc,
11 desc,
12 desc


Запрос невыполняется(при установке свойства Active=true во время Design mode):

select cast (Stock as Varchar(63)) as VENSTGR,
cast(NULL AS Integer) as PRODUCTID,
cast(NULL AS Integer) as VENSTGRID,
cast(NULL AS Varchar(63)) as PN,
cast(NULL AS Varchar(255)) as PRODUCT,
cast(NULL AS Varchar(63)) as COMMENT,
si.quantity as STOCK,
cast(NULL AS Integer) as FORSALE,
cast(NULL AS Integer) as TRANZIT1,
cast(NULL AS Integer) as TRANZIT2,
cast(NULL AS Integer) as TRANZIT3,
cast(NULL AS Integer) as TRANZIT4,
cast(NULL AS Double Precision) as PRICE,
cast(NULL AS Double Precision) as OLDPRICE,
cast(NULL AS TimeStamp) as PRICEUPDATEDATE,
cast(NULL AS TimeStamp) as DATA
from Stock s,stockitem si where (s.stockid=(select stockid from stockitem where saveprod_atrid=
(select Saveprod_atrid from savepr_atr where SaveProdID=
(select SaveProdID from saveprod %newcond))))
and (si.stockitemid=(select stockitemid from stockitem where saveprod_atrid=
(select Saveprod_atrid from savepr_atr where SaveProdID=
(select SaveProdID from saveprod %newcond))))
union all
select gr.VenStGr, st.productid, st.venstgrid, st.PN,st.Product,st.comment, st.stock, st.forsale,st.tranzit1,st.tranzit2,st.tranzit3,st.tranzit4,st.price,st.oldprice,st.priceupdatedate,gr.data from VENSTOCK st,VENSTGR gr
where st.VenStGrId=gr.VenStGrId
%cond
order by 7 desc,
9 desc,
10 desc,
11 desc,
12 desc


Ошибка: multiple rows in singleton select. Почему такое происходит?


Jaxtor   (2003-06-26 13:50:00) [1]

>NDeu © (26.06.03 13:01)
Ладно


NDeu   (2003-06-26 13:01:00) [2]

Вместо

> ...id =(select ...

Пиши ...id in(select ...


Jaxtor   (2003-06-26 11:12:00) [3]

Ладно, спасибо!
Дали пищу для размышлений.


Johnmen   (2003-06-26 11:10:00) [4]

Jaxtor © (26.06.03 11:06)

Потому, что макрос cond="", и текст запроса верен.

>Zacho © (26.06.03 11:06)

Насчет монстроидальности - это верно...:)


Zacho   (2003-06-26 11:09:00) [5]


> Jaxtor © (26.06.03 11:06)

Потому что select SaveProdID from saveprod where PN like "%3c%" возвращает одну запись, как и надо (вероятно случайно, пересмотри логику работы запроса, если он вернет больше одной записи, то получишь ту же ошибку)
А если where отсутствует - получаешь набор записей, и в результате - ошибку.


Jaxtor   (2003-06-26 11:06:00) [6]

Почему же тогда этот запрос выполняется в Design time:?

select cast (Stock as Varchar(63)) as VENSTGR,
cast(NULL AS Integer) as PRODUCTID,
cast(NULL AS Integer) as VENSTGRID,
cast(NULL AS Varchar(63)) as PN,
cast(NULL AS Varchar(255)) as PRODUCT,
cast(NULL AS Varchar(63)) as COMMENT,
si.quantity as STOCK,
cast(NULL AS Integer) as FORSALE,
cast(NULL AS Integer) as TRANZIT1,
cast(NULL AS Integer) as TRANZIT2,
cast(NULL AS Integer) as TRANZIT3,
cast(NULL AS Integer) as TRANZIT4,
cast(NULL AS Double Precision) as PRICE,
cast(NULL AS Double Precision) as OLDPRICE,
cast(NULL AS TimeStamp) as PRICEUPDATEDATE,
cast(NULL AS TimeStamp) as DATA
from Stock s,stockitem si where (s.stockid=(select stockid from stockitem where saveprod_atrid=
(select Saveprod_atrid from savepr_atr where SaveProdID=
(select SaveProdID from saveprod where PN like "%3c%"))))
and (si.stockitemid=(select stockitemid from stockitem where saveprod_atrid=
(select Saveprod_atrid from savepr_atr where SaveProdID=
(select SaveProdID from saveprod where PN like "%3c%" ))))
union all
select gr.VenStGr, st.productid, st.venstgrid, st.PN,st.Product,st.comment, st.stock, st.forsale,st.tranzit1,st.tranzit2,st.tranzit3,st.tranzit4,st.price,st.oldprice,st.priceupdatedate,gr.data from VENSTOCK st,VENSTGR gr
where st.VenStGrId=gr.VenStGrId

%cond

order by 7 desc,
9 desc,
10 desc,
11 desc,
12 desc


Zacho   (2003-06-26 11:06:00) [7]


> Jaxtor © (26.06.03 10:59)

Не прав. Какая разница, run time или design time ? Тебе надо выполнить запрос, и синтаксис запроса должен быть верный.
P.S. Как-то этот запрос слишком монстроидально выглядит, уверен что вместьо многочисленных вложенных селектов можно сделать join, и работать это будет быстрее.


Zacho   (2003-06-26 11:03:00) [8]


> Jaxtor © (26.06.03 10:54)

Нафига ? Но если сильно надо, то тогда и макрос надо задавать тоже в design time, иначе запрос получается неправильный.


Jaxtor   (2003-06-26 10:59:00) [9]

>Johnmen © (26.06.03 10:56)
А я думаю, что для Design time не важно, как задается %newcond.
Или я не прав?


Johnmen   (2003-06-26 10:56:00) [10]

>Jaxtor © (26.06.03 10:50)

Как задается ?


Jaxtor   (2003-06-26 10:54:00) [11]

>Zacho © (26.06.03 10:53)
Active должно быть равным true в design time.


Zacho   (2003-06-26 10:53:00) [12]


> Jaxtor © (26.06.03 10:50)

Ну и что тогда должен вернуть такой запрос в design time ?


Jaxtor   (2003-06-26 10:50:00) [13]

>Zacho У меня во время выполнения программы задается условие newcond! А не во время проектирования!!


Zacho   (2003-06-26 10:48:00) [14]

Потому что в макросе %newcond у тебя находится условие, при котором select SaveProdID from saveprod %newcond возвращает несколько записей. А должен только одну.


Наверх

Титульная страница Поиск, карта сайта Написать письмо