![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с кирилицей в dbf [D6]
N-nescio © (2004-04-24 15:29:00)Создаю таблицу с помощью 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-файле символы киррилицы представляют собой что-то типа такого - ?????.
Подскажите пожалуйста как решить эту проблему.
N-nescio (2004-04-30 17:07:00) [1]Большое спасибо.
Desdechado (2004-04-26 19:19:00) [2]
{----- выбрать файл БД и настроить параметры подключения -----}
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-26 18:54:00) [3]>>Начать нужно с правильной установки LANGDRIVER для DBASE
Если можно то с этого места поподробнее:
Как это можно сделать программно?
LaidBack (2004-04-25 08:31:00) [4]Начать нужно с правильной установки LANGDRIVER для DBASE