|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.02.2010, 14:54 | #1 |
Новичок
Джуниор
Регистрация: 20.02.2010
Сообщений: 1
|
ADOQuery
Имеется следующая проблема:
Есть SQL запрос declare @kab integer, @vidplat integer, @vidobsl integer,@date2 date, @adm integer set @kab=2 set @date2='16.02.2010' set @adm=5 SELECT AZ_VidPlat.Name AS VidPlat, AZ_VidObsl.Name AS VidObsl,COUNT(*) as Kol, SUM(AZ_Price.Price) AS Sum FROM AZ_Price INNER JOIN AZ_Svod INNER JOIN AZ_Clienti ON AZ_Svod.IdCli = AZ_Clienti.IdCli ON AZ_Price.IdVidObsl = AZ_Svod.IdVidObsl AND AZ_Price.IdVidPlat = AZ_Svod.IdVidPlat INNER JOIN AZ_VidObsl ON AZ_Price.IdVidObsl = AZ_VidObsl.IdVidObsl INNER JOIN AZ_VidPlat ON AZ_Price.IdVidPlat = AZ_VidPlat.IdVidPlat WHERE (AZ_Svod.s2 = 1) and(CONVERT(nchar(10), AZ_Clienti.Date, 120) = @date2) and (AZ_Svod.A = @adm) GROUP BY AZ_Svod.IdKab2, AZ_VidPlat.Name, AZ_VidObsl.Name HAVING (AZ_Svod.IdKab2 = @kab) ORDER BY VidPlat, VidObsl DESC ------------------------------------------------------------------------ добавляю его ADOQuery ADOQuerySQL.SQL.Clear; ADOQuerySQL.SQL.Add('declare @kab integer,@date2 date, @adm integer'); ADOQuerySQL.SQL.Add('set @kab=2'); ADOQuerySQL.SQL.Add('set @date2=''16.10.2010''); ADOQuerySQL.SQL.Add('set @adm=5'); ADOQuerySQL.SQL.Add('SELECT AZ_VidPlat.Name AS VidPlat, AZ_VidObsl.Name AS VidObsl,COUNT(*) as Kol, SUM(AZ_Price.Price) AS Sum'); ADOQuerySQL.SQL.Add('FROM AZ_Price INNER JOIN'); ADOQuerySQL.SQL.Add('AZ_Svod INNER JOIN'); ADOQuerySQL.SQL.Add('AZ_Clienti ON AZ_Svod.IdCli = AZ_Clienti.IdCli ON AZ_Price.IdVidObsl = AZ_Svod.IdVidObsl AND AZ_Price.IdVidPlat = AZ_Svod.IdVidPlat INNER JOIN'); ADOQuerySQL.SQL.Add('AZ_VidObsl ON AZ_Price.IdVidObsl = AZ_VidObsl.IdVidObsl INNER JOIN'); ADOQuerySQL.SQL.Add('AZ_VidPlat ON AZ_Price.IdVidPlat = AZ_VidPlat.IdVidPlat'); ADOQuerySQL.SQL.Add('WHERE (AZ_Svod.s2 = 1) and(CONVERT(nchar(10), AZ_Clienti.Date, 120) = @date2) and (AZ_Svod.A = @adm)'); ADOQuerySQL.SQL.Add('GROUP BY AZ_Svod.IdKab2, AZ_VidPlat.Name, AZ_VidObsl.Name'); ADOQuerySQL.SQL.Add('HAVING (AZ_Svod.IdKab2 = @kab)'); ADOQuerySQL.SQL.Add('ORDER BY VidPlat, VidObsl DESC'); ADOQuerySQL.ExecSQL(); ADOQuerySQL.Active:=true; так вот после компиляции этот запрос мне ничего не выдает, хотя при тех же входных параметрах в Management Studio запрос отрабатывает на ура. Интересен и тот момент что если в компоненте ADOQuery в параметр SQL дабовить этот запрос просто вставкой, то запрос отрабатывает, а через SQL.Add() нет, может кто подскажет как заставить работать через SQL.Add()??? |
20.02.2010, 15:07 | #2 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
Код:
|
24.02.2010, 07:56 | #3 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
уже кучу раз обсуждалось!!!!
execSQL-ипользуется когда запрос не должен возращать записи (update, delete,insert) active:=true, или open-используется когда запрос должен возвращать записи(select)
Единственное, что ограничивает полет мысли программиста-компилятор
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
AdoQuery | salima | Помощь студентам | 17 | 09.12.2009 21:01 |
ADOQuery | Sanakan | Помощь студентам | 0 | 10.11.2009 23:31 |
AdoQuery | Stanislav | БД в Delphi | 34 | 26.06.2009 22:09 |
ADOQuery | antoni | БД в Delphi | 3 | 19.06.2009 07:49 |
ADOQuery | Roof | БД в Delphi | 2 | 12.07.2008 18:08 |