Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

Leggere un dataset costruito con una relazione tra tabelle

$
0
0

Ciao a tutti del forum.

 

Avrei 2 quesiti da porre:

1) Sto cercando di far quadrare il caricamento di una offerta cliente e del suo dettaglio composto da più righe (tipo il classico caso ordine /dettaglio ordine) mediante una Inner Join

I dati me li ha caricati correttamente nel dataset, ma ho un problema nel caricare la gridview in modo ciclico, ovvero non so come riferirmi con un For each ai risultati ottenuti dalla tabella dettaglio offerta.

Non so infatti se usare un costrutto così abbia senso in quanto penso prenda in considerazone tutto il dataset:

For Each dr As DataRow In dt.Rows

dgdettaglio.Rows.Add(dr("iddettaglioOffCliente"), numrighedettaglio, dr("brand_grezzo"), dr("brand_pulito"), dr("pncliente"), dr("qta"), dr("Descrizione"), dr("pnhit"), dr("status"))

next

Caricando manualmente la gridView come nel codice qui sotto mi fa vedere i dati correttamente, ma ovviamente ho bisogno di un sistema che cariche solo le righe del dettaglio offerta in modo ciclico:

 

 Dim cmdCarica As New MySqlCommand
                
Dim adapter As New MySqlDataAdapter
                
Dim dt As New DataSet

                
Using myconn As New MySqlConnection(stringaConn)
                    myconn.Open()
                    
With cmdCarica
                        .Connection = myconn
                        .CommandText = 
"Select * FROM gesthitsrl.ricoffcliente INNER JOIN gesthitsrl.dettagliooffcliente  WHERE ricoffcliente.codoffertacli = '" & txtRDO.Text & "' AND ricoffcliente.idoffcliente = dettagliooffcliente.idoffcliente ; "
                    
End With
                    adapter.SelectCommand = cmdCarica
                    dt.Clear()
                    adapter.Fill(dt)

                    
If dt.Tables(0).Rows.Count = 0 Then
                        
MessageBox.Show("Nessuna Offerta trovata con questo codice!")
                        myconn.Close()
                        
Exit Sub
                    
Else

 txtRDOCLI.Text = dt.Tables(0).Rows(0).Item(
"codoffertacli")
 txtNumRicCliente.Text = dt.Tables(0).Rows(0).Item(
"NumRicCliente")
 txtragsoc.Text = dt.Tables(0).Rows(0).Item(
"ragsoc")
 DataRicRDO.Value = dt.Tables(0).Rows(0).Item(
"Datains")
 deadlineRDO.Value = dt.Tables(0).Rows(0).Item(
"DataScadenza")

 

********caricamento manuale griddettaglio***********

dgdettaglioOff.Rows.Add(1, dt.Tables(0).Rows(0).Item(
"brand_grezzo"), dt.Tables(0).Rows(0).Item("brand_pulito"), dt.Tables(0).Rows(0).Item("pnCliente"), dt.Tables(0).Rows(0).Item("qta"), dt.Tables(0).Rows(0).Item("pnhit"), dt.Tables(0).Rows(0).Item("Descrizione"), dt.Tables(0).Rows(0).Item("status"))

 


 dgdettaglioOff.Rows.Add(2, dt.Tables(0).Rows(1).Item(
"brand_grezzo"), dt.Tables(0).Rows(1).Item("brand_pulito"), dt.Tables(0).Rows(1).Item("pnCliente"), dt.Tables(0).Rows(1).Item("qta"), dt.Tables(0).Rows(1).Item("pnhit"), dt.Tables(0).Rows(1).Item("Descrizione"), dt.Tables(0).Rows(1).Item("status"))

 

****************************************************

                    
End If
                    myconn.Dispose()
                    dt.Dispose()
                    dt = 
Nothing
                    adapter.Dispose()
                    adapter = 
Nothing
                
End Using


            
End If

 

2) nel caricamento dei campi della gridview l'ultima colonna "status" non è adiacente in realtà agli altri campi ma è dopo 3 campi lasciati in bianco per permettere al cliente di inserire delle note un prezzo e un altro dato...

Come faccio ad assegnare alla colonna "status" il dato corretto proveniente dal dataset con il metodo add (se è possibile):

dgdettaglioOff.Rows.Add(1, campo1, campo2, campo3......campo7, status)

grazie per i suggerimenti che vorrete espormi.

SanzWeb

 

 


Viewing all articles
Browse latest Browse all 2212