Autor Téma: TDBTable - dynamicky vytvoriť polia  (Přečteno 201 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6867
  • Karma: 44
    • Verze Delphi: W10 + D11.1
TDBTable - dynamicky vytvoriť polia
« kdy: 03-10-2022, 18:43:22 »
Subform pre "číselníky". Štruktúra je vždy:
  • PrimaryKey
  • Title
Problém je v tom, že ak polia nevytvorím, tak názvy sú ''. To je problém pre funkciu
Kód: Delphi [Vybrat]
  1. function TjstIBCNavigator.LocateRecord(const PKeyValue: Integer; const FieldIdx: Integer = 0): Boolean;
  2. begin
  3.   if FieldIdx > 0 then  FPKeyName := FDataSource.DataSet.Fields.Fields[FieldIdx].FieldName;  // Tu dostávam ''
  4.   Result := FDataSource.DataSet.Locate(FPKeyName, PKeyValue, [loCaseInsensitive]);  // Samozrejme neúspech
  5. end;
Ak ich vytvorím, tak pri otváraní tabuľky dostanem
Citace
'ibtblCollection: Type mismatch for field 'IDDIVISIONS', expecting: Unknown actual: Integer
FField.DataType sa nedá nastaviť, lebo je OnlyRead.
Ako sa to dá vyriešiť?
.
Mohol by som tam hodiť tabuľku pre každý prípad. To nie je čisté a hlavne nie univerzálne!
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6867
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:TDBTable - dynamicky vytvoriť polia
« Odpověď #1 kdy: 05-10-2022, 12:55:18 »
Prišlo mu na um takéto riešenie
  • v čase návrhu použiť jednu tabuľku a vygenerovať v nej polia
  • v čase behu nastaviť vlastnosti, ktoré sa menia
Sú to hlavne
  • Názov tabuľky
  • Názov prvého poľa - primárny kľúč
To by podľa mňa malo fungovať.
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6867
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:TDBTable - dynamicky vytvoriť polia
« Odpověď #2 kdy: 05-10-2022, 16:40:32 »
Nejde mi to.
  • Parametre nastavujem ešte pred otvorením tabuľky
  • Programovo otvorím tabuľku. Kedy sa otvorí v skutočnosti, to netuším
  • Pri Locate sa v FDataSource.DataSet.Fields.Fields[0].FieldName načíta pôvodný názov
  • Na otvorenej tabuľke sa to zmeniť nedá
Asi mi neostáva nič iné, len použiť pre každý prípad samostatnú tabuľku.

Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6867
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:TDBTable - dynamicky vytvoriť polia
« Odpověď #3 kdy: 05-10-2022, 17:35:38 »
Už som zistil kde je problém. V mojom komponente.
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.