Ho fatto una union di due tabelle . come faccio a creare una tabella c...

domenica 24 dicembre 2006 - 01.58

ken87 Profilo | Junior Member

Una volta che faccio esequire la unin.
Come si fa in visual basic 2005 a creare una tabella e metterci i dati calcolata dalla unio.
Sono costretto a fare questo perche poi devo prendere il risultato della union messo in una tabella e fare una join con un altra tabella


Tabella dati calcolata dalla union
join
tabella2

Ma i dati gli mette nel dataset.
Oppure e possibile fare join usando il data set?

Qualsiasi soluzioe va bene basta che possa fare la mia nuova query .
come posso fare?

Aiutatemi?

Cteniza Profilo | Guru

Ovviamente nel dataset non si possono fare union (a meno di non sviluppare una classe helper che fa il lavoro di sort-merge dei dati), nè si possono mettere le table del dataset in union con tabelle dell'origine dati.
Per realizzare una vista che abbia come origine l'unione di più tabelle è necessario pertanto agire "lato database" impostando nel command l'istruzione sql appropriata.
Ovviamente il risultato di una join o altra union produce un rowset non modificabile, nel caso di vogliano fare delle modifiche credo sia opportuno agire sulle tabelle individualmente oppure "avere a che fare" con una stored procedure che si preoccupa "lei" di fare gli aggiornamenti.

ken87 Profilo | Junior Member

la mi union fuzionante è quetsta
:

unione = ("SELECT Consuntivo.MATRICOLA, Consuntivo.RAG, Consuntivo.DATA," + "nz(budgetd.BG1_gen,0) AS bg1_gen," + _
"nz(Consuntivo.EFFMESE,0) AS Cons, [BG1_gen]-[cons] AS Scostamento, nz(budgetd.bgprog,0) AS bgprog," + _
" nz(Consuntivo.EFFANNO,0) AS Consprog, [bgprog]-[consprog] AS Scotprog" + _
"FROM budgetd right JOIN Consuntivo ON (budgetd.Badge=Consuntivo.MATRICOLA) AND (budgetd.Ragg=Consuntivo.RAG) AND (budgetd.data=Consuntivo.DATA" + _
"union" + "SELECT budgetd.Badge, budgetd.Ragg, budgetd.DATA, nz(budgetd.BG1_gen,0) AS bg1_gen, " + _
"nz(Consuntivo.EFFMESE,0) AS Cons, [BG1_gen]-[cons] AS Scostamento," + _
"nz(budgetd.bgprog,0) AS bgprog, nz(Consuntivo.EFFANNO,0) AS Consprog, [bgprog]-[consprog] AS Scotprog" + _
"FROM budgetd left JOIN Consuntivo ON (budgetd.data=Consuntivo.DATA) AND (budgetd.Ragg=Consuntivo.RAG) AND (budgetd.Badge=Consuntivo.MATRICOLA)")

Come faccio a fare quello che mi hai detto?

La union l'ho fatta ma ora non so come andare avanti.

Come faresti per metterla nella tabella.
Oppure come posso fare usando il database..

Aiuto...

Cteniza Profilo | Guru

Se hai la tua query non devi far altro che metterla su un dataadapter.
Dim da As New OleDbDataAdapter(myquery,myconnection)
e successivamente generare il dataset
da.Fill(myDataset,"Vista")
Ovviamente per utilizzare i comandi di modifica devi manualmente impostare updatecommand, deletecommand e insertcommand

ken87 Profilo | Junior Member

il problema e che devo fare una query agguntiva se fosse il risultato finale sono riuscito a visualizzare i dati mettendola in data set.
Ma necessita di creare una tabella nel database.
Metterci i dati della union
Fare una nuova query.
e visuali8zzare i dati..

A proposito auguri di buon natale

escaflowne Profilo | Junior Member

come ti hanno detto dovresti lavorare lato database.
Potresti crearti una vista sul db (che dbms usi?) e poi interrogarla normalmente dal programma

ken87 Profilo | Junior Member

il database e in acess.
Come si fa?
Ho provato fare una conessione al database.
Ora dovrei creare la tabella nel database acess ma come si fa?
non l'ho mai fatto?

ecco coso ho fatto.
ho creato una tabella uni nel database poi


StringaQuery = "Delete * from uni"
'QueryInserimento = New OleDb.OleDbCommand(StringaQuery, connection)
'QueryInserimento.ExecuteNonQuery()


unione = "SELECT Consuntivo.MATRICOLA, Consuntivo.RAG, Consuntivo.DATA,iif(isnull(budgetd.BG1_gen),0, budgetd.BG1_gen)AS bgm," + _
"iif(isnull(Consuntivo.EFFMESE),0, Consuntivo.EFFMESE) AS Cons," + "BGM-cons AS Scostamento, iif(isnull(budgetd.bgprog),0, budgetd.bgprog) AS bgp," + _
"iif(isnull(Consuntivo.EFFANNO),0,Consuntivo.EFFANNO) AS Csp,bgp-csp AS Scotprog" + _
" FROM budgetd right JOIN Consuntivo ON (budgetd.Badge=Consuntivo.MATRICOLA) AND (budgetd.Ragg=Consuntivo.RAG) AND (budgetd.data=Consuntivo.DATA)" + _
"union" + " " + _
" SELECT budgetd.Badge, budgetd.Ragg, budgetd.DATA,iif(isnull(budgetd.BG1_gen),0,budgetd.BG1_gen)AS bgm," + _
"iif(isnull(Consuntivo.EFFMESE),0, Consuntivo.EFFMESE) AS Cons," + "BGM-cons AS Scostamento, iif(isnull(budgetd.bgprog),0, budgetd.bgprog) AS bgp," + _
"iif(isnull(Consuntivo.EFFANNO),0,Consuntivo.EFFANNO) AS Csp,bgp-csp AS Scotprog" + _
" FROM budgetd left JOIN Consuntivo ON (budgetd.data=Consuntivo.DATA) AND (budgetd.Ragg=Consuntivo.RAG) AND (budgetd.Badge=Consuntivo.MATRICOLA)"


StringaQuery = unione + " into uni from " & unione
QueryInserimento = New OleDb.OleDbCommand(StringaQuery, connection)
QueryInserimento.ExecuteNonQuery()



poi ho tentantato di riempirta col codice sotto.
Poi mi questo errore

Errore di sintassi (operatore mancante) nell'espressione della query '(budgetd.Badge=Consuntivo.MATRICOLA) AND (budgetd.Ragg=Consuntivo.RAG) AND (budgetd.data=Consuntivo.DATA)union SELECT budgetd.Badge'.


perche?

e mi si blocca il programma.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5