Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.13;
Скачать: CL | DM;

Вниз

Error convrsions from string   Найти похожие ветки 

 
Ptiza   (2003-01-29 10:43) [0]

Приветствую масетров! Объясните мне лоху из-за чего возникает ошибка с кодом -303 (conversion error from string) при попытке добавить в таблицу SQL-запросом строковое значение , например "ЭСТОНИЯ" , если для БД lc_ctype=WIN1251 и поле в таблице VARCHAR(64) CHARACTER SET WIN1251 (эта кодировка выбрана для БД по умолчанию) . Это строковое значение я получаю из другой БД с тем же самым WIN1251 и таким же размером поля в таблице. Использую IBX-компоненты. Если использовать BDE , то все тоже самое проходит нормально ! Релиз FB 1.02.908.

Вот код :

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;


 
Соловьев ©   (2003-01-29 10:45) [1]

У меня было такое когдая не правильно конектился к БД(у меня тоже FireBird).


 
Ptiza   (2003-01-29 10:58) [2]

А что значит "не правильно коннектился" ? В чем собственно может быть "неправильность" ?


 
Соловьев ©   (2003-01-29 11:13) [3]

IBX я не пользовался, сейчас я пока работаю в IBManager, вот там чтобы соеденится с БД надо указать какая кодировка, вот там у меня ничего не стояло, выставил win1251, все заработало и русские, и украинские слова можно добавлять...



Страницы: 1 вся ветка

Текущий архив: 2003.02.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
4-38628
Керик
2002-12-31 07:57
2003.02.13
Создать окно


6-38407
mady
2002-12-21 06:23
2003.02.13
Сбор инфы о трафике для прокси


14-38514
passm
2003-01-28 13:32
2003.02.13
Список используемых (открытых) файлов


14-38472
michael_b
2003-01-30 20:21
2003.02.13
Проблема с рекурсией


14-38451
BALU1111
2003-01-30 14:46
2003.02.13
Толковый словарь Мастаков