Salve a tutti......mi chamo Stefano e giungo su questo bel forum per risolvere un problemino che ho con VB 2005.....e ovviamente per tanti altri motivi che mi anno portato a entrare in questa comunità. Vi descrivo la cosa.....spero possiate aiutarmi.
Allora....sto relizzando un semplice programma con VB 2005 che serve a realizzare dei preventivi.
Il programma usa un Database di Access (mdb) con 2 tabelle che hanno un campo in relazione fra loro ( premetto che fin ora ho sempre lavorato su singole tabelle, quindi le relazioni sono una cosa nuova ). Una è la tabella Anagrafica e l'altra è la tabella Dettaglio unite fra loro tramite il campo Ndoc ( numero documento ). Girando qua e la per il web sono riuscito a ottenere una connessione ed una relazione tra le due tabelle ed impostare il form in modo che su delle text ottengo i dati della prima tabella (ovvero il numero documento) e su di una DataGridView solo i record associati al numero documento della tabella padre. Ora, visto che nella tabella dettagli ( tabella figlia) ho un elenco di prezzi vorrei aggiungere al programma una text con la somma di questi prezzi....e qui c'è il problema.
Comincio con il postare il codice che ho usato per ottenere la connessione e la relazione fra le 2 tabelle.
codice:
Dim con As New OleDbConnection
Dim ds As New DataSet
Dim da1 As OleDbDataAdapter
Dim da2 As OleDbDataAdapter
Dim bs1 As New BindingSource
Dim bs2 As New BindingSource
Dim Tab1 As DataColumn
Dim Tab2 As DataColumn
Dim relazione As DataRelation
Dim sql1 As String
Dim sql2 As String
Dim Path As String = My.Application.Info.DirectoryPath
con.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & Path & "\preventivo.mdb"
sql1 = "select * from anagrafica"
sql2 = "select * from dettaglio"
da1 = New OleDbDataAdapter(sql1, con)
da2 = New OleDbDataAdapter(sql2, con)
ds = New DataSet()
da1.Fill(ds, "anagrafica")
da2.Fill(ds, "dettaglio")
Tab1 = ds.Tables("anagrafica").Columns("ndoc")
Tab2 = ds.Tables("dettaglio").Columns("ndoc")
relazione = New DataRelation("relazione", Tab1, Tab2, False)
ds.Relations.Add(relazione)
bs1.DataMember = "anagrafica"
bs1.DataSource = ds
bs2.DataMember = "relazione"
bs2.DataSource = bs1
con.Close()
e fin qui tutto ok (almeno credo )....il programma fa propio quello che voglio. ora arriva il problema......tramite un ciclo For sto cercando di sommare i recod del campo Prezzo per avere un totale del preventivo dello specifico cliente.....ovvero il totale di ciò che mi compare nella datagridview.
Questo è il codice che ho scritto:
codice:
Dim i As Integer
Dim str As String
Dim totale As Integer
For i = i To bs2.Count - 1
str = ds.Tables("dettaglio").Rows(i).Item(3)
totale = totale + str
Next
txtTotale.Text = totale
Allora.....io sò qualè il problema...ovvero la stringa
str = ds.Tables("dettaglio").Rows(i).Item(3)
che non va a prendere i record in relazione con la tabella padre ma prende in considerazione tutti i record della tabella. Lo so.....sicuramente è una cavolata ma davvero....è tutto il giorno che giro su questa stringa senza trovare una soluzione. Potete aiutarmi??