Autor Téma: Aliasy pre stlpce tabulky.  (Přečteno 11659 krát)

Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Aliasy pre stlpce tabulky.
« kdy: 13-11-2018, 12:39:28 »
Zdar pani,

mam dalsi zaciatocnicky dotaz. Ako riesite definiciu, ulozenie alias - ov pre stlpce tabulky.
Formular, pole, table?

Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Aliasy pre stlpce tabulky.
« Odpověď #1 kdy: 14-11-2018, 14:44:56 »
Hmmm... neviem ako sa to spravne vola, uvediem priklad:

select cas AS čas, datum AS dátum from tabulka.
Mno a ide mi o rozumny sposob zadefinovania nazvov: čas, dátum, kedze zadavat ho priamo do string - u pre SQL ma svoje "uskalia"

Online vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1596
  • Karma: 52
    • Verze Delphi: 11.3
Re:Aliasy pre stlpce tabulky.
« Odpověď #2 kdy: 14-11-2018, 14:51:17 »
Do SQL bych ty texty pro zobrazení určitě nedával - bude s tím hromada problémů (diakritika, mezery, max. délka, případný překlad do jiného jazyka...). Používám DisplayLabel u tField (v mém případě dvakrát kliknu na tIbDataSet, kliknu pravým tlačítkem, Add all fields; pak označím pole a přepíšu DisplayLabel).

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Aliasy pre stlpce tabulky.
« Odpověď #3 kdy: 14-11-2018, 15:50:03 »
Ako píše vandrovnik. Buď využiješ DB komponenty a ich vlastnosti (Alias alebo DisplayLabel), alebo si budeš musieť niekde vytvoriť vlastné zoznamy a ťahať to z nich. V žiadnom prípade v SQL!
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Aliasy pre stlpce tabulky.
« Odpověď #4 kdy: 15-11-2018, 08:10:22 »

Diky chlapi za reakciu,

Predpokladam ze samotny nazov je potom ulozeny v nakom form - e, alebo kode.



Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Aliasy pre stlpce tabulky.
« Odpověď #5 kdy: 15-11-2018, 10:36:18 »
Tak nateraz som to vyriesil strukturou ssel

  ssel.sel:= 'select ID,Cislo,DEN,OD,OBSAH,VYBAVUJE from TMP_ZAL';
  ssel.als:= 'id,číslo,deň,od,obsah,vybavuje';

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Aliasy pre stlpce tabulky.
« Odpověď #6 kdy: 15-11-2018, 15:30:19 »
To nie je žiadna štruktúra, ale prostý text. S tým sa Ti bude robiť zle. Máš niekoľko možností. Napr:
- Dictionary. Ja som za túto možnosť
- Vymenované typy Type

No, ten preklad sa mi vôbec nepáč.
1, Na začiatku je dobre použiť veľké písmeno
2, Napr. aké číslo, čo za deň?
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Aliasy pre stlpce tabulky.
« Odpověď #7 kdy: 16-11-2018, 08:59:20 »
Snazil som sa byt strucny, preto je to nezrozumitelne. Zalozil som strukturu, ktoru posielam univerzalnemu formularu:

Kód: [Vybrat]
type sql = record
  sel: string;
  als: string;
end;
..
..
..
procedure TF_Main.TreeView1DblClick(Sender: TObject);
var
  ssel: sql;
  begin
  ssel.sel:= 'select ID,Cislo,DEN,OD,OBSAH,VYBAVUJE from TMP_ZAL';
  ssel.als:= 'id,číslo,deň,od,obsah,vybavuje';
  case  TreeView1.Selected.Text of
        'Zamestnanec':
          begin
            f1:= Tf_aut1.Create(self,ssel);
            f1.Parent := Panel1;
            f1.DBGrid1.SetFocus;
          end;
  end;
end;

Do buducna je pripraveny mechanizmus pre dalsie parametre.
Ten string je len "citatelnejsie" zadefinovanie nazvov, ktore samozrejme rozdelim do pola. Nebyt vhodneho objektu "TSringList", nerobil bych to.
Rad bych vediet, ako pascal predava onu strukturu, ci celu, alebo len pointer na nu.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Aliasy pre stlpce tabulky.
« Odpověď #8 kdy: 16-11-2018, 09:47:47 »
Ja by som to tak nerobil. Dôvod je ten, že to nie je univerzálne riešenie. Pri každej zmene budeš musieť upravovať kód, až Ťa to celkom dorazí a prerobíš to :)


Taký stručný návod, ako to riešiť pomocou Dictionary.
  • vytvoríš si Dictionary a v ňom si dáš názvy všetkých polí aj s prekladom. Pri novom poli ho len doplníš do Dictionary. A už nikde inde nebudeš nič meniť.
  • V cykle budš prechádzať zoznam polí. Je jedno či to bude table alebo query. Jednoducho to je dataset
  • Každému poľu pomocou Dictionary priradíš alias = preklad
  • To Ti umožňuje jednoducho urobiť preklad do viacerých jazykov
Poznámka: Ja by som ten Tvoj zoznam teda upravil. Napr. tako, nakoľko nepoznám presný význam jednotlivých stĺpcov
'id,číslo,deň,od,obsah,vybavuje'
'I.č./Poradie/Číslo dokumentu, Číslo dokumentu, Dátum/Zo dňa/Dňa, Od, Obsah/Predmet/účel/, Vybavuje'
ID BFU nič nehovorí.
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Aliasy pre stlpce tabulky.
« Odpověď #9 kdy: 16-11-2018, 11:47:00 »
Nepoznam Dictionary, budem vdacny za naky link.

Praveze toto riesenie mi umozni len jednoduchou zmenou retazca doplnit, zmenit select, alias.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Aliasy pre stlpce tabulky.
« Odpověď #10 kdy: 16-11-2018, 12:19:49 »
Napíšem TDictionary, stlačím F1 a som na stránke
ms-help://embarcadero.rs_xe7/libraries/System.Generics.Collections.TDictionary.html
Citace
Praveze toto riesenie mi umozni len jednoduchou zmenou retazca doplnit, zmenit select, alias.
Z toho mi vyplýva, že neprogramuješ dlho. Alebo sa mýlim?
Ešte raz zopakujem: koľko tých reťazcov budeš mať? To pri každej zmene v štruktúre DB ich budeš kontrolvať, doplňovať, mazať a pod.?
To je x príležítostí urobiť chybu.
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Aliasy pre stlpce tabulky.
« Odpověď #11 kdy: 16-11-2018, 12:27:01 »
Hmmm... link mi nak nejde.

Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Aliasy pre stlpce tabulky.
« Odpověď #12 kdy: 16-11-2018, 12:28:03 »
Ide TDictionary aj v Lazarus - e?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Aliasy pre stlpce tabulky.
« Odpověď #13 kdy: 16-11-2018, 12:41:41 »
Prepáč, neuvedomil som si, že nie som v Delphi :-[  Lazarus vôbec nepoznám.
Tento snáď pôjde[size=78%]http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Generics.Collections.TDictionary[/size]
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Aliasy pre stlpce tabulky.
« Odpověď #14 kdy: 16-11-2018, 12:54:00 »
Na internete som našiel toto:
Or try the 3.2.0-beta lazarus installer snapshot mentioned here:

http://forum.lazarus.freepascal.org/index.php/topic,42265.msg294787.html#msg294787
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7430
  • Karma: 44
    • Verze Delphi: W11 + D11.3.1
Re:Aliasy pre stlpce tabulky.
« Odpověď #15 kdy: 16-11-2018, 12:56:41 »
Ešte jedna zásadná poznámka: pri definícii DB, v zdrojákoch a pod. sa má/musí používať zásadne len angličtina.
Win11 64b, Delphi 12.2, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3534
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Aliasy pre stlpce tabulky.
« Odpověď #16 kdy: 16-11-2018, 15:45:48 »
Rad bych vediet, ako pascal predava onu strukturu, ci celu, alebo len pointer na nu.
Ta struktura je record, ktery se snandardne predava hodnotou, pokud se nejedna o var resp. const argument

Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Aliasy pre stlpce tabulky.
« Odpověď #17 kdy: 16-11-2018, 21:51:30 »
hmm.. takze usporne riesenie predanim pointra by vypadalo ako?
sry - som skor C positiv

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3534
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Aliasy pre stlpce tabulky.
« Odpověď #18 kdy: 17-11-2018, 17:42:46 »

Offline milos

  • Nováček
  • *
  • Příspěvků: 12
  • Karma: 0
Re:Aliasy pre stlpce tabulky.
« Odpověď #19 kdy: 18-11-2018, 10:35:54 »
Takze po prehliadnuti uvedeneho linku - dik pf1957, ale aj inych som vzdal riesenie cez "Pointer, @, ^ " - hoc po nahliadnuti do "\src" je aj tento sposob vyuzivany a  nechal to na prekladaci pouzitim "var" a "const".