Forum Delphi.cz

FreePascal (FPC) a Lazarus => Obecné => Téma založeno: milos 13-11-2018, 12:39:28

Název: Aliasy pre stlpce tabulky.
Přispěvatel: milos 13-11-2018, 12:39:28
Zdar pani,

mam dalsi zaciatocnicky dotaz. Ako riesite definiciu, ulozenie alias - ov pre stlpce tabulky.
Formular, pole, table?
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: milos 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"
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: vandrovnik 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).
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: Stanislav Hruška 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!
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: milos 15-11-2018, 08:10:22

Diky chlapi za reakciu,

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


Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: milos 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';
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: Stanislav Hruška 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ň?
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: milos 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.
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: Stanislav Hruška 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.
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í.
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: milos 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.
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: Stanislav Hruška 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 (https://forum.delphi.cz/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.
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: milos 16-11-2018, 12:27:01
Hmmm... link mi nak nejde.
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: milos 16-11-2018, 12:28:03
Ide TDictionary aj v Lazarus - e?
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: Stanislav Hruška 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 (http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Generics.Collections.TDictionary)[/size]
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: Stanislav Hruška 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
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: Stanislav Hruška 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.
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: pf1957 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
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: milos 16-11-2018, 21:51:30
hmm.. takze usporne riesenie predanim pointra by vypadalo ako?
sry - som skor C positiv
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: pf1957 17-11-2018, 17:42:46
http://bfy.tw/Kubh (http://bfy.tw/Kubh)
Název: Re:Aliasy pre stlpce tabulky.
Přispěvatel: milos 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".