Autor Téma: SQLite a DBase - "FileAge"  (Přečteno 1340 krát)

Offline PetrB0

  • Plnoletý
  • ***
  • Příspěvků: 167
  • Karma: 1
    • Verze Delphi: Delphi XE2, Delphi 10.2 Tokyo, Delphi 10.41
SQLite a DBase - "FileAge"
« kdy: 07-09-2020, 12:30:00 »
Ahoj,
postupně se prokousávám implementací DBase pod SQLite pod UniDac.  Nevíte, poskytuje SQLite nějakou funkci, která vrátí něco ve smyslu FileAge (tedy spíše TableAge) ? Jde mi o to, že mám dvě tabulky, kdy druhá se počítá (na vyžádání) z té první. Před uzavřením aplikace chci otestovat, zda ten výpočet proběhl. Napadlo mne, že nejlepší by bylo porovnat, která je mladší (která se naposledy editovala). Pokud je mladší jednička, nabídne se uživateli přepočet dvojky. Ale nevím, jak to udělat. Klasické (souborové) FileAge na adresáři otevřeném pod SQLite použit nemohu.

Díky

Pb

Offline Jirka

  • Hrdina
  • ****
  • Příspěvků: 497
  • Karma: 9
    • Verze Delphi: XE2
Re:SQLite a DBase - "FileAge"
« Odpověď #1 kdy: 07-09-2020, 14:20:09 »
Nebylo by lepší použít pomocnou tabulku s poli  TABLE_1_UPDATE_TIME a TABLE_2_UPDATE_TIME   typu DateTime , do které bys zapisoval datum a čas poslední aktualizace
a pak si při ukončovaní aplikace porovnal ?
Nevím jak to má ale SqLLite ale ve Firebirdu bych to řešel pomocí trigeru


Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3527
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:SQLite a DBase - "FileAge"
« Odpověď #2 kdy: 07-09-2020, 14:24:26 »
A je nejaky problem vytvorit extra tabulku s casem, na zacatku transakci ji vynulovat a pri commitu (po ukonceni vypoctu) nastavit na current_timestamp?

Co by se v SQLite dalo udelat, ze v te pocitane tabulce pridas extra pole a nechas ho pri insertu nastavit na default time. To je bez dalsi prace, ale bude to u kazdeho zaznamu:
Kód: SQL [Vybrat]
  1. TIMESTAMP DATETIME DEFAULT CURRENT_TIMESTAMP;

Offline PetrB0

  • Plnoletý
  • ***
  • Příspěvků: 167
  • Karma: 1
    • Verze Delphi: Delphi XE2, Delphi 10.2 Tokyo, Delphi 10.41
Re:SQLite a DBase - "FileAge"
« Odpověď #3 kdy: 07-09-2020, 15:53:13 »
No, obecně ano, ale toto je zpracování souborů DBase IV a vzhledem ke spolupráci se staršími aplikacemi si tam nemůžu moc vyskakovat. Tak jsem to trochu obešel. Před otevřením databáze si načtu klasické FileAge všech DBF souborů. Při zápisech si to aktualizuji a to potom v případě potřeby porovnávám. Funguje to jak potřebuji, ale není to tak přímočaré, jak jsem původně očekával.