Как заставить TADOConnection Delphi использовать ansistring для Command? - PullRequest
0 голосов
/ 14 апреля 2019

У меня проблема с кодировкой, когда я вставляю в файл dbf через ADO.

Connecting string: 'Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="dBASE IV";Data Source='+extractfilepath(ParamStr(0))+';'+
  'User ID=Admin;Password='

В команде вставки я преобразовываю данные в определенную кодовую страницу, но в таблице высаживаются разные байты.Вероятно, из-за Unicode-строк.

insert into someDBFFile (f1,f2,f3,f4,f5)
values(
'ATENEUM SPŁśKA Z OGRANICZONŹ ODPOWIEDZIALNOCIŹ S.K.A.  Wpisana w S†dz',
'ie rej.dla Krakowa-r˘dmiežcie Wydzia’ XI Gospodarczy',
'30-741',
'Krak˘w',
'Nad Drwin† 10, '
)

Данные после вставки в DBF:

ATENEUM SPťKA Z OGRANICZONŤ ODPOWIEDZIALNO? CIŤ SKA Wpisana w SĹdzie rej.dla Краковская-Род-РияGospodarczy
30-741Краков
Nad DrwinĹ 10,

Должно быть как в примере кода:

'ATENEUM SPŁśKA Z OGRANICZONŹ ODPOWIEDZIALNOCIŹ SKA Wpisana w S † dz', 'т.е. rej.dla Krakowa-r˘dmiežcie Wydzia 'XI Gospodarczy', '30 -741 ',' Krak˘w ',' Nad Drwin † 10, '

Я попробовал TADOTable с тем же результатом.

tblZAEX.Insert;
 tblZAEX.FindField('NA1').AsAnsiString:=ToMazovia(Copy(TInvoiceHeaderPartiesSummaryB_Name.asansiString,1,70));
 tblZAEX.FindField('NA2').AsAnsiString:=ToMazovia(Copy(TInvoiceHeaderPartiesSummaryB_Name.asansiString,71,70));
 tblZAEX.Post;
...