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

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 217
  • 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ů: 5305
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 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?
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1068
  • Karma: 47
    • 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ů: 216
  • Karma: 9
    • Verze Delphi: 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í.
Win10 Prof 64b, Firebird 2.5

Offline age.new

  • Plnoletý
  • ***
  • Příspěvků: 217
  • 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.