Ahoj,
používám Delphi + UniDAC + SQLite. Protože ve svém projektu potřebuji tabulky s jednotlivými roky v samostatných sloupcích, chci do SQLite přidat rozšíření "pivot_vtab" (https://antonz.org/sqlite-pivot-table/), podle položky návodu "3. Pivot extension". Pro připojení k databázi používám komponentu UniDAC.
Úspěšně jsem zkompiloval DLL s „pivot_vtab“. Dále nastavil parametry UniConnection: načetl extension dle manuálu (https://docs.devart.com/unidac/using-sqlite.htm). Až posud vše v pořádku. Poté jsem v databázi vytvořil tabulku 'sales' (obyčejná tabulka s daty) a 'v_sales' – tabulka vytvořená na základě připojeného 'pivot_vtab', dle následujícího kódu z návodu:
create virtual table v_sales using pivot_vtab (
(select distinct product from sales),
(select distinct year, year from sales),
(select sum(income) from sales where product = ?1 and year = ?2)
);
Vytvoření tabulky proběhlo v pořádku. Ale když se pokouším tuto tabulku spustit ('select * from v_sales;'), dojde k následující chybě:
* Exception class $C0000005 with message 'c0000005 ACCESS_VIOLATION'. Process Project1.exe (7996)
* Exception class EAccessViolation with message 'Access violation at address 00007FF97B88F1E3 in module 'sqlite3.dll'. Read of address FFFFFFFFFFFFFFFF'. Process Project1.exe (7996)
Můj kód v Delphi je následující:
UniConnection.SpecificOptions.Values['EnableLoadExtension'] := 'True';
UniConnection.ExecSQL('SELECT load_extension(''pivot_vtab.dll'');');
UniQuery.sql.Text := 'select * from v_sales;';
UniQuery.ExecSQL; // tady vznikne chyba!!!
Popravdě, netuším kde nebo v čem může být problém ... poradíte někdo?
Předem děkuji za odpovědi, Pavel