Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите студенту с IBStoredPros / 9 сообщений из 9, страница 1 из 1
10.06.2004, 23:54:18
    #32557281
zerrowich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студенту с IBStoredPros
Что-то я уже запутался с ними. От этой курсовой уже голова неработает. Я пишу
так
..............................................................................................................
CREATE PROCEDURE IRASYTI_NARIUS (
VARDAS CHAR (20),
PAVARDE CHAR (20),
GIMTADIENIS DATE,
ASMENS_KODAS VARCHAR (11),
SK_ID INTEGER)
AS
BEGIN
INSERT INTO ZMOGUS(VARDAS, PAVARDE, GIMTADIENIS,
ASMENS_KODAS, SK_ID)
VALUES(:VARDAS, :PAVARDE, :GIMTADIENIS,
:ASMENS_KODAS, :SK_ID);
SUSPEND;
END
................................................................................................................
В Делфи так
............................................................................................................
with Form1.IBDatabase1 do
if not IBtransaction1.InTransaction then
IBTransaction1.StartTransaction;
IBquery1.SQL.Clear;
IBStoredproc1.Name:= 'IRASYTI_NARIUS';
IbStoredproc1.ParamByName('VARDAS').AsString:=vardasEdit.Text;
IbStoredproc1.ParamByName('PAVARDE').AsString:= pavardeEdit.Text;
IbStoredproc1.ParamByName('GIMTADIENIS').AsString:= GIMTADIENISEDIT.Text;
IBStoredproc1.ParamByName('ASMENS_KODAS').AsString:= Asmens_kodasEdit.Text;
IBStoredproc1.ParamByName('SK_ID').AsString:= Asmens_kodasEdit.Text;
IBStoredproc1.Prepare;
IBStoredproc1.ExecProc;
IBquery1.SQL.Add ('SELECT * FROM SEIMA');
IBQuery1.Open;
end
..............................................................................................................
Когда дохожу до первого параметра,
IbStoredproc1.ParamByName('VARDAS').AsString:=vardasEdit.Text;
вылетает ошибка. Что-то я тут напутал. Но непойму что. Может свежим глазом
лучше видно.
...
Рейтинг: 0 / 0
11.06.2004, 04:12:16
    #32557311
Dremuchij Forester
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студенту с IBStoredPros
1. У тебя процедура действия, посему SUSPEND - нафиг.
2.
IBStoredproc1.Name:= 'IRASYTI_NARIUS';
IbStoredproc1.ParamByName('VARDAS').AsString:=vardasEdit.Text;

Ты сначала говоришь "Вася, теперь тебя будут звать Петей",
А потом - "Вася, слушай сюда!" - но Вася-то уже Петя!
Чтоб задать имя вызываемой ХП, юзай свойство StoredProcName.

IBStoredproc1.StoredProcName := 'IRASYTI_NARIUS'
IbStoredproc1.ParamByName('VARDAS').Value {а не AsString}:= vardasEdit.Text;


3. У тебя в одной транзакции запись (IbStoredproc1.ExecProc) и чтение (IBQuery1.Open), а это не есть ГУТ.

4. Ну и там еще помаленьку...
...
Рейтинг: 0 / 0
11.06.2004, 09:00:36
    #32557400
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студенту с IBStoredPros
2 zerrowich
убери SUSPEND из процедуры, потому как он не нужен...

про StoredProcName Тебе уже сказали...
нужно для начала создать параметр в компоненте IBStoredProc...
вот что у меня работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
with DataModule2.StoredProc1 do
 begin
  Close;
  StoredProcName:='';
  StoredProcName:='katpodr_ins_upd';
  Params.AddParam(Params.CreateParam(ftUnknown,'prizn',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'q1',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'q2',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'q3',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'q4',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'p_nrec',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'p_name',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'p_kod',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'p_c_tippodr',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'p_c_func',ptInput));
  Params.AddParam(Params.CreateParam(ftUnknown,'p_isleaf',ptInput));
  Params.AddParam(Params.CreateParam(ftInteger,'E_NREC',ptOutput));
  ParamByName('prizn').AsString:=s_rej;
  ParamByName('q1').asDate:=Date();
  ParamByName('q2').asstring:=TimeToStr(Time());
  ParamByName('q3').asstring:=s_kuser;
  ParamByName('q4').asstring:=lof;
  ParamByName('p_nrec').asFloat:=pr_nrec;
  ParamByName('p_name').asString:=pr_name;
  ParamByName('p_kod').asString:=pr_kod;
  ParamByName('p_c_tippodr').asFloat:=pr_c_tippodr;
  ParamByName('p_c_func').asFloat:=pr_c_func;
  ParamByName('p_isleaf').asstring:=pr_isleaf;
  ExecProc;
  Result:=ParamByName('E_NREC').Value;
  StoredProcName:='';
  Close;
 end;
...
Рейтинг: 0 / 0
11.06.2004, 12:29:20
    #32557918
zerrowich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студенту с IBStoredPros
Спасибо за замечания. Но интересно, хотя в Object inspector в Storedproc парамеры эсть но показывает ошибку " required para value not set".
Конечно можно вписать вручную код как предложил товарищ, но хочится разобратся до конца.
спасибо всем за ответы.
...
Рейтинг: 0 / 0
11.06.2004, 13:49:50
    #32558127
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студенту с IBStoredPros
ошибку переведи и поймёшь что делать надо и чего не хватает...
...
Рейтинг: 0 / 0
11.06.2004, 13:51:32
    #32558130
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студенту с IBStoredPros
кстати можно и не в ручную параметры задавать, но тогда если в базе 100 процедур, то для вызова каждой нужно будет свой IBStoredProc компонент делать...
кстати SUSPEND из процедуры убрал???
...
Рейтинг: 0 / 0
11.06.2004, 14:53:07
    #32558297
zerrowich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студенту с IBStoredPros
Suspend убрал. все подправил. Но что-то непринимает параметры б хотя их видит
...
Рейтинг: 0 / 0
15.06.2004, 08:34:58
    #32560954
VF
VF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студенту с IBStoredPros
Код: plaintext
Params.AddParam(Params.CreateParam(ftUnknown,'p_isleaf',ptInput));
так делал или статично задаётся?
...
Рейтинг: 0 / 0
18.06.2004, 16:00:47
    #32567730
zerrowich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите студенту с IBStoredPros
Cейчас все нормально спасибо!
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите студенту с IBStoredPros / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]