Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-38175
Pk
2003-02-04 17:32
2003.02.13
Цветная рамка на форме


1-38298
Сергей
2003-02-05 22:18
2003.02.13
Перерисовка формы


3-38105
Victor_
2003-01-27 14:08
2003.02.13
ADOQuery + сортировка


3-38110
radix
2003-01-28 08:58
2003.02.13
Как легко и просто создать хранимую процедуру из программы ?


1-38369
Natalia
2003-02-03 23:32
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский