Autor Téma: TIBDatabase - zjištění názvů sloupců ve skutečném pořadí  (Přečteno 93 krát)

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 138
  • Karma: 0
Dobrý den,

používám komponentu TIBDatabase u které existuje procedura GetFieldNames která naplní stringlist názvy sloupců v abecedním pořadí. Existuje nějaký způsob, jak získat seznam sloupců v pořadí v jakém skutečně jsou, tj. tak jak se vytvořili?

Jelikož jsem nic nenašel, používám při každém spuštění příkat ALTER TABLE ... ALTER ... POSITION který přesune každý sloupec na správnou pozici. Je to ale časově náročné a v 99.999% případů zbytečné, pokud například nedošlo k přidání dalšího sloupe.

Děkuji.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4661
  • Karma: 40
    • Verze Delphi: XE7 professional
Re:TIBDatabase - zjištění názvů sloupců ve skutečném pořadí
« Odpověď #1 kdy: 11-02-2020, 09:45:33 »
Vlastná funkcia nejako takto?
Kód: [Vybrat]
  for I := 0 to Table.Fields.Count - 1
    StringList.Add(Table.Fields.Fields[I].Name)  // OriginalName?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 897
  • Karma: 46
    • Verze Delphi: 10.3
Re:TIBDatabase - zjištění názvů sloupců ve skutečném pořadí
« Odpověď #2 kdy: 11-02-2020, 10:06:51 »
Excellent
Rated 1 time
Ahoj, něco jako:

Kód: [Vybrat]
SELECT
 a.RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS a
WHERE (a.RDB$RELATION_NAME='SESTAVY') and ((a.RDB$SYSTEM_FLAG IS NULL) or (a.RDB$SYSTEM_FLAG=0))
ORDER BY a.RDB$FIELD_POSITION

Proč Ti vlastně záleží na pořadí polí?

Offline KarelHorky

  • Plnoletý
  • ***
  • Příspěvků: 206
  • Karma: 8
    • Verze Delphi: 7, XE6, Delphi 10.2 Tokyo
Re:TIBDatabase - zjištění názvů sloupců ve skutečném pořadí
« Odpověď #3 kdy: 11-02-2020, 10:31:08 »
V selectu bys neměl používat *, ale vyjmenovat sloupce, které potřebuješ a v pořadí, jakém je chceš. Jinak si zbytečně taháš všechny sloupce a v neznámém pořadí.

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 138
  • Karma: 0
Re:TIBDatabase - zjištění názvů sloupců ve skutečném pořadí
« Odpověď #4 kdy: 11-02-2020, 11:01:02 »
Ahoj, něco jako:

Kód: [Vybrat]
SELECT
 a.RDB$FIELD_NAME
FROM RDB$RELATION_FIELDS a
WHERE (a.RDB$RELATION_NAME='SESTAVY') and ((a.RDB$SYSTEM_FLAG IS NULL) or (a.RDB$SYSTEM_FLAG=0))
ORDER BY a.RDB$FIELD_POSITION

Proč Ti vlastně záleží na pořadí polí?

Super - to je přesně co hledám. Jednoduché a rychlé. Děkuji.