Форум: "Базы";
Текущий архив: 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.046 c