Как написать обращение к процедуре (vb)?
Здравствуйте все
Немного предисловия:
Сам пишу на Visual Basic 6, базу использую Access. Отчеты всегда писал на Crystal Report.
Решил поискать альтернативу Crystal Report и случайно наткнулся на FRS.
Приятно удивлен как все в нем здорово сделано, да и цена адекватная.
Прочитал мануалы - теперь могу написать все что нужно, однако остался один
вопрос, с которым сам так и не смог разобраться - это вызов хранимых процедур из скрипта в отчете.
В примерах и мануале подробно расписано как сделать параметрический TfrxADOQuery - c ним
вопросов нет - все ясно.
Вижу в классах есть TAdoStoredProc - получается такая возможность теоретически есть, но
как написать это практически на BasicScript - никак не могу разобраться
Можно конечно переписать процедуры в базе в обычные вьюхи и дальше реализовать все
через стандартный TfrxADOQuery, но так не интересно - хочется помучаться для начала
Может у кого-нибудь может выложить здесь какой-нибудь маленький примерчик как это делается?
Буду очень признателен.
Немного предисловия:
Сам пишу на Visual Basic 6, базу использую Access. Отчеты всегда писал на Crystal Report.
Решил поискать альтернативу Crystal Report и случайно наткнулся на FRS.
Приятно удивлен как все в нем здорово сделано, да и цена адекватная.
Прочитал мануалы - теперь могу написать все что нужно, однако остался один
вопрос, с которым сам так и не смог разобраться - это вызов хранимых процедур из скрипта в отчете.
В примерах и мануале подробно расписано как сделать параметрический TfrxADOQuery - c ним
вопросов нет - все ясно.
Вижу в классах есть TAdoStoredProc - получается такая возможность теоретически есть, но
как написать это практически на BasicScript - никак не могу разобраться
Можно конечно переписать процедуры в базе в обычные вьюхи и дальше реализовать все
через стандартный TfrxADOQuery, но так не интересно - хочется помучаться для начала
Может у кого-нибудь может выложить здесь какой-нибудь маленький примерчик как это делается?
Буду очень признателен.
Комментарии
Проверил - на выходе открытый рекордсет с моими данными, вроде полдела сделано.
Подскажите плиз - как его теперь "подсунуть" отчету в бенд как источник данных?
да, я так и пытался сделать, но у бенда DataSet есть, а у открытого мною рекордсета я так и не смог понять как его вызвать. Прорыл всю иерархию в классах, но ни в одном предке класса TAdoStoredProc я не нашел Dataset
Как к нему обратиться чтобы "закинуть" в датасет бенда? Я так понимаю, что у меня не хватает одной строки в коде - но никак не пойму как её сформулировать
Подскажите пожалуйста, если не сложно...
Если не сработает, тогда нужно как-то преобразовать рекордсет в датасет.
конечно спасибо за ответ, но собственно, что надо сделать - понятно
вопрос как раз в том - как это сделать?
эх...
Допустим в отчете есть бенд MasterData с именем MasterData1.
Насколько я понял, вам нужно в качестве источника данных для него, использовать результат вызова хранимой процедуры.
Допустим имя хранимой процедуры proc1.
Тогда можно создать (в дизайнере или из скрипта) ADOQuery, например с именем ADOQuery1.
И из ADOQuery1 вызвать хранимую процедуру, запрос будет выглядеть так: exec proc1.
ADOQuery1 можно использовать в качестве источника данных для бенда MasterData1.
Из скрипта это будет выглядеть так:
извиняюсь за тупость, а как передать при таком варианте параметр для этой хранимки?
ADOQuery1 это пустой ADOQuery1, привязанный в конструкторе к MasterData:
теперь все заработало
а в данном случае param1 - это просто значение этого параметра или нужно как то по особому это написать?
попробывал просто написать значение - выдает ошибку "Несоответствие типов данных в выражении условиям отбора"
sSql получается вида 'exec qOpersN1_Full 40260'
может синтаксис при передаче параметра должен быть каким то особым?
например, кроме значения параметра указать его название?
или дату надо передать в каком то особом формате? (хотя в том, что написал я работает с приведением к Int, но кто его знает...)
хочется доразобраться с этим вариантом...
Создаем процедуру: Теперь вызываем ее: Параметр в процедуре @cn, и передаваемый процедуре при ее вызове параметр param1 должны быть того же типа что и поле custno в базе.