Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизПроблема с кирилицей в dbf Найти похожие ветки
← →
N-nescio (2004-04-24 15:29) [0]Создаю таблицу с помощью SQL:
const
CreateTab = "CREATE TABLE ";
IDXTab = "PRIMARY KEY ";
function TfrmMain.CreateTable(TabName, TabStruct, TabIDX: string): boolean;
begin
Result := True;
qyTemp := TQuery.Create(Self);
with qyTemp do
try
try
SQL.Clear;
SQL.Add(CreateTab+TabName+"("+TabStruct+TabIDX+")");
Prepare;
ExecSQL;
except
Exception.Create("");
Result := False;
end;
finally
Close;
end;
end;
Потом вставляю в нее записи:
(MClDtSet : TClientDataSet)
frmMain.MClDtSet.First;
for i := 1 to frmMain.MClDtSet.RecordCount do
begin
TStr := "";
for j := 1 to FCount do
TStr := TStr + """+
frmMain.MClDtSet.Fields.Fields[j-1].AsString + "",";
delete(TStr,length(TStr),1);
frmMain.qyTemp.SQL.Clear;
frmMain.qyTemp.SQL.Add(Format("INSERT INTO ".\temp.dbf" VALUES(%s)",[TStr]));
frmMain.qyTemp.ExecSQL;
Application.ProcessMessages;
frmMain.MClDtSet.Next;
end;
Но в dbf-файле символы киррилицы представляют собой что-то типа такого - ?????.
Подскажите пожалуйста как решить эту проблему.
← →
LaidBack (2004-04-25 08:31) [1]Начать нужно с правильной установки LANGDRIVER для DBASE
← →
N-nescio (2004-04-26 18:54) [2]>>Начать нужно с правильной установки LANGDRIVER для DBASE
Если можно то с этого места поподробнее:
Как это можно сделать программно?
← →
Desdechado © (2004-04-26 19:19) [3]
{----- выбрать файл БД и настроить параметры подключения -----}
function DBOptions( var cIPAddress: String; var cNameDB: String;
var cDriverDB: String; var cLangDriver: String ): Boolean;
var
oDlg: TfrmSelectDB;
n: Integer;
begin
result := False;
oDlg := TfrmSelectDB.Create( Application );
with( oDlg ) do
try
edIP.Text := cIPAddress;
edNameDB.Text := cNameDB;
n := cbxDBDriver.Items.IndexOf( cDriverDB );
cbxDBDriver.ItemIndex := Max( n, 0 );
n := cbxLangDriver.Items.IndexOf( BDE_LangNameToDesc( cLangDriver ) );
cbxLangDriver.ItemIndex := Max( n, 0 );
if( ShowModal() = mrOk ) then
begin
cIPAddress := edIP.Text;
cNameDB := edNameDB.Text;
cDriverDB := cbxDBDriver.Items[ cbxDBDriver.ItemIndex ];
cLangDriver := BDE_LangDescToName( cbxLangDriver.Items[ cbxLangDriver.ItemIndex ] );
result := True;
end;
finally
Release;
end;
end;
{----- определение языковых драйверов BDE -----}
function BDE_LangNameToDesc( cLangName: String ): String;
var
LD: LDDesc;
hCur: hDbiCur;
begin
result := "";
try
Check( DbiOpenLdList( hCur ) );
while( DbiGetNextRecord( hCur, dbiNOLOCK, @LD, nil ) = DBIERR_NONE ) do
if( StrIComp( LD.szName, PChar( cLangName ) ) = 0 ) then
begin
result := String( LD.szDesc );
break;
end;
finally
Check( DbiCloseCursor( hCur ) );
end;
end;
function BDE_LangDescToName( cLangDesc: String ): String;
var
LD: LDDesc;
hCur: hDbiCur;
begin
result := "";
try
Check( DbiOpenLdList( hCur ) );
while( DbiGetNextRecord( hCur, dbiNOLOCK, @LD, nil ) = DBIERR_NONE ) do
if( StrIComp( LD.szDesc, PChar( cLangDesc ) ) = 0 ) then
begin
result := String( LD.szName );
break;
end;
finally
Check( DbiCloseCursor( hCur ) );
end;
end;
а потом в переменную Session или в параметры TDatabase
← →
N-nescio (2004-04-30 17:07) [4]Большое спасибо.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c