Datagridview da sql server

lunedì 23 gennaio 2012 - 09.29
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows XP  |  Visual Studio 2010  |  SQL Server 2000  |  Office 2010  |  Office 2007  |  Office 2003  |  Crystal Reports XI

jjchuck Profilo | Senior Member

ciao a tutti
sono un novellino tuttavia mi trovo davanti ad un problema niente male per la mia inesperienza:
debbo realizzare un form con un datagrid composto da una decina di campi quasi tutti provenienti da diverse view (debbo legare diverse visualizzazioni perchè in una sola diventerebbe la divina commedia) come debbo fare?
Ovvero...debbo aggiungere un dataset per ogni query?
Premesso che sono campace di realizzare un datagrid con connessione eccc...ma mi chiedo quale sia l'oggetto giusto quando la presentazione dei dati deriva da diverse interrogazioni

non so se sono stato chiaro

ciao

alx_81 Profilo | Guru

>ciao a tutti
ciao

>debbo realizzare un form con un datagrid composto da una decina
>di campi quasi tutti provenienti da diverse view (debbo legare
>diverse visualizzazioni perchè in una sola diventerebbe la divina
>commedia) come debbo fare?
cosa intendi per "diverse view"? sono viste diverse su sql server?

>Ovvero...debbo aggiungere un dataset per ogni query?
non è necessario ma c'è da capire come quelle view devono essere organizzate insieme. Riesci a spiegarci meglio? Prova a fare un esempio anche con dati.

>Premesso che sono campace di realizzare un datagrid con connessione
>eccc...ma mi chiedo quale sia l'oggetto giusto quando la presentazione
>dei dati deriva da diverse interrogazioni
sarebbe meglio preparare una sola interrogazione. Ma vediamo di capire meglio se è possibile.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

jjchuck Profilo | Senior Member

grazie per aver risposto
non servono dati... considera che i seguenti campi risiedono in diverse tabelle e che prima di essere inseriti nella stessa e unica tabella finale necessitano di una view (manipolazione) su sql 2000...
il report che debbo ottenere è ca cosi

Articolo,qtà venduta AP,qtà venduta AC,Nr clienti AP,Nr clienti AC,Disponibiltà,Ordini Fornitori,Ordini Clienti,quantità difettose....ecc

come puoi immaginare ogni campo ha dati in tabelle diverse per forza di cose...

si può integrare in una sola view tramite passaggi diversi ma mi rimetto a voi per la soluzione piu elegante-performante visto che sono
un novellino in vs2010... ma A ME MI PIACE MOLTO vs 2010 e vorrei imparare (oltre ai pdf che mi faccio debbo pure lavorare )

attendo con ansia

ps:allego un doc dove mostro come in una interrogazione dove ci sono diverse tabelle e diverse subquery tutto funzioni semplicemente
dichiarando dataadapter.fill(dataset,tabella) ...dove tabella è appunto una sola di quelle che uso!! come può andargli bene (cioè nella select ci sono diversi FROM TAB1,,,FROM TAB2...ecc)
ciao

jjchuck Profilo | Senior Member

mi hai abbandonato?

alx_81 Profilo | Guru

>mi hai abbandonato?
no tranquillo, è che serve un po' di tempo e ora non riesco, abbi pazienza
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

alx_81 Profilo | Guru

>grazie per aver risposto
>non servono dati... considera che i seguenti campi risiedono
>in diverse tabelle e che prima di essere inseriti nella stessa
>e unica tabella finale necessitano di una view (manipolazione)
>su sql 2000...
le tue strutture ed i dati di esempio servono per aiutarti a produrre la query di cui parli sotto. Risulta molto difficile immaginare da che tabella arriva che campo, non trovi?

>il report che debbo ottenere è ca cosi
>Articolo,qtà venduta AP,qtà venduta AC,Nr clienti AP,Nr clienti
>AC,Disponibiltà,Ordini Fornitori,Ordini Clienti,quantità difettose....ecc

>come puoi immaginare ogni campo ha dati in tabelle diverse per
>forza di cose...
>si può integrare in una sola view tramite passaggi diversi ma
>mi rimetto a voi per la soluzione piu elegante-performante visto
>che sono un novellino in vs2010... ma A ME MI PIACE MOLTO vs 2010
>e vorrei imparare (oltre ai pdf che mi faccio debbo pure lavorare )
la soluzione, e non la più elegante, ma credo l'unica nel tuo caso, è scrivere una query che già torna TUTTO quello che ti serve.
Basta joinare le tabelle ed ottenere le informazioni necessarie. Per questo mi serve sapere com'è il tuo modello entità/relazione.
Il comando risulterà essere uno solo ben formato (con l'aggiunta di eventuali indici se necessario per le prestazioni) e nulla più.
Avrai già tutto organizzato sul database.
Detto questo, la soluzione più elegante è usare le stored procedure, se sei sicuro che il db è solo SQL Server, potresti prenderci anche in prestazioni (per via della cache dei piani di esecuzione, ma per questo dovremmo parlare ore)
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

jjchuck Profilo | Senior Member

grazie per la risposta

credo seguiro il tuo primo consiglio (le stored procedure non le conosco....ho fatto economia e sono solo due anni che ""smanetto"" e studio vb e sql)...
tuttavia la sola domanda che ti faccio è:
se metto tutto in una sola query elaborata in modo che sia il piu veloce possibile basta aggiungere lo script SQL come nel file word che ho postato???

se si seguo questa strada e ti faccio sapere

grazie ancora

jjChcuk

alx_81 Profilo | Guru

>grazie per la risposta
>credo seguiro il tuo primo consiglio (le stored procedure non
>le conosco....ho fatto economia e sono solo due anni che ""smanetto""
>e studio vb e sql)...
>tuttavia la sola domanda che ti faccio è:
>se metto tutto in una sola query elaborata in modo che sia il
>piu veloce possibile basta aggiungere lo script SQL come nel
>file word che ho postato???
al posto del comando metti quella query composta.. è una sola.
Ma dammi retta, siccome è VERAMENTE SEMPLICE la sintassi delle stored procedure, usa quelle e "metti dentro" la tua query, chiamando poi col nome della stored procedure al posto del comando sql (file word).
basta impostare il CommandType in CommandType.StoredProcedure..


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

jjchuck Profilo | Senior Member

Ora ho 12 query tutte in una :
semplicemente ho usato subquery (...from (qui inserisco la query chiamata tab)tab...) ..non so come indicizzarle anche se intuisco cosa intendi!!!
... tornando al tuo suggest ho due domande:
-...objDataAdapter.Fill(objDataSet, "COSA METTO QUI?") ' va bene il nome di una tabella qualsiasi contenuta nell' sql ?
- ...objDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure ' basta cambiare il commandtype?

scusa il ritardo ma ho dovuto convertire tutto un progetto da access a sql2003

attendo con ansia

ciao e scusa l'abuso di dot ....ma daltra parte siamo su dotnethell

alx_81 Profilo | Guru

>semplicemente ho usato subquery (...from (qui inserisco la query
>chiamata tab)tab...) ..non so come indicizzarle anche se intuisco
>cosa intendi!!!
non si indicizza la query, ma devi disegnare gli indici corretti in base alle tabelle che utilizzi sulla tua query.
Devi profilarla e controllarne il piano di esecuzione, solo così vedi quale indice o quali indici ti serviranno per aumentare le performances e ridurre anche il numero di IO che senza indici la query deve far fare al motore.

>-...objDataAdapter.Fill(objDataSet, "COSA METTO QUI?") ' va bene
>il nome di una tabella qualsiasi contenuta nell' sql ?
usa il metodo Fill senza il secondo parametro

>- ...objDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
>' basta cambiare il commandtype?
per lanciare una stored procedure sì, ma se vuoi usare le query lascia quello di default che è Text.

>ciao e scusa l'abuso di dot ....ma daltra parte siamo su dotnethell
eeheheheh umorista

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

jjchuck Profilo | Senior Member

per il resto ho capito e ti ringrazio MILLE volte
ma mi puoi fare un esempio di come si indicizzano le query/tabelle...non so da dove partire

se sono curioso

alx_81 Profilo | Guru

>ma mi puoi fare un esempio di come si indicizzano le query/tabelle...non so da dove partire
eh... pare facile.. non esistono esempi concreti, esiste la tua situazione.

devi capire bene le strutture (http://msdn.microsoft.com/en-us/library/ms180978(v=sql.100).aspx)
devi capire bene a cosa servono gli indici (http://msdn.microsoft.com/en-us/library/ms191195(v=sql.100).aspx)
devi vedere le tue interrogazioni e conoscere qual è il piano di esecuzione che esse utilizzano (tastino su Management Studio "Display Actual Execution Plan" ed esegui la query, apparirà un tab col piano utilizzato)
devi capire i piani di esecuzione (http://msdn.microsoft.com/en-us/library/ms178071(v=sql.100).aspx)
devi controllare cosa il piano usa e come intervenire per migliorare tempi ed io, sfruttando anche i dati tornati dai SET statement (STATISTICS IO - http://msdn.microsoft.com/it-it/library/ms184361(v=sql.100).aspx e SET STATISTICS TIME - http://msdn.microsoft.com/it-it/library/ms190287(v=sql.100).aspx)
e poi devi disegnare gli indici in base non ad una sola query, ma ai tipi di accesso che fai su determinate tabelle.
Considera poi che puoi fare indici di copertura (per soddisfare una ben precisa query), indici filtrati (per considerare solo una porzione di dati).
ecc..

c'è un mondo dietro alla tua domanda..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

jjchuck Profilo | Senior Member

ho 3 anni piu di te e fino a 27 non ho mai acceso un pc...
non mi spaventi...
il mio cervello è abituato ad affacciarsi sui precipizi

quello che mi spaventa e non poter piu lavorare con sql,vs...ecc
visto che ho fatto economia non ho mercato come "pseudo-smanettone"...

cmq grazie ancora

alx_81 Profilo | Guru

>ho 3 anni piu di te e fino a 27 non ho mai acceso un pc...
>non mi spaventi...
>il mio cervello è abituato ad affacciarsi sui precipizi
ottimo, allora facci sapere quando inizierai ad usare le stored procedure!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5