Главная страница
    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.011 c
3-38123
karan1
2003-01-28 12:16
2003.02.13
(XML) SAX ... что посоветуете...


1-38359
Saracin
2003-02-03 21:19
2003.02.13
Как рисовать на TStaticText


7-38605
Blacker77
2002-12-09 23:25
2003.02.13
Вопрос о CD-Rom приводе


8-38393
OxOTHuK
2002-10-31 14:41
2003.02.13
делфи и 3Д макс


1-38247
soware
2003-02-05 14:13
2003.02.13
Панель программ на





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский