Temat: SQL w Lazarusie
Eugeniusz R.:
Ostatnio trenuję dostęp do bazy Paradox .. Masz może jakieś doświadczenie w tej materii?
Ćwiczyłem to kiedyś w jednym z własnych projektów, z tym że jeśli chodzi o Paradox, to jest komponent TParadox jako TDataSet (powinien być zarejestrowany w IDE w zakładce Data access) tylko nie wiem czy w dalszym ciągu ten komponent nie powala jedynie na odczyt tego typu baz danych.
Właśnie to trenuję. Wystarczy mi odczyt tabel, ponieważ muszę się podłączyć do programu księgowego i "zabrać" wprowadzone faktury do mojej aplikacji.
Zobaczymy jak to wyjdzie...
Jedyne czego bym się w tych przypadkach spodziewał to np. tego, że baza danych może być kodowana w innym standardzie niż UTF-8, np. CP-1250. Lazarus (tak jest już obecnie) a właściwie to LCL obsługuje UTF-8, zatem przy domyślnym odczycie bez żadnych konwersji, dane w jakiejkolwiek bazie danych czy to dbf czy paradox powinny być w tym standardzie. Inaczej spowoduje to wyświetlenie jakichś znaków zapytania zamiast polskich liter, no chyba że użyje się konwersji na UTF-8.
Jeśli dane są przechowywane w Windows-1250 można dokonać konwersji przy odczycie np. tak:
uses FileUtil;
//...pdxdataset jest typu TParadox
with pdxDataSet do
begin
try
Open;
Edit1.Text := SysToUTF8(FieldByName('OpisProduktu').AsString);
finally
Close;
end;
end
To tylko przykładowy odczyt z bazy danych w Windows-1250, w przypadku kodowania UTF-8 jest normalne przypisanie do edit bez tej funkcji SysToUTF8 w module FileUtil. Przy zapisie do bazy w Windows-1250 należałoby użyć UTF8ToSys. Oczywiście założyłem że pdxdataset korzysta z jakiejś tabeli. Takie problemy mogą wystąpić jeśli ktoś postanowił przejść z Delphi na Lazarusa a wcześniej działał na standardzie Windows-1250 co dotyczyło np. Delphi 7.0.
Ten post został edytowany przez Autora dnia 25.05.13 o godzinie 06:57