Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-38439
France
2003-01-30 09:55
2003.02.13
DXF


1-38321
Serghei
2003-02-03 15:58
2003.02.13
Много МDI форм один обработчик их создания в RunTime!!!!


14-38463
me2
2003-01-30 14:39
2003.02.13
Visual Basic


14-38571
sad
2003-01-30 09:49
2003.02.13
BackGround в виде школьной тетради


6-38427
tga
2002-12-20 12:53
2003.02.13
TIdHTTP. Как начать работу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский