Autor Téma: FireDAC + SQLite - TFDTable - Indexy  (Přečteno 243 krát)

Offline ShaneZB

  • Nováček
  • *
  • Příspěvků: 28
  • Karma: 0
  • HJ-SOFT s.r.o.
    • Verze Delphi: Delphi 10
FireDAC + SQLite - TFDTable - Indexy
« kdy: 08-06-2020, 09:06:50 »
Zdravím všechny
pracuji na přechodu z BDE na FireDAC. Jednou z funkčností, kterou nahrazuji je "lokální tabulka", na kterou jsme používali DBase formát tabulky. Místo ní teď používám SQLite - k vytvořené tabulce se (z důvodů kompatibility s původním kódem) přistupuje přes TFDTable - respektive přes potomka TTableFD.
Kód je zhruba tokovíhle:
Kód: Delphi [Vybrat]
  1.     with tabulka do
  2.       begin
  3.           FieldDefs.Add(FieldName, DataType, Size, Required);
  4.           Pol := FieldDefs[Pred(FieldDefs.Count)].CreateField(tabulka);
  5.         ...
  6.         IndexDefs.Add('Tag1', 'OBRAT', [ixDescending]);
  7.         CreateTable;
  8.         IndexName := 'Tag1';
  9.        Open; <-- tady to shoří na to, že nezná objekt [TAG1]
  10.       end;
  11.  
Když se nepoužije IndexName, ale IndexFieldsNames, tak je to OK. Ale tahle konstrukce je použita na mnoha místech a byl bych raději, kdyby se mi podařilo nějak TTableFD upravit tak, abych nemusel sahat do dalších unit.

Najde se někdo, kdo mě nakopne správným směrem?

Offline ShaneZB

  • Nováček
  • *
  • Příspěvků: 28
  • Karma: 0
  • HJ-SOFT s.r.o.
    • Verze Delphi: Delphi 10
Re:FireDAC + SQLite - TFDTable - Indexy
« Odpověď #1 kdy: 08-06-2020, 13:07:40 »
Odpovím si sám.
Problém byl v tom, že až v CreateTable TTableFD přiřazuju spojení na soubor databáze a jméno tabulky. A to způsobí výmaz seznamu indexů a tím pádem, se žádné indexy nezaloží. Stačilo si uložit definici indexů bokem pak ji vrátit.