Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Снова Updater / 8 сообщений из 8, страница 1 из 1
23.09.2003, 09:28
    #32272466
Desil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова Updater
Можно как-нибудь передать в UpdateSQL параметры и чего-то с него получить?

Заранее спасибо...
...
Рейтинг: 0 / 0
23.09.2003, 13:30
    #32272893
1man
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова Updater
Параметры передаются не в UpdateSQL, а в связанный с ним через св-во UpdateObject компонент Query.
...
Рейтинг: 0 / 0
23.09.2003, 14:55
    #32273053
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова Updater
Смотря что ты хочешь делать. Я, например, делаю так:
Код: 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
23.09.2003, 15:08
    #32273085
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова Updater
Ох уж эти программеры, все в общем виде, ничего конкретного... Вам бы в ФСБ работать. Сто раз использовал и UpdateSql, и параметры, но так и не понял, что человек хочет.
...
Рейтинг: 0 / 0
23.09.2003, 15:24
    #32273137
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова Updater
>>Сто раз использовал и UpdateSql, и параметры, но так и не понял, что человек хочет.

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

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

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

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

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


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