Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Вниз

EXECUTE BLOCK   Найти похожие ветки 

 
PEAKTOP ©   (2006-08-25 16:59) [0]

Доброе время суток, ув. мастера.
Использую FireBird 2.0 rc4, IBX, QReport.
Захолось кросстаб при помощи динамической процедуры EXECUTE BLOCK, для этого:
1) Создаю запрос IBQuery по "развороту" кросс-таба
2) в цикле while формирую запрос кросс-таба.
3) В этом же цикле создаю кучу TQRDBLabel по разрезу кросс-таба
4) другому IBQuery передаю сформированный запрос.
IBQuery ругается на XSQLDA index out of range
Естественно, что IBQuery.ParamCheck := false;
Запрос, сформированный динамичсеки:


EXECUTE BLOCK RETURNS(
  TMC_GROUP_ID INTEGER
 ,TMC_GROUP_NAME VARCHAR(255)
 ,TMC_ID INTEGER
 ,TMC_NAME VARCHAR(255)
 ,TMC_QUANT_001  NUMERIC(15,3)
 ,TMC_TOTAL_001  NUMERIC(15,3)
 ,TMC_QUANT_002  NUMERIC(15,3)
 ,TMC_TOTAL_002  NUMERIC(15,3)
 ,TMC_QUANT_006  NUMERIC(15,3)
 ,TMC_TOTAL_006  NUMERIC(15,3)
 ,TMC_QUANT_007  NUMERIC(15,3)
 ,TMC_TOTAL_007  NUMERIC(15,3)
 ,TMC_QUANT_010  NUMERIC(15,3)
 ,TMC_TOTAL_010  NUMERIC(15,3)
 ,TMC_QUANT_011  NUMERIC(15,3)
 ,TMC_TOTAL_011  NUMERIC(15,3)
 ,TMC_QUANT_012  NUMERIC(15,3)
 ,TMC_TOTAL_012  NUMERIC(15,3)
 ,TMC_QUANT_013  NUMERIC(15,3)
 ,TMC_TOTAL_013  NUMERIC(15,3)
 ,TMC_QUANT_014  NUMERIC(15,3)
 ,TMC_TOTAL_014  NUMERIC(15,3)
 ,TMC_QUANT_015  NUMERIC(15,3)
 ,TMC_TOTAL_015  NUMERIC(15,3)
 ,TMC_QUANT_016  NUMERIC(15,3)
 ,TMC_TOTAL_016  NUMERIC(15,3)
)AS
BEGIN
 FOR  
   SELECT PR.TMC_GROUP_ID, PR.TMC_GROUP_NAME, PR.TMC_ID, PR.TMC_NAME  
   FROM   PROC$TMC_GROUPPED_LIST(60) PR  
   INTO   :TMC_GROUP_ID, :TMC_GROUP_NAME, :TMC_ID, :TMC_NAME  
 DO  
   BEGIN  
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "1", :TMC_ID) PROC  
   INTO   :TMC_QUANT_001, :TMC_TOTAL_001 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "2", :TMC_ID) PROC  
   INTO   :TMC_QUANT_002, :TMC_TOTAL_002 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "6", :TMC_ID) PROC  
   INTO   :TMC_QUANT_006, :TMC_TOTAL_006 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "7", :TMC_ID) PROC  
   INTO   :TMC_QUANT_007, :TMC_TOTAL_007 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "10", :TMC_ID) PROC  
   INTO   :TMC_QUANT_010, :TMC_TOTAL_010 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "11", :TMC_ID) PROC  
   INTO   :TMC_QUANT_011, :TMC_TOTAL_011 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "12", :TMC_ID) PROC  
   INTO   :TMC_QUANT_012, :TMC_TOTAL_012 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "13", :TMC_ID) PROC  
   INTO   :TMC_QUANT_013, :TMC_TOTAL_013 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "14", :TMC_ID) PROC  
   INTO   :TMC_QUANT_014, :TMC_TOTAL_014 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "15", :TMC_ID) PROC  
   INTO   :TMC_QUANT_015, :TMC_TOTAL_015 ;
   SELECT FIRST 1 PROC.TMC_QUANT, PROC.TMC_TOTAL
   FROM   PROC$RPT_SALES_TMC("01.08.2006", "31.08.2006", "16", :TMC_ID) PROC  
   INTO   :TMC_QUANT_016, :TMC_TOTAL_016 ;
   SUSPEND;
   END
END


 
PEAKTOP ©   (2006-08-25 17:00) [1]

Вопрос, как лечить?
Помоему, IBQuery воспринимает внутренние переменные как параметры запроса.


 
StriderMan ©   (2006-08-25 17:47) [2]

м.б. IBQuery  EXECUTE BLOCK не поддерживает. пытается его разбирать как обычный запрос.


 
unknown ©   (2006-08-25 18:13) [3]


> PEAKTOP ©   (25.08.06 17:00) [1]
> Помоему, IBQuery воспринимает


А если сделать Query.ParamCheck:=false ?


 
PEAKTOP ©   (2006-08-25 18:35) [4]


> А если сделать Query.ParamCheck:=false ?



.............
> Естественно, что IBQuery.ParamCheck := false;
...............


 
unknown ©   (2006-08-25 19:49) [5]


> PEAKTOP ©   (25.08.06 18:35) [4]

:( не заметил.
На всякий случай проверил - действительно. есть такй глюк.
Однако IBSQL скушал execute block запросто, так что возможно есть
способ оживить и Query. Надо будет посмотреть =)


 
PEAKTOP ©   (2006-08-26 10:04) [6]


> Однако IBSQL скушал execute block запросто, так что возможно есть
> способ оживить и Query. Надо будет посмотреть =)

Спасибо.
Щас вот как раз занимаюсь обработкой напильником TIBCustomDataSet.


 
PEAKTOP ©   (2006-08-26 10:24) [7]

Если кому интересно - нашел. Все от неумения читать внимательно документацию. Там сказано было, что анализатор параметров запроса в случае использования конструкции EXECUTE BLOCK должен разбирать параметры только между EXECUTE BLOCK и RETURNS, и вообще не лезть в BEGIN ... END. Т.е. на библиотеку IBX можно забить сразу, не умеет она этого.
Или обтачивать напильником TIBCustomDataSet ...


 
atruhin ©   (2006-08-26 17:08) [8]

FIBPlus нормально с этим работают. А у IBQuery нет поддержки Firebird


 
Fay ©   (2006-08-26 17:18) [9]

2 PEAKTOP ©   (26.08.06 10:04) [6]
> Щас вот как раз занимаюсь обработкой напильником TIBCustomDataSet
Привет!
Не дешевле купить нормальные компоненты?


 
PEAKTOP ©   (2006-08-28 13:00) [10]


> Привет!
> Не дешевле купить нормальные компоненты?

1) Я сторонник OpenSource.
2) Я не использую компонент, если у меня нет исходника.
3) У меня очень туго с нормами морали и этикой. На свой первый компьютер заработал пиратством во время первой украинской лицензионной кампании по борьбе с пиратскими дисками. Платить за ПО я не собираюсь из приципа.
4) На данный момент обладаю исходниками ВСЕГО Delphi 7 VCL, включая TeeChart, QReport, IBX, IBO, FastReport, Rave и т.д. 50% из них были скачаны у самих же авторов благодаря множественным уязвимостям их сайтов, где на скачивание полной версии требовалась авторизация. Если ленивые админы не скачали последнюю пропатченную версию PHP или заплаты на IIS, то это их проблемы.
5) Cчитаю свои долгом поделиться ими с товарищами по оружию. На мнение авторов по этому поводу мне наплевать. То же касается FIBPlus, хотя я лично их не пользую, оттого и не имею исходников.
6) В Украине ПО лицензируется как литератуное произведение, т.е. как текст исходников. Если текст отличается хоть на одну букву, то это уже другое ПО. Я чистосердечно внес изменения в виде коментария на одну букву в каждый модуль.
7) Более того, с такими исходниками я получил авторское свидельство в Укранине на свое ПО.


 
StriderMan ©   (2006-08-28 13:23) [11]


> PEAKTOP ©   (28.08.06 13:00) [10]

жестко

а исходников Vista у тебя случаем не завалялось?


 
Sergey13 ©   (2006-08-28 13:28) [12]

> [10] PEAKTOP ©   (28.08.06 13:00)

Ты и свои проги задаром отдаешь?


 
PEAKTOP ©   (2006-08-28 17:23) [13]


> StriderMan ©   (28.08.06 13:23) [11]
> > PEAKTOP ©   (28.08.06 13:00) [10]
> жестко
> а исходников Vista у тебя случаем не завалялось?

Надо в инете поискать ... :))) Найду - непременно поделюсь


> > [10] PEAKTOP ©   (28.08.06 13:00)
> Ты и свои проги задаром отдаешь?


Смотря что считать задаром.
Если работоспособный на 100 % исполняемый файл - то да. Абсолютно бесплатно.Базовая конфигурация, в принципе, готовая к использованию - тоже бесплатно.
Денег стоит внедрение - т.е. объяснение философии ПО, обучение персонала Заказчика, "заточка" выходных документов под Заказчика, доработка некоторого функционала непосредственно под специфику Заказчика и.т.д.
Как показала практика - такои подход оказался финансово эффективнее.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.045 c
2-1159784860
TrainerOfDolphins
2006-10-02 14:27
2006.10.22
Указатель мыши над контролом...


15-1159470172
EkZot
2006-09-28 23:02
2006.10.22
Как прервать цикл for


2-1160388184
yel
2006-10-09 14:03
2006.10.22
Закладки


15-1159036932
AnCo
2006-09-23 22:42
2006.10.22
TMS AdvStringGrid


15-1159362327
Konstantin555
2006-09-27 17:05
2006.10.22
Проблема с записью 2-х сторонних DVD-дисков





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский