Databáze > MS SQL

ADO - Multi query

(1/2) > >>

panjavlik:
Ahoj,

jsem Delphi začátečník a tvořím si pro radost. Narazil jsem na problematiku s kterou mi ani Google nepomohl a tak bych chtěl požádat radu zkušenějšcíh.

Používám:
1x TADOConnection v kterém mám nastavený "Connection string".
2x TADOQuery u které mám property "Connection" = "TADOConnection",  dále "SQL" s dotazem do DB.


1. Potřebuji rozdělit data za TADOQuery1 do 3 tabulek a nevím jakým způsobem lze filtrovat vstupní data do DBGrid (Používám LiveBinding v RAD Studio).
2. Když Close/Open obě TADOQuery, zůstávají mi vyset jako Session v Active Monitoru nad dotazovanou databází (do chvíle než "Neterminatnu" celý program) , zkoušel jsem "Closenout" s "Free" ale stále zůstávají vyset (TADOConnection mám KeepAlive zároveň je užit u obou query jako connection).

První problém je pro mě majoritní, přecejen tvořit kvůli rozdělení 2 další dotazy s WHERE se mi zdá jako hloupost :(

Mockrát děkuji za pomoc, vážím si každé rady.

Hezký den
JP

Radek Červinka:
Jedna Query = jeden DBGrid, grid zobrazuje data z te sve query a dynamicky z neho cte data.

Mas 2 moznosti:
- nahradit DBGrid za neco jineho (treba ListView v modu Report, nebo stringgrid) a ten naplnit, pak uz query nepotrebujes
- pouzit 3 query
 
Cim se lisi ty dotazy? Normalne bych ti poradit 3x mem table a ty plnit z toho jednoho query s nastavenim Filter.

Ale pokud chces DBGrida tak v tvem pripade bude lepsi po startu priradit kazde query nejaky SQL s parametrem, tj. query1.SQL .... , query2.sql...

Stanislav Hruška:
Keďže dopyty sa líšia iba v časti WHERE, tak je možné si celý SQLText, okrem WHERE uložiť do reťazca a tie WHERE do troch samostatných reťazcov Where1..3. Pri požiadavke na zmenu výberu v Query zmeniť text poskladaním z požadovaných reťazcov SQLTex + WhereN, DBGrid vyprázdniť a znova naplniť. S DBGrid nerobím, tak neviem ako to s ním je.
Vytvárať viac QUERY nie je až také strašné. Nezaberajú veľa pamäte. Ale ľahko sa stane, že sa v nich človek stratí.

Ja osobne používam vždy len jedno QUERY a texty vytváram dynamicky.
Pozor, odporúča sa do QUERY dať naraz celý kompletný SQLTex! Použitie Add() nie je práve najlepšie. Pri každom priradení textu sa totiž na pozadí vždy spúšťa jeho kontrola!

Stanislav Hruška:
Ešte mi prišla na um dôležitá vec. Vždy dôsledne používaj parametre!
Možno si vystačíš len s jedným textom a budeš iba meniť parametre. V takom prípade sa používa Query.Refresh.

panjavlik:
Dobrý večer ,

Moc děkuji za tak rychlé odpovědi, vážím si toho :-)

U mě je nejspíš problém i v tom , ze potřebuji naplnit 3 gridy z query na jednom formuláři.

Zajímavá mi přijde myšlenka naplnit memfile hodnotami a ten si pak snadno rozsekat jako zdroj pro string grid.

Používání dynamického query je skvělý nápad , mockrát diky za tip

Položil jsem dotaz , protože neznám možnosti Delphi a nevěděl jsem , zda-li neexistuje nějaká jednoduchá možnost přes property například :-)

Ohledně druhé otázky mi šlo o to , jestli nevadí ze mi na SQL serveru zůstávají v Activity monitory viset ty dotazy a zbytečně tak sql nedostává za uši :-)

Mockrát Vám děkuji ještě jednou

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi