Autor Téma: Parametrizované príkazy  (Přečteno 1116 krát)

Offline egroups

  • Nováček
  • *
  • Příspěvků: 18
  • Karma: 0
Re:Parametrizované príkazy
« Odpověď #45 kdy: 21-12-2017, 09:04:26 »
Mrkni na Spring4D a Marshmallow.To je taky ORM framework a je zdarma.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3081
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Parametrizované príkazy
« Odpověď #46 kdy: 21-12-2017, 09:16:33 »
Radšej najprv dokončím jadro aplikácie >:(  a potom môžem špekulovať 8) . Za informáciu ďakujem.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 1961
  • Karma: 101
    • Verze Delphi: D2007, XE3, DX10
Re:Parametrizované príkazy
« Odpověď #47 kdy: 21-12-2017, 09:27:24 »
Neviem odhadnúť, čo by mi to prinieslo vzhľadom na skutočnosť, že nepoužívam žiadne vizuálne DB komponenty. Všetko je TSM.
Je nesmysl predelavat  rozdelany/nedokonceny projekt na ORM, jedine ze bycs to chtel vsechnu zahodit a zacit znovu :-) Je to uplne jine paradigma, myslet se musi v kategorii objektu a ne nejakych DB tabulek.

A hlavne: nejdriv je treba zjistit a radne otestovat, jak to maji s evoluci schematu, protoze vytvorit prazdnou DB z nejakych metadat je sranda, ale evoluovat metadata a DB scheme u DB naplnene daty, aby to zustalo konzistentni, to je IMHO pro prakticke nasazeni zasadni. Pokud to technologie nema, nema smysl IMHO o ORM vubec uvazovat.

Citace
Veď ma čaká:

Viz vyse, snad jenom poznamka k tem exception: v jazykach, ktere nemaji kontrolu na exceptions (jako ma treba Java), uz je jejich dodatecne montovani a osetrovani problematicke a nikdy nevede k dobrym vysledkum ani u vlastniho kodu, kdyz se do toho saha s odstupem, protoze system osetrovani ti vytvari jiny strom zavislosti, nez ten, ktery odpovida hierarchii volani subroutin, takze casto pak dochazi k situacim, ze sice nejak exception osetris, ale z logu pak nejsi schopen urcit, co, kde a proc se presne stalo. Samozrejme cim slozitejsi aplikace, tim hur. V tom jsou ty interaktivni UI zblitky jeste dobre

Online Delfin

  • Guru
  • *****
  • Příspěvků: 542
  • Karma: 25
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Parametrizované príkazy
« Odpověď #48 kdy: 21-12-2017, 14:56:19 »
Neviem odhadnúť, čo by mi to prinieslo vzhľadom na skutočnosť, že nepoužívam žiadne vizuálne DB komponenty. Všetko je TSM.
Je nesmysl predelavat  rozdelany/nedokonceny projekt na ORM, jedine ze bycs to chtel vsechnu zahodit a zacit znovu :-) Je to uplne jine paradigma, myslet se musi v kategorii objektu a ne nejakych DB tabulek.

A nejen to. I pro predelani toho projektu. Co by prinesl "entity framework" do jeho aplikace krome skryti databazove vrstvy? Zase by skoncil se sadou objektu pro ktere bude vytvaret pohledy. Potrebuje ale ty objekty? Potrebuje ze schematu vytvorit sadu trid kterou bude v aplikaci pomoci kodu zase sjednocovat do unifikovanych zobrazovacu? Podle me ne.

Jinak ohledne "automatizace" generovani skriptu nebo plneni parametru, kdyz uz mas jednou ty tridy deklarovane, tak staci rozsirene RTTI abys popsal jakykoli objekt a je snadne iterovat jeho polemi, zkontrolovat pripadne atributy a sbirat si bud jejich datove typy nebo hodnoty (instanci) pro vytvoreni skriptu nebo naplneni kolekce parametru. To vse se da vycist uz ted napr. z JSON serializace (kdo nevi jak) kterou ma Delphi v sobe, jen misto skladani JSON budes psat bud CREATE skripty tabulek nebo plnit parametry dataset objektu (migrace na urovni nebude zrovna jednoducha). No a ty objekty samozrejme s dedicnosti, tzn. ze superobjekt bude mit vse co maji entity spolecne.

Jen bych se spis do budoucna zamyslel, jestli vubec potrebuje ty objekty - to totiz zase zavani psanim spousty kodu. Popis entit v podobe datasetu IMHO pro jeho typ aplikace staci.
« Poslední změna: 21-12-2017, 15:09:18 od Delfin »
Shiny disco balls! I don't like :)

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 1961
  • Karma: 101
    • Verze Delphi: D2007, XE3, DX10
Re:Parametrizované príkazy
« Odpověď #49 kdy: 21-12-2017, 15:24:53 »
Potrebuje ale ty objekty? Potrebuje ze schematu vytvorit sadu trid kterou bude v aplikaci pomoci kodu zase sjednocovat do unifikovanych zobrazovacu? Podle me ne.
Nevim, co potrebuje on, ale ja bych objekty na urovni ViewModelu potreboval resp. si ne,dovedu predstsavit, ze bych je nemel, abych mohl hodnoty anotovat a tim mj. zajistit I18N, definovat validatory pro prevzeti hodnot z ksichtu, definovat formaty zobrazeni atd. tj. deklarativne ridit ksicht z jendoho mista co nejvic to jde. A ten view uz je pak jenom nejaky intepretr tech anotaci + trocha layout, stylovani etc...

Alre samozrejme ho k tomu nenabadam, kdyz k tomu sam nedospel.

Online Delfin

  • Guru
  • *****
  • Příspěvků: 542
  • Karma: 25
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Parametrizované príkazy
« Odpověď #50 kdy: 21-12-2017, 15:55:23 »
Potrebuje ale ty objekty? Potrebuje ze schematu vytvorit sadu trid kterou bude v aplikaci pomoci kodu zase sjednocovat do unifikovanych zobrazovacu? Podle me ne.
Nevim, co potrebuje on, ale ja bych objekty na urovni ViewModelu potreboval resp. si ne,dovedu predstsavit, ze bych je nemel, abych mohl hodnoty anotovat a tim mj. zajistit I18N, definovat validatory pro prevzeti hodnot z ksichtu, definovat formaty zobrazeni atd. tj. deklarativne ridit ksicht z jendoho mista co nejvic to jde. A ten view uz je pak jenom nejaky intepretr tech anotaci + trocha layout, stylovani etc...

Co popisujes uz maji vicemene napr. TField potomci. Kdyz ta nastaveni vystrcis ven do editoru, nemusis psat ani carku aplikacniho kodu a (znaly, opravneny) uzivatel si muze vse "naklikat" v runtime. Porad totiz chapu spravu domu jako editor tabulek s agregacnimi vypocty (a sadu reportu). Jiste, tvorba takoveho "framework" mozna zabere cas, ale je treba brat v potaz kolik casu se da nasledne usetrit - nehlede na pouzitelnost v dalsich podobnych aplikacich (a kdyz na to prijde, fakturovat zakaznikovi pak muzes ne za psani opakovaneho kodu a build aplikace, ale jen "klikani" ve vlastnim editoru pohledu).
Shiny disco balls! I don't like :)

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 1961
  • Karma: 101
    • Verze Delphi: D2007, XE3, DX10
Re:Parametrizované príkazy
« Odpověď #51 kdy: 21-12-2017, 16:24:17 »
Co popisujes uz maji vicemene napr. TField potomci.
No v omezenem rozsahu ano, ale me to prijde jako cesta zpatky do minuleho stoleti. Pouziti anotovanych ViewModelu a introspekce pri praci s daty je daleko obecnejsi.

Kdyz to vezmu za sebe, tak uz na prelomu stoleti jsme zacali pouzivali VTV s in-place editovanim v gridech/stromech nad jednoduchym vlastnim ORM a za poslednich rekneme ~16 let jsem s DB zastaralym spusobem pres SQL delal asi tak 3 roky, jinak ORM z Djanga, Hibernate, EF... Zkratka, ja kdyz to neni opravdu, ale opravdu nezbytne nutne, tak ten sr*ckoidni SQL obejdu obloukem :-)

Offline Miroslav Baláž

  • Plnoletý
  • ***
  • Příspěvků: 119
  • Karma: 4
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Parametrizované príkazy
« Odpověď #52 kdy: 21-12-2017, 16:51:22 »
No. SQL by som celkom nezatracoval. ORM moze pomahat. Ale nie vsade.
S nakladakom, sa nezmestim vzdy nutne tam, kde prejde skuter..
A nie vsetky skutre su sr*ck-y
« Poslední změna: 21-12-2017, 16:53:02 od mibainfo »

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 1961
  • Karma: 101
    • Verze Delphi: D2007, XE3, DX10
Re:Parametrizované príkazy
« Odpověď #53 kdy: 21-12-2017, 17:01:17 »
No. SQL by som celkom nezatracoval.
Ja ho taky celkem nezatracuju, jen u me ma mezi "neprateli lidu" pomerne cestne misto hned za komunisty, neomarxisty, pravdolaskari a VB/PHP strikaci ;-)

Offline Miroslav Baláž

  • Plnoletý
  • ***
  • Příspěvků: 119
  • Karma: 4
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Parametrizované príkazy
« Odpověď #54 kdy: 21-12-2017, 17:19:05 »
Ja tiez nejazdim na motorkach :)

Online Delfin

  • Guru
  • *****
  • Příspěvků: 542
  • Karma: 25
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Parametrizované príkazy
« Odpověď #55 kdy: 21-12-2017, 18:56:27 »
Co popisujes uz maji vicemene napr. TField potomci.
No v omezenem rozsahu ano, ale me to prijde jako cesta zpatky do minuleho stoleti. Pouziti anotovanych ViewModelu a introspekce pri praci s daty je daleko obecnejsi.

To ano. Ani jsem tim nechtel radit k pouziti tech hnusnych DB aware komponent, tezkopadne smykat kurzorem objektem datasetu pro ziskani jednotlivych zaznamu, nebo dokonce pouzivat Dead Binding. Myslel jsem na vlastni framework ktery vsak nebude pracovat s tridami entit, ale abstraktnejsim data storage (ala dataset).
Shiny disco balls! I don't like :)

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 1961
  • Karma: 101
    • Verze Delphi: D2007, XE3, DX10
Re:Parametrizované príkazy
« Odpověď #56 kdy: 22-12-2017, 14:19:35 »
Myslel jsem na vlastni framework ktery vsak nebude pracovat s tridami entit, ale abstraktnejsim data storage (ala dataset).
Mozna, ze i s tou myslenkou by se dalo udelat neco pokrokoveho  ;)
Design-Time editor datasetu vytahava odkazy na pole z datasetu do formu nebo DM, aby se obesla nutnost je vyhledavat v run-time at uz pomoci FieldByName nebo Fields[ i ] (ty hnusny zavorky kolem [ a ] tam davam protoze tomu softu neumim rict, aby to neintepretoval jako tagy):
Kód: Delphi [Vybrat]
  1. TDataModuleXyz = class(TDataModule)
  2.     cdsXyz: TClientDataSet;
  3.     cdsXyzId: TIntegerField;
  4.     cdsXyzIdent: TStringField;
  5.     ...
  6. end;
  7.  

Takze mozna by se z toho dal udelat anotovany ViewModel (nemam to rozmysleno, jen napad):
Kód: Delphi [Vybrat]
  1. [ ViewModel ... ]
  2. TDataModuleXyz = class(TDataModule)
  3.     cdsXyz: TClientDataSet;
  4.  
  5.     cdsXyzId: TIntegerField;
  6.  
  7.     [ Display(Name = "View_Orders_XyzIdentLabel", Prompt = "View_Orders_XyzIdentPrompt", Hint="View_Orders_XyzIdentPromptHint" ResourceType = typeof(WebGui)) ]
  8.     [ RegularExpression('^[ A-Z ]\d+$',
  9.       ErrorMessageResourceType = typeof(WebMsg), ErrorMessageResourceName = "ModelErr_Xxx_InvalidXyzIdent") ]
  10.     cdsXyzIdent: TStringField;
  11.     ...
  12.     [ Display(Name = "View_Orders_EventFromLabel", Prompt = "View_Orders_EventFromPrompt", Prompt = "View_Orders_EventFromHint", ResourceType = typeof(WebGui)) ]
  13.     [ Format(typeof(WebGui), nil, nil, ClientFormat = "d") ]
  14.     [ DateRange(DynamicMinimum = "minEventFromRange", DynamicMaximum = "maxEventFromRange") ]
  15.     cdsXyzEventFrom: TDateField;
  16.  
  17.     [ NotMapped ]
  18.     minEventFromRange: TDateTime;
  19.     [ NotMapped ]
  20.     maxEventFromRange: TDateTime;
  21.  
  22. end;
  23.  
To by sice trpelo neduhem, ze se neco musi naklikat a neco napsat v kodu, takze se samozrejme nabizi pridani dalsi anotace s vlastni definicí pole a vyrazeni debilniho klikani:
Kód: Delphi [Vybrat]
  1. [ ViewModel ... ]
  2. TDataModuleXyz = class(TDataModule)
  3.     cdsXyz: TClientDataSet;
  4.  
  5.     [ FieldDef(Name=Id, Type=tfInteger,  Nullable=False) ]
  6.     cdsXyzId: TIntegerField;
  7.  
  8.     [ FieldDef(Name=(Ident, Type=tfString, Size=64, Nullable=False) ]
  9.     [ Display(Name = "View_Orders_XyzIdentLabel", Prompt = "View_Orders_XyzIdentPrompt", Hint="View_Orders_XyzIdentPromptHint" ResourceType = typeof(WebGui)) ]
  10.     [ RegularExpression('^[ A-Z ]\d+$',
  11.       ErrorMessageResourceType = typeof(WebMsg), ErrorMessageResourceName = "ModelErr_Xxx_InvalidXyzIdent") ]
  12.     cdsXyzIdent: TStringField;
  13.     ...
  14.     [ FieldDef(Name=(EventFrom, Type=ftDate, Nullable=True) ]
  15.     [ Display(Name = "View_Orders_EventFromLabel", Prompt = "View_Orders_EventFromPrompt", Prompt = "View_Orders_EventFromHint", ResourceType = typeof(WebGui)) ]
  16.     [ Format(typeof(WebGui), nil, nil, ClientFormat = "d") ]
  17.     [ DateRange(DynamicMinimum = "minEventFromRange", DynamicMaximum = "maxEventFromRange") ]
  18.     cdsXyzEventFrom: TDateField;
  19.     ...
  20. end;
  21.  
No a kdyz uz jsme to dotahli sem, tak je otazka, jestli jeste stale na neco potrebujeme TFields nebo mame pokracovat v navrhu a nebo se na to vybodnout a pouzivat nejaky existujici ORM :-)


Online Delfin

  • Guru
  • *****
  • Příspěvků: 542
  • Karma: 25
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Parametrizované príkazy
« Odpověď #57 kdy: 22-12-2017, 15:20:16 »
No a kdyz uz jsme to dotahli sem, tak je otazka, jestli jeste stale na neco potrebujeme TFields nebo mame pokracovat v navrhu a nebo se na to vybodnout a pouzivat nejaky existujici ORM :-)

K te ukazce; ja myslel jeste na jeste abstraktnejsi reseni :)

Co uvadis jsou definice poli entity v kodu, byt u nich uz odpadla nutnost tvorit pohled (coz by se specifickymi tridami entit obecne slo leda pomoci RTTI) - byly by soucasti dataset objektu ktery je zobrazitelny a daji se pro nej vytvorit agregacni vypocty ba dokonce reporty. Nicmene, i ten dataset se da popsat pomoci nejake konfiguracni sablony (napr. v souboru) vcetne formatu poli etc. a vytvorit v runtime. Stejne jako definice pohledu na nej (vcetne pravidel pro stylovani podle hodnot). Samozrejme pro specialni pripady by byla stale moznost si takovou entitu vytvorit a pracovat s ni v kodu. Pro jednoduche editory tabulek bys ale nemusel napsat ani carku kodu, natoz aplikaci znovu buildovat - namisto toho bys jen nejakym runtime editorem naklikal co chces zobrazit a jak.

ORM pro Delphi jsem nezkoumal a nevim jestli je nektery natolik abstraktni. IMHO se budou drzet samotne definice ORM, a to je konverze dat do objektu, tedy definic trid znamych pri prekladu a psani kodu s nimi.
« Poslední změna: 22-12-2017, 15:22:41 od Delfin »
Shiny disco balls! I don't like :)

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 1961
  • Karma: 101
    • Verze Delphi: D2007, XE3, DX10
Re:Parametrizované príkazy
« Odpověď #58 kdy: 22-12-2017, 18:11:22 »
...
Stejne jako definice pohledu na nej (vcetne pravidel pro stylovani podle hodnot). Samozrejme pro specialni pripady by byla stale moznost si takovou entitu vytvorit a pracovat s ni v kodu. Pro jednoduche editory tabulek bys ale nemusel napsat ani carku kodu, natoz aplikaci znovu buildovat - namisto toho bys jen nejakym runtime editorem naklikal co chces zobrazit a jak.
Neni mi jasne, k cemu by to melo byt dobre:
  • Uz pred Delphi existovaly zanikle VisualObjects, ktere umely automaticky z DB dat vytvorit CRUD editor s nejakym default layoutem, i kdyz kompilovanym
  • Jestli si to dobre pamatuju, tak ve frameworku Django byly vsechny CRUD v cele administratorske sekci, kde prd zalezelo na grafickem designu, taky generovany automaticky. A neprekladalo se, protoze Python...
  • Kdyz to nechces kompilovat, chces snad vytvaret neco jako FastReport s moznosti CRUD? Tomu taky predhodis nejaky model v podobe datasetu, ma klikatko a vysledek nacpe do XML s nejakymi proprietarnimi zmolky dat
  • Nebo se chystas na neco jako XAML z WPF, ktery se take nepreklada, view ma widgety zhruba na urovni Opice, triggery, styly, binding na model etc...  a misto na objektovym modelem chces radit nad datasetem
  • nebo...
Nejak my smysl takoveho zameru unika...

Citace
IMHO se budou drzet samotne definice ORM, a to je konverze dat do objektu, tedy definic trid znamych pri prekladu a psani kodu s nimi.
Ano, ORM neni nic jineho nez ten relacni svet dostat do objektoveho a zpatky. Ale v tom objektovem svete muzes anotovat, pouzivat introspekci a vsechno co ti moderni jazyky a prostredi nabizeji a pokud se toho ucastni prekladac, tak zkontrolovat radu veci v dobe prekladu a ne az pri ladeni

Online Delfin

  • Guru
  • *****
  • Příspěvků: 542
  • Karma: 25
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Parametrizované príkazy
« Odpověď #59 kdy: 22-12-2017, 19:55:25 »
...
Stejne jako definice pohledu na nej (vcetne pravidel pro stylovani podle hodnot). Samozrejme pro specialni pripady by byla stale moznost si takovou entitu vytvorit a pracovat s ni v kodu. Pro jednoduche editory tabulek bys ale nemusel napsat ani carku kodu, natoz aplikaci znovu buildovat - namisto toho bys jen nejakym runtime editorem naklikal co chces zobrazit a jak.
Neni mi jasne, k cemu by to melo byt dobre:
  • Uz pred Delphi existovaly zanikle VisualObjects, ktere umely automaticky z DB dat vytvorit CRUD editor s nejakym default layoutem, i kdyz kompilovanym

Asi neco takoveho. Jen bez nutnosti kompilace, vlastnorucne napsane (a tudiz upravitelne i pro pripad tvorby extra funkcionality, kde je treba psat extra Delphi kod s buildem aplikace); vzdyt muzu potrebne vytvorit "nazivo" v runtime s okamzitym pohledem na vysledek - a navrhovat by slo i oboustranne - ze schematu nabidnout modely tabulek pro tvorbu pohledu, nebo z "naklikaneho" modelu tabulky ji vytvorit v DBMS pomoci vygenerovaneho CREATE prikazu.

Me totiz porad unika proc pro "jednoduchy editor" tabulek a reportovac psat a buildovat dokola aplikaci pro kazdou z nich :P Nebo deklarovat v Delphi kodu kazdou entitu kdyz by pak byly de-facto nevyuzite v pripade spolecne funkcionality.
« Poslední změna: 22-12-2017, 20:22:59 od Delfin »
Shiny disco balls! I don't like :)

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):