Форум: "Базы";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
ВнизЧто этой FireBird не нравится ? Найти похожие ветки
← →
Ptiza (2003-01-29 06:35) [0]Приветствую масетров! Объясните мне лоху из-за чего возникает ошибка с кодом -303 (conversion error from string) при попытке добавить в таблицу SQL-запросом строковое значение , например "ЭСТОНИЯ" , если для БД lc_ctype=WIN1251 и поле в таблице VARCHAR(64) CHARACTER SET WIN1251 (эта кодировка выбрана для БД по умолчанию) . Это строковое значение я получаю из другой БД с тем же самым WIN1251 и таким же размером поля в таблице. Использую IBX-компоненты. Если использовать BDE , то все тоже самое проходит нормально ! Релиз FB 1.02.908.
← →
Big_Rom (2003-01-29 08:02) [1]акод где код ?
← →
Ptiza (2003-01-29 08:46) [2]Вот код :
function DumpAllIBExport(AliasDest,AliasSource:TIBdataBase;UPDTrans: TIBTransaction;
SkipTables: array of String;UpdateS: Boolean): Boolean;
Var AllTables,j,k,AllFields: Integer;
ListTables: TStringList;
myTableName,SourceString,DestString,ValueString,myFieldName: String;
FindFlag: Boolean;
myPos1,myPos2,m: Integer;
begin
Result:=False;
FindFlag:=False;
ListTables:=TStringList.Create;
TRY
With frNTSirena,dmNTServer do begin
TRY
If (not AliasSource.Connected) then AliasSource.Open;
If (AliasDest.Connected) then AliasDest.Connected:=False;
With IBExtract1 do begin
DataBase:=AliasDest;
TransAction:=AliasDest.DefaultTransaction;
AliasDest.Open;
IBExtract1.ExtractObject(eoTable,"",[]);
for j:=0 to Items.Count-1 do begin
myTableName:=Items[j];
myPos1:=Pos("Table:",myTableName);
myPos2:=Pos(",",myTableName);
myTableName:=TRIM(Copy(myTableName,myPos1+6,myPos2-6-myPos1));
If ((myPos1>0) and (myPos2>0))
then begin
ListTables.Add(myTableName);
End;
end;
End;
for j:=Low(SkipTables) to High(SkipTables) do begin
for k:=0 to ListTables.Count-1 do begin
if (ListTables.Strings[k]=SkipTables[j]) then begin
FindFlag:=True;
Break;
End;
end;
If (FindFlag) then begin
ListTables.Delete(k);
FindFlag:=False;
End;
end;
AllTables:=ListTables.Count;
For j:=0 to AllTables-1 do begin
myTableName:=ListTables.Strings[j];
If (AliasDest<>dbIBExport) then begin
With qrSimple1 do begin
Close;
DataBase:=AliasDest;
TransAction:=UPDTrans;
If (UPDTrans.Active) then UPDTrans.Active:=False;
UPDTrans.StartTransaction;
SQL.Clear;
SQL.Add("DELETE FROM "+myTableName);
ExecSQL;
UPDTrans.Commit;
UPDTrans.Active:=False;
End;
End;
SourceString:="SELECT * FROM "+UPPERCASE(myTableName);
DestString:="INSERT INTO "+UPPERCASE(myTableName)+" (";
ValueString:="VALUES (";
With tbAllExport do begin
Close;
DataBase:=AliasDest;
TransAction:=AliasDest.DefaultTransaction;
SQL.Clear;
SQL.Add(SourceString);
Open;
AllFields:=0;
for k:=0 to FieldCount-1 do begin
DestString:=DestString+Fields[k].FieldName+",";
ValueString:=ValueString+":PR"+IntToStr(k)+",";
Inc(AllFields);
end;
Close;
DestString:=LeftString(DestString,Length(DestString)-1)+")";
ValueString:=LeftString(ValueString,Length(ValueString)-1)+")";
End;
DestString:=DestString+" "+ValueString;
With qrAllIBExport do begin
Close;
DataBase:=AliasSource;
Transaction:=AliasSource.DefaultTransaction;
SQL.Clear;
SQL.Add(SourceString);
Open;
FetchAll;
First;
m:=0;
While NOT EOF do begin
With tbAllExport do begin
Close;
DataBase:=AliasDest;
TransAction:=UPDTrans;
If (UPDTrans.Active) then UPDTrans.Active:=False;
UPDTrans.StartTransaction;
SQL.Clear;
SQL.Add(DestString);
Prepare;
for k:=0 to AllFields-1 do begin
tbAllExport.Params[k].Value:=qrAllIBExport.Fields[k].Value;
end;
ExecSQL;
UnPrepare;
UPDTrans.Commit;
UPDTrans.Active:=False;
Inc(m);
END;
Next;
End;
Close;
End;
End;
Result:=True;
EXCEPT
ShowError;
END;
End;
FINALLY
If (ListTables <> nil) then ListTables.Free;
END;
End;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c