Показать сообщение отдельно
  #5  
Старый 08.08.2011, 14:09
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Более сложный пример для FIBPLUS
Код:
procedure OItemFB.StartWrite;
var
  locFieldCount, cRow,cCol:Integer;
  slFields,slParValues,slItem,sss,sssp:string;
begin
  wSOData.fqWrite.Transaction:=wSOData.ffTAWrite;
  wSOData.ffTAWrite.StartTransaction;

  locFieldCount:= CheckedFields.Count;
  for  cCol:=1  to locFieldCount do begin
     sssp:=CheckedFields.Strings[cCol-1];
    slFields:=slFields+sssp+', ';
    slParValues:=slParValues + ':' + sssp + ', ';
  end;

  slFields:=slFields+pIdField+', '+pItemField;
  slParValues:=slParValues+':'+ pIdField+', :'+pItemField;
  wSOData.fqWrite.SQL.Text:= 'insert into ' + pTablename + ' (' + slFields
   + ') values (' + slParValues + ')';
  {insert into CLASSIFICATION () values ()}

  pItemList.First;
  for cRow := 0 to pItemList.Count do begin
    wSOData.fqWrite.ParamByName(pIdField).AsInt64:=pItemList.ItemId;
    slItem:=pItemList.Item;
    wSOData.fqWrite.ParamByName(pItemField).AsString:=slItem;

    for  cCol:=1  to locFieldCount do begin
      sssp:=CheckedFields.Strings[cCol-1];
      sss:=pItemList.Data[cCol-1];
      wSOData.fqWrite.ParamByName(sssp).AsString:=sss; //stQuote+sss+stQuote;
    end;
          sss:=wSOData.fqWrite.ReadySQLText(false); {отладка}
          ii:=wSOData.fqWrite.ParamCount;{отладка}
          stt:=    wSOData.fqWrite.ParamValue(pItemField);{отладка}
                      //wSOData.fqWrite.Prepare;
  try
  wSOData.fqWrite.ExecQuery;
  except
  wSOData.ffTAWrite.Rollback;

  pError:=38; pErrorText:='Ошибка в строке  ' +  slItem; Exit;
  end;
  pItemList.Next;
  If pItemList.Eof=true then break;
  end;
  wSOData.ffTAWrite.Commit;
end;
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
Ответить с цитированием