
08.08.2011, 14:09
|
 |
Активный
|
|
Регистрация: 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;
__________________
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА!
|