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

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

Параметризованные подзапросы ;в ;ADOquery [D6, MSSQL]


Picco ©   (2002-11-11 10:48:00) 

Извините за беспокойство вопрос ADOQuery и параметризованным подзапросам .
Select distinct Towar_code from FACT_TABLE where towar_code in (select towar_code from SPR_TOW where company_code=:company_code) and dat>:dat

В дизайн -тайм работают, а в реал-тайм выскакивает что не установлены свойства параметров для параметризованных подзапросов.Программая установка свойств (типов) параметров не помогает.Установка свойств Prepared и paramcheck также не помогает.

Поможите пожалуйста


sniknik   (2002-11-12 11:19:00) [1]

для каждого потока свое, иначе глюки.


Picco   (2002-11-12 11:17:00) [2]

Верно в том случае если работаешь с приложением а если
нужно запустить несколько потоков в данном конкретном случае для расчета заказов поставщикам (их запускают несколько по разным компаниям сразу) лучше не работать через общее соединение


KSergey   (2002-11-12 10:28:00) [3]

В дополнение к > sniknik © (11.11.02 13:29)

Напрасно убрана строка Paramters.Parse(). Раз запрос динамический и с параметрами - пренепременнейше нужна.
Хотя я бы записал ее так (а то фиг его знает как оно там по строкам разнесено).

...
SQL.add(..);
Parameters.ParseSQL( SQL.Text,True);
...

А про парядок занадия ConnectionString да и про само отсутствие необходимости этого - это, пожалуй, верно замечено.


sniknik   (2002-11-11 13:29:00) [4]

ParamCheck:=true; //он у тебя меняется? установи в десигн тайм раз и навсегда
ConnectionString:=CString; //по моему лутше пользоватся свойством Connection вместо этого
ADOConnection.ConnectionString:=CString; //тоже один раз гденибудь при инициализации
и
SQLwork.Connection:= ADOConnection;
все конекты лутше заранее, можно и после но не после присвоения запроса а до.

попробуй так может и заработает
ADOConnection.Close;
ADOConnection.ConnectionString:=CString;
with SQLwork do begin
//if active then active:=false; в этом случае лишнее закрытие коннекта закроет все привязанные обьекты
Connection:= ADOConnection; //убери если не меняется
ParamCheck:=true; //убери если не меняется
SQL.Clear;
SQL.add("Select distinct Towar_code from FACT_TABLE where towar_code in (select towar_code from SPR_TOW where company_code=:company_code) and dat>:dat
");
Parameters[0].DataType:= ftInteger; //в общем тоже лишнее но по мне лутше явно указывать
Parameters[0].value:=vendor_id;
Parameters[1].DataType:= ftDateTime; //up
Parameters[1].value:=now-90;
active:=true;
end;


Picco   (2002-11-11 12:12:00) [5]

with SQLwork do
begin
ParamCheck:=true;
if active then active:=false;
SQL.Clear;
SQL.add("Select distinct Towar_code from FACT_TABLE where towar_code in (select towar_code from SPR_TOW where company_code=:company_code) and dat>:dat
");
Parameters.ParseSQL(SQL[0],True);
Parameters[0].value:=vendor_id;
Parameters[1].value:=now-90;
Prepared:=true;
ConnectionString:=CString;
active:=true;
First;
end;


sniknik   (2002-11-11 11:16:00) [6]

ЮЮ © (11.11.02 11:01)
у меня все с точностью до наоборот. под 95 вообще не пробовал, 98,2000,NT нормально в XP были проблемы (уже не помню какие, может и не базой связанные)

Picco (11.11.02 10:48)
покажите как вызываете (код что до .Execute/Open)


ЮЮ   (2002-11-11 11:01:00) [7]

Или, если работаешь под Win2000 перейти на ODBC provider. У меня так сказать, native provider под Win95 обрабатывал мудрёные запросы, а под 2000 ругался


KSergey   (2002-11-11 10:56:00) [8]

А значения-то параметрам присваиваете в run-time?
Ну и еще при разработке попробуйте явно прописать типы параметров.
А запрос в таком виде уст. на этапе разработки или присваивается при выполнении программы?


stone   (2002-11-11 10:54:00) [9]

Попробуй избавиться от подзапроса:
Select distinct Towar_code from FACT_TABLE f
inner join SPR_TOW s on f.towar_code = s.towar_code
where s.company_code=:company_code and f.dat>:dat



Наверх

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