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

Вниз

DBExpres Проблемы SQLStoredProc   Найти похожие ветки 

 
YurikGl ©   (2004-04-07 17:16) [0]

Есть SQLStoredProc1.
Выполняю с ее помощью одну процедуру
SQLStoredProc1.StoredProcName:="Первая процедура"
SQLStoredProc1.ParamByName("InПараметр").value:=что-то
...
SQLStoredProc1.ExecProc;
что-то вернули:=SQLStoredProc1.ParamByName("OutПараметр").value;

Дальше, если с помощью того же SQLStoredProc выполнить другую процедуру

SQLStoredProc1.StoredProcName:="Другая процедура"

То на этой строчке программа вылетает.

Предположительно, это связано с тем, что SQLStoredProc1 сохраняте значения предыдущих параметров и т.к. у разных хранимых процедур они разные, выдает ошибку. Что делать?

SQLStoredProc1.Params.clear не помогает.


 
YurikGl ©   (2004-04-07 17:16) [0]

Есть SQLStoredProc1.
Выполняю с ее помощью одну процедуру
SQLStoredProc1.StoredProcName:="Первая процедура"
SQLStoredProc1.ParamByName("InПараметр").value:=что-то
...
SQLStoredProc1.ExecProc;
что-то вернули:=SQLStoredProc1.ParamByName("OutПараметр").value;

Дальше, если с помощью того же SQLStoredProc выполнить другую процедуру

SQLStoredProc1.StoredProcName:="Другая процедура"

То на этой строчке программа вылетает.

Предположительно, это связано с тем, что SQLStoredProc1 сохраняте значения предыдущих параметров и т.к. у разных хранимых процедур они разные, выдает ошибку. Что делать?

SQLStoredProc1.Params.clear не помогает.


 
wild_arg ©   (2004-04-07 17:20) [1]

а сделай типа:
with TSQLStoredProc1.Create do begin
 StoredProcName:="Первая процедура"
 ParamByName("InПараметр").value:=что-то
 ...
 ExecProc;
 res1 := ParamByName("OutПараметр").value;
 Free;
end;
with TSQLStoredProc1.Create do begin
 StoredProcName:="Другая процедура"
 ParamByName("InПараметр").value:=что-то
 ...
 ExecProc;
 res2 := ParamByName("OutПараметр").value;
 Free;
end


 
wild_arg ©   (2004-04-07 17:20) [1]

а сделай типа:
with TSQLStoredProc1.Create do begin
 StoredProcName:="Первая процедура"
 ParamByName("InПараметр").value:=что-то
 ...
 ExecProc;
 res1 := ParamByName("OutПараметр").value;
 Free;
end;
with TSQLStoredProc1.Create do begin
 StoredProcName:="Другая процедура"
 ParamByName("InПараметр").value:=что-то
 ...
 ExecProc;
 res2 := ParamByName("OutПараметр").value;
 Free;
end


 
bushmen ©   (2004-04-07 17:30) [2]

Проще надо быть. После получения значения первой процедуры пишешь:

TSQLStoredProc1.Parameters.Delete(0);

И будет тебе счастье


 
bushmen ©   (2004-04-07 17:30) [2]

Проще надо быть. После получения значения первой процедуры пишешь:

TSQLStoredProc1.Parameters.Delete(0);

И будет тебе счастье


 
bushmen ©   (2004-04-07 17:34) [3]

Конечно, я немного погорячился:

SQLStoredProc1.Params.Delete(0);


 
bushmen ©   (2004-04-07 17:34) [3]

Конечно, я немного погорячился:

SQLStoredProc1.Params.Delete(0);


 
YurikGl ©   (2004-04-07 17:40) [4]

re [3] В смысле нужно всем параметрам говорить Params.Delete(i)?


 
YurikGl ©   (2004-04-07 17:40) [4]

re [3] В смысле нужно всем параметрам говорить Params.Delete(i)?


 
YurikGl ©   (2004-04-07 17:48) [5]

re [3] Не помогает.
Зато [1] Помогло, хотя и изврат это...


 
YurikGl ©   (2004-04-07 17:48) [5]

re [3] Не помогает.
Зато [1] Помогло, хотя и изврат это...


 
wild_arg ©   (2004-04-07 17:54) [6]

2YurikGl
Да почему изврат-то?
Нормально все, зато у тебя в памяти не лежат ненужные постоянно компоненты. Они создаются когда надо и после этого уничтожаются.
Сам раньше так не любил, а теперь ничего :)


 
wild_arg ©   (2004-04-07 17:54) [6]

2YurikGl
Да почему изврат-то?
Нормально все, зато у тебя в памяти не лежат ненужные постоянно компоненты. Они создаются когда надо и после этого уничтожаются.
Сам раньше так не любил, а теперь ничего :)


 
YurikGl ©   (2004-04-07 18:38) [7]

Написал в итоге

procedure TDataModule1.SqlProcInit;
Begin
SQLStoredProc1.free;
SQLStoredProc1:=TSQLStoredProc.Create(self);
SQLStoredProc1.SQLConnection:=SqlConnection1;
End;

И вызываю каждый раз при вызове процедуры.
Но как-то проще должно быть.


 
YurikGl ©   (2004-04-07 18:38) [7]

Написал в итоге

procedure TDataModule1.SqlProcInit;
Begin
SQLStoredProc1.free;
SQLStoredProc1:=TSQLStoredProc.Create(self);
SQLStoredProc1.SQLConnection:=SqlConnection1;
End;

И вызываю каждый раз при вызове процедуры.
Но как-то проще должно быть.


 
Desdechado ©   (2004-04-07 19:36) [8]

наблюдал похожий глюк, но причина была в том, что имя процедуры должно быть задано в ВЕРХНЕМ регистре ВСЕГДА, вне зависимости от диалекта


 
Desdechado ©   (2004-04-07 19:36) [8]

наблюдал похожий глюк, но причина была в том, что имя процедуры должно быть задано в ВЕРХНЕМ регистре ВСЕГДА, вне зависимости от диалекта


 
YurikGl ©   (2004-04-07 19:47) [9]

re [8] Это я уже знаю. Если имя задать в нижнем регистре, то ParamByName вообще ничего "не видит"


 
YurikGl ©   (2004-04-07 19:47) [9]

re [8] Это я уже знаю. Если имя задать в нижнем регистре, то ParamByName вообще ничего "не видит"


 
YurikGl ©   (2004-04-07 21:41) [10]

Кстати, эта пролема есть у всех dbExpress-компонентов. Первый запрос (неважно какой) проходит нормально, но потом при попытке присвоить свойству ComandText/StoreProcName любую стороку, приложение вылетает с ошибкой.


 
YurikGl ©   (2004-04-07 21:41) [10]

Кстати, эта пролема есть у всех dbExpress-компонентов. Первый запрос (неважно какой) проходит нормально, но потом при попытке присвоить свойству ComandText/StoreProcName любую стороку, приложение вылетает с ошибкой.


 
Desdechado ©   (2004-04-08 21:22) [11]

ну, с ХП я так не извращался, а вот SQLDataSet я постоянно переприсваиваю commandtext и никаких проблем не наблюдал...


 
Desdechado ©   (2004-04-08 21:22) [11]

ну, с ХП я так не извращался, а вот SQLDataSet я постоянно переприсваиваю commandtext и никаких проблем не наблюдал...



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

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

Наверх





Память: 0.5 MB
Время: 0.039 c
1-1082637525
CSTR
2004-04-22 16:38
2004.05.09
Возведение в степень...


11-1066944174
XAMLO
2003-10-24 01:22
2004.05.09
Установка mck


1-1082371215
Dimaz
2004-04-19 14:40
2004.05.09
Нужен способ определения - файл бинарный/нет.


3-1082007252
Evgenija
2004-04-15 09:34
2004.05.09
Подсоединение к базе Оракла


14-1082046157
Gero
2004-04-15 20:22
2004.05.09
Потверждение в bat нике





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский