Autor Téma: SQLite - chyby v SQL. Access ich nemá.  (Přečteno 2222 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional
Re:SQLite - chyby v SQL. Access ich nemá.
« Odpověď #15 kdy: 11-06-2016, 23:28:33 »
3.9 platilo pre staršiu verziu. Teraz je podporovaná 3.13.0. Ja som si DB pre istotu vytvoril odznova.
Citace
Upgraduje se jen samotna sqlite knihovna.
Ale to asi FireDAC automaticky neurobí. Ale ešte mi beží predplatné a snáď stihnem aj FB.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 154
  • Karma: 12
    • Verze Delphi: 7, 2007, XE2, XE5
Re:SQLite - chyby v SQL. Access ich nemá.
« Odpověď #16 kdy: 11-06-2016, 23:58:59 »
On firedac nepouziva standardni sqlite3.dll? Jestli ano, pak stavi nahradit tuto knihovnu novejsi verzi.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional
Re:SQLite - chyby v SQL. Access ich nemá.
« Odpověď #17 kdy: 12-06-2016, 09:59:00 »
Neviem ako funguje. A skontrolovať to ma napadlo až po vypnutí NB :)  Keď som sa zbavil napätia.
Tá knižnica nikde nie je :(
« Poslední změna: 12-06-2016, 10:09:56 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Daniel_Andrascik

  • Hrdina
  • ****
  • Příspěvků: 397
  • Karma: 15
    • Verze Delphi: D2007, XE3
Re:SQLite - chyby v SQL. Access ich nemá.
« Odpověď #18 kdy: 12-06-2016, 15:32:34 »
Stano FireCAC ma defaultne zapnute staticke linkovanie dll kniznice do vysledneho exe. Bohuzial ale nevyhodou toho riesenia je ze aktualizacia sqlite kniznice je komplikovanejsia. Musis pre kompilator pripravit specialny obj subor ktory sa zakompiluje do exe suboru. Neda sa to urobit automaticky. Sam si to zrejme nedokazes pripravit a zalezi len na autoroch FireDACu ako casto budu tento obj subor aktualizovat (nebudem prekvapeny ak to bude len v case vydania noveho RAD studia). Vyhodou zase je ze ak si aplikaciu odladis na prave pouzitu verziu sqlitu tak nemusis mat obavi ze si niekedy k aplikacii hoci aj omylom nahras inu verziu dll a zacne ti to robit problemi (mne sa presne toto stalo).

No ale aj u FireDACu si vies staticke linkovanie vypnut a mozes kludne pouzivat externe dll. Tu mas k tomu zakladny pokec:

http://docwiki.embarcadero.com/RADStudio/Berlin/en/Connect_to_SQLite_database_(FireDAC)

Inac to aku verziu dll pouzivas si vies overit aj cez SQL dotaz:

Kód: [Vybrat]
SELECT sqlite_version();
A kludne si mozes vzdy pri starte aplikacie kontrolovat ktoru verziu dll pouzivas a mozes na to vhodnym sposobom reagovat. Trebarz aj odmietnut fungovanie a vyziadat vymenu dll za spravnu verziu.

Offline Daniel_Andrascik

  • Hrdina
  • ****
  • Příspěvků: 397
  • Karma: 15
    • Verze Delphi: D2007, XE3
Re:SQLite - chyby v SQL. Access ich nemá.
« Odpověď #19 kdy: 12-06-2016, 15:49:00 »
Vyplati se sledovat changelogy. Vis o opravenych chybach, ale vis i o novych vlastnostech, ktere mohou byt velmi uzitecne. Akorat ten firedac ci jine univerzalni frameworky ty novinky nikdy nedokaze vyuzit. Sqlite ale neni nahrada za jine databaze, jeho pouziti je silne prave v oblastech, kde by velka databaze byla ponekud na hlavu. Proto je snaha o preklopeni stavajici databaze do sqlite trochu posetila. A proto mi prijde lepsi pouzit nejaky lehky wrapper usity na miru, s moznosti primeho volani sqlite api.

Inac FireDAC ma aj unitu: FireDAC.Phys.SQLiteWrapper. A na tomto odkaze http://docwiki.embarcadero.com/RADStudio/Seattle/en/Using_SQLite_with_FireDAC na konci uvadzaju ze sa jedna o low level wraper pre co najvacsie vyuzitie moznosti a vykonu SQLite. Zatial som to nepouzil a bohuzial nie je to oficialne dokumentovane a podporovane, ale ak som tomu dobre porozumel tak highlevel firedac pre SQLite prave bezi nad tymto wraperom, takze sa nemusis obavat ze by to neudrziavali. Ale tiez by si sa stano musel pripravit na to ze zrejme prides o TDataset. Ale ked geby spomina ze je niekedy lepsie pouzit nejaky lite wraper, k comu sa aj ja velakrat priklanam, tak zvycajne tieto lite wrapere TDataset nepodporuju pretoze TDataset nie je zrovna lite. Ale budu aj take aj take. Ale myslim stano ze pre teba bude najlepsie pouzivat FireDac sposobom ako si zvyknuty. Len si ked tak vypni to staticke linkovanie dllky jak som ti pisal vyssie.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional
Re:SQLite - chyby v SQL. Access ich nemá.
« Odpověď #20 kdy: 12-06-2016, 17:11:58 »
Citace
Ale myslim stano ze pre teba bude najlepsie pouzivat FireDac sposobom ako si zvyknuty.
S tým plne súhlasím. :)  Ja mám svoje triedy postavené na datasetoch. Pravdu povediac, ja si neviem predstaviť prácu s DB bez datasetu.
Citace
Len si ked tak vypni to staticke linkovanie dllky jak som ti pisal vyssie.
Naštudujem si to a možno aj skúsim.
Ale ako písal geby, tak predpokladám, že chybu so SUM má na svedomí samotný SQLiteWrapper. A je to úplne posledné SQL SELECT pred záverom - zobrazením zostavy.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Daniel_Andrascik

  • Hrdina
  • ****
  • Příspěvků: 397
  • Karma: 15
    • Verze Delphi: D2007, XE3
Re:SQLite - chyby v SQL. Access ich nemá.
« Odpověď #21 kdy: 12-06-2016, 17:45:45 »
No predpokladam ze chyba ti nevybehne na riadku

Kód: [Vybrat]
 
  FDQuery.Open;

ale az na riadku

Kód: [Vybrat]
 
  MaxDate := DateToStr(FDQuery.Fields.Fields[0].AsDateTime);

V takom pripade uz bol SQL dotaz vykonany a uz iba Dataset nevie spravne previest hodnoty.

Ako to dopadne ked das toto?
Kód: [Vybrat]
 
  Stringova_premenna := FDQuery.Fields.Fields[0].AsString;

Predpokladam ze ti to vrati string 2016-09-04



Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional
Re:SQLite - chyby v SQL. Access ich nemá.
« Odpověď #22 kdy: 12-06-2016, 17:50:04 »
To už zmizlo vytvorením novej DB v poslednej verzii SQLiteStudio. Ale ostalo mi tam visieť (viď príspevok #3)
Kód: [Vybrat]
    'SELECT Sequence.*,'+
    ' (SELECT COUNT(*)'+
    ' FROM (SELECT TempResult.FKMembers, Sum(TempResult.Score) AS SumScore'+
    ' FROM TempResult GROUP BY TempResult.FKMembers) AS xxx'+
    ' WHERE xxx.SumScore >= Sequence.SumScore1) AS Ranking'+
    ' FROM (SELECT TempResult.FKMembers, total(TempResult.Score) AS SumScore'+  // TU !!!
    ' FROM TempResult GROUP BY TempResult.FKMembers) AS Sequence');
Padá to na total().
Zjednodušenie, lebo ani ja neviem čo tam robím :D
Kód: [Vybrat]
SELECT Sequence.*, (SELECT COUNT(*) FROM (SELECTxxx)) AS Ranking FROM (SELECTSequence) AS Sequence
« Poslední změna: 12-06-2016, 18:10:10 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2648
  • Karma: 25
    • Verze Delphi: XE7 professional
Re:SQLite - chyby v SQL. Access ich nemá.
« Odpověď #23 kdy: 12-06-2016, 18:31:00 »
Už mi to beží.

Kód: [Vybrat]
'SELECT Sequence.*,'+som opravil nasledovne
Kód: [Vybrat]
'SELECT *,'+
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):