Вызов процедуры в ard-отчете

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Вызов процедуры в ard-отчете

Сообщение m0p3e »

Итак это все-таки функция, хотя в первом сообщении названа процедурой.
Нужно ли возвращать результат выполнения? Когда экспериментировал с функциями - был какой-то глюк. Подробностей уже не помню за давностью. Всегда использую процедуры.
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Руслан »

m0p3e писал(а):Итак это все-таки функция, хотя в первом сообщении названа процедурой.
Нужно ли возвращать результат выполнения? Когда экспериментировал с функциями - был какой-то глюк. Подробностей уже не помню за давностью. Всегда использую процедуры.
Это да, функция и результат выполнения возвращать не надо.
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Руслан »

Подскажите как создать именно процедуру, синтаксис
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Руслан »

Создал процедуру и ураааааа!!!!!!!!! Заработало!!!!!!!! Спасибо, m0p3e!
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Руслан »

А как передать в процедуру несколько параметров? Пробовал так:

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '), ( ' + d1 + ', ' + d2 + '))');
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Den »

Руслан писал(а):А как передать в процедуру несколько параметров? Пробовал так:

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '), ( ' + d1 + ', ' + d2 + '))');
А почему d1 и d2 в скобках ?
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Руслан »

А почему d1 и d2 в скобках ?
Так я и спрашиваю как правильно... Пробовал еще так:

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ('KatsoprNrec', 'd1', 'd2')');
Но ругается на скобку...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Вызов процедуры в ard-отчете

Сообщение edward_K »

усе зависит. Если число то никаких скобок не нужно. Если текст, то в одинарных кавычках. Чтобы скушал компилятор либо добавляете +chr(39)+ либо пишите две одинарные кавычки подряд ''. Сделайте переменную, присвойте ей значение , выведите мессагой - если кавычки все на местах то идите дальше.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Вызов процедуры в ard-отчете

Сообщение m0p3e »

Руслан писал(а):

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ('KatsoprNrec', 'd1', 'd2')');
Но ругается на скобку...
Как-то так:

Код: Выделить всё

sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '),#date(' + d1 +'),#date(' + d2 +'))');
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Den »

Ну вот так у меня не упало и в результат выполнения SQLEXECSTMT вернулось 0 (статус что все ок)

Код: Выделить всё

SQL Procedure TESTPRO (
					    s   : string
  					  );
var
 c1  : comp;
{
 c1 := #comp(0);

 c1 :=(
        SELECT nrec FROM katorg where name=s
      );
 return c1;
}


-----------------------
.form sss
.ard
.table blank
.var
  stmt : longint;
  li4 : integer;
  s: string;
  n_rec : comp;
.endvar
.begin
          s:='Абанина Бэла Олеговна';
          stmt := sqlAllocStmt;
          sqlBindCol(stmt,1,n_rec);
          SqlBindParam(stmt, 1,s);
          LI4:= SQLEXECSTMT(STMT,'TESTPRO(?)');
          Message('li4='+li4);

          sqlFetch(stmt);
          Message('nrec='+n_rec);
end.
.endform
Правда не вернулся nrec почему то результат :grin: но лень допинывать...тем не менее процедуры вызвалась на серваке и отработала
Лучше конечно параметры биндить и в процедуре просто ? через , тогда не будет гемора "ошибься где то лишней кавычкой"
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Руслан »

Пробовал так запускать процедуру:

Код: Выделить всё

    sqlExecDirect('F_IMPORT_NZ(#comp(' + KatsoprNrec + '),#date(' + d1 +'),#date(' + d2 +'))');
Пробовал так:

Код: Выделить всё

    sqlExecDirect('F_IMPORT_NZ(''KatsoprNrec'', ''d1'', ''d2'')');
Так просто выкидывает из Галактики и процедура не отрабатывает:

Код: Выделить всё

		stmt := sqlAllocStmt;
		sqlBindCol(stmt, 1, nresult);
                sqlBindParam( stmt, 1, KatsoprNrec );
                sqlBindParam( stmt, 2, d1 );
                sqlBindParam( stmt, 3, d2 );
		sqlExecStmt(stmt, 'select top 1 F_IMPORT_NZ (?, ?, ?) from GROUPUSL');
		while sqlFetch(stmt) = tsOk do
                nresult2:=string(nresult);
		sqlFreeStr(stmt);
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Руслан »

Может влияет то, что хранимку я регистрировал с одним входным параметром katsoprnrec, а потом уже в ORACLE добавил еще два параметра (дата начала d1 и дата конца d2). Потому как до того
как добавил эти два параметра, процедура вызывалась.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Den »

Руслан писал(а):Может влияет то, что хранимку я регистрировал с одним входным параметром katsoprnrec, а потом уже в ORACLE добавил еще два параметра (дата начала d1 и дата конца d2). Потому как до того
как добавил эти два параметра, процедура вызывалась.
Что мешает взять да и попробовать перерегистрировать процедуру с нужным количеством параметров ?
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Руслан »

Пересоздал процедуру со всеми параметрами, все равно не вызывается((((
Руслан
Местный житель
Сообщения: 294
Зарегистрирован: 01 ноя 2011, 14:03
Контактная информация:

Re: Вызов процедуры в ard-отчете

Сообщение Руслан »

Ребят помогите с этой гребаной процедурой...
Ответить