powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Снова Updater
8 сообщений из 8, страница 1 из 1
Снова Updater
    #32272466
Фотография Desil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно как-нибудь передать в UpdateSQL параметры и чего-то с него получить?

Заранее спасибо...
...
Рейтинг: 0 / 0
Снова Updater
    #32272893
1man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Параметры передаются не в UpdateSQL, а в связанный с ним через св-во UpdateObject компонент Query.
...
Рейтинг: 0 / 0
Снова Updater
    #32273053
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотря что ты хочешь делать. Я, например, делаю так:
Код: 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.
33.
34.
35.
36.
37.
38.
// Немного упростил, чтобы не грузить трёхзвенкой, но
// на двух звеньях иначе!
void __fastcall Tdm::MyFunc(TDataSet *SourceDS, TUpdateKind UpdateKind,
                                          TDataSet *DS)
{
 TADOUpdateQuery *qr = (TADOUpdateQuery *) SourceDS;
 TADOUpdateSQL *ADOupSQL = qr->UpdateObject;

  SetSQLParams(ADOupSQL->Query[UpdateKind], DS);
  ADOupSQL->ExecSQL(UpdateKind);
}

void __fastcall Tdm::SetSQLParams(TADOQuery *qr, TDataSet *ds)
{
  int i, pos;
  char *pt;
  TParameter *Param;
  AnsiString PName;
  TField *Field;

  for(i =  0 ; i < qr->Parameters->Count; i++){
   Param = qr->Parameters->Items[i];
   PName = Param->Name;
   pos = PName.Pos( "OLD_" );
   if(pos ==  1 ) PName.Delete( 1 ,  4 );
   Field = ds->FieldByName(PName);

   if(pos ==  1 ) Param->Value = Field->OldValue;
   else {
    if(Field->DataType == ftBlob || Field->DataType == ftMemo ||
       Field->DataType == ftGraphic || Field->DataType == ftFmtMemo){
     Param->Assign(Field);
    } else {
     if(Field->IsNull) Param->Value = Field->OldValue;
     else Param->Value = Field->NewValue;
    }
   }
  }
}
...
Рейтинг: 0 / 0
Снова Updater
    #32273085
Малиновский Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох уж эти программеры, все в общем виде, ничего конкретного... Вам бы в ФСБ работать. Сто раз использовал и UpdateSql, и параметры, но так и не понял, что человек хочет.
...
Рейтинг: 0 / 0
Снова Updater
    #32273137
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Сто раз использовал и UpdateSql, и параметры, но так и не понял, что человек хочет.

Значит мало использовал. Мир вовсе не огранитен только Вашими знаниями.
Множество задач, множество технологий, множество программеров.
...
Рейтинг: 0 / 0
Снова Updater
    #32273595
Фотография Desil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за обсуждение!

Параметры мне нужны вот зачем. В некоторые счастливые моменты запрос может не выполнится, т.к. данные не корректны: типа ввел юзер период в таблицу, а он перекрылся с уже существующим. Писать под такое хранимую процедуру, чтобы ругаться из Делфы не получится, т.к. таких мест очень много и ХП нужно будет штук 50 (причем разных). Поэтому нужно вернуть код чего-нибудь, чтобы понятно было, почему ХП матюкается.
Вот такие у меня проблемы...
...
Рейтинг: 0 / 0
Снова Updater
    #32273637
Фотография Desil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди!!!

Опять у меня полная ... бяка!

Пишу такую вещь:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var str : string;
begin
  ADOupSQL.Query[ukModify].Parameters.Clear;
  with ADOupSQL.Query[ukModify].Parameters.AddParameter do
  begin
    Name := '@a';
    DataType := ftInteger;
    Direction := pdOutput;
  end;
  ADOupSQL.Query[ukModify].ExecSQL;
  str := VarToStr(ADOupSQL.Query[ukModify].Parameters.Items[ 0 ].Value);
end;


В тексте запроса на обновление:

Код: plaintext
set @a=  156 


А он мне пишет, что переменная @a должна быть определена!

Чего делать???
...
Рейтинг: 0 / 0
Снова Updater
    #32273645
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ивини конечно, но по моему у тебя в голове бяка.
Попробуй почитать про параметры на этом форуме от 22 сент.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Снова Updater
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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