powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / BCB, ADO и хранимые процедуры
11 сообщений из 11, страница 1 из 1
BCB, ADO и хранимые процедуры
    #34389600
actualADO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь сделать вызов хранимой процедуры. Пусть TAdoStoredProc - spSelect

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
if (spSelect->Active) spSelect->Close();
//Здесь происходит "очистка" параметров, не знаю, как правильнее сказать. Присвоение значению параметров NULL.
//................
//Присваиваем параметрам значения
if (edit1->Text != "")                spSelect->Parameters->ParamValues["@Param1"]=edit1->Text;
....
if (edit2->Text != "")                spSelect->Parameters->ParamValues["@ParamN"]=edit2->Text;

spSelect->Open;

//Эта часть кода для проверки "содержимого" параметров
if (!spSelect->Parameters->ParamByName("@Param1")->Value.IsNull())
   ListBox->Items->Add(spSelect->Parameters->ParamByName("@Param1")->Value);
else
   ListBox->Items->Add("NULL");
...
if (!spSelect->Parameters->ParamByName("@ParamN")->Value.IsNull())
   ListBox->Items->Add(spSelect->Parameters->ParamByName("@ParamN")->Value);
else
   ListBox->Items->Add("NULL");
//....................................................

ShowMessage(IntToStr(spSelect->RecordCount));
spSelect->Close;

Меня интересует та часть кода, которая отвечает за "обнуление" значения параметра
Я её пытался выполнить и так:
Код: plaintext
1.
spSelect->Parameters->ParamByName("@Param1")->Value.Clear();
spSelect->Parameters->ParamByName("@ParamN")->Value.Clear();
и так
Код: plaintext
1.
spSelect->Parameters->ParamByName("@Param1")->Value = NULL;
spSelect->Parameters->ParamByName("@ParamN")->Value = NULL;
и так
Код: plaintext
1.
spSelect->Parameters->ParamByName("@Param1")->Value = Null;
spSelect->Parameters->ParamByName("@ParamN")->Value = Null;

В случае, если процедуру первично вызываем, присвоив параметру не нулевое значение - всё ок, но если вторично вызвать процедуру и не присваивать параметру значение, т.е требуется вызвать процедуру со значением параметра NULL, в параметре остается старое значение. Извиняюсь за сумбур. Что посоветуете? В Делфях подобное работает!!!
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34389609
ActualADO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И так пробовал - не идет!!!!!
Код: plaintext
1.
2.
3.
4.
5.
6.
TParameters* Sender

 for (int i =  0  ; i < Sender->Count -  1 ; i++)
   if (Sender->Items[i]->Attributes.Contains(paNullable))
      Sender->Items[i]->Value = NULL;
    else
      Sender->Items[i]->Value = Unassigned;
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34389869
ActualADO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не уж-то никто с БД через ADO не работает?
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34393209
Pegasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я очистил так
...Parameters->ParamByName("@Param1")->Value ="";
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34393423
ActualADO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pegasikя очистил так
...Parameters->ParamByName("@Param1")->Value ="";
Ты просто присвоил параметру значение - пустая строка
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34393443
ActualADO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A мне надо именно NULL, т.к условие у хранимой процедуры

Код: plaintext
1.
2.
3.
4.
5.
....
WHERE (((@edt1 is null) or (@edt1 = data.[edt_1])) and
           ((@edt2 is null) or (@edt2 = data.[edt_2])) )
	
RETURN (@@ROWCOUNT)
END
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34393563
Shiklgruber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4 ActualADO
а если перед открытием процедуры просто обнулять все параметры кодом?
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34393578
ActualADO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shiklgruber4 ActualADO
а если перед открытием процедуры просто обнулять все параметры кодом?
Как? Если всеми выше перечисленными мною способами - то не подходит - не обнуляет, хотя в Делфи такое работает
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34393584
Shiklgruber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ой ... неуспел допечатать.. :)
например присвоить параметру значение переменной, которая=NULL?
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34393669
ActualADO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то я совсем запутался
Код: plaintext
1.
2.
3.
4.
5.
TDateTime dat = NULL;
...->Parameters->ParamValues["@edt1"] = dat;
if (!...->Parameters->ParamByName("@edt1")->Value.IsNull())
                        ListBox1->Items->Add(...->Parameters->ParamByName("@edt1")->Value);
                else
                        ListBox1->Items->Add("NULL");

В ListBox выводит 0:00:00

Переменная типа TDateTime вообще может быть NULL?
...
Рейтинг: 0 / 0
BCB, ADO и хранимые процедуры
    #34393698
ActualADO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кажись до меня дошло! NULL значение TDateTime это 0;
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / BCB, ADO и хранимые процедуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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