Salve a tutti e auguri in anticipo per le festività natalizie. Ho il seguente problema che mi sta togliendo il sonno da un po' di tempo.
Ho una tabella Movimenti, al suo interno ci sono svariati campi tra cui un campo IDGenere che è la chiave primaria della tabella Genere, un campo IDContoDa che è la chiave primaria della tabella ContoDaA e poi ho un IDContoA che è la chiave primaria della tabella ContoDaA_1
per creare la suddetta struttura della tabella e metterla in in dataset uso questa stringa SQL
Il form ha svariate textbox un checkbox e 3 combobox 1 che dovrebbe permettermi di scegliere tutti i valori presenti nella tabella Genere e gli altri due nella tabella ContoDaAcodice:strsql = "SELECT Movimenti.IDMovimenti, Genere.IDGenere as IDGenere,Genere.DescGenere as DescGenere, Movimenti.DescMovimenti, ContoDaA.DescConto AS ContoDa, " _ & " ContoDaA_1.DescConto as ContoA, Movimenti.Spesa, Movimenti.DataMovimento, Movimenti.isdeleted, " _ & " Movimenti.MovimentiTime , ContoDaA.IdConto AS IDContoDa, ContoDaA_1.IdConto AS IDContoA " _ & " FROM ContoDaA INNER JOIN " _ & " Genere INNER JOIN " _ & " Movimenti ON Genere.IDGenere = Movimenti.IDGenere ON ContoDaA.IDConto = Movimenti.IDContoDa INNER JOIN " _ & " ContoDaA AS ContoDaA_1 ON Movimenti.IDContoA = ContoDaA_1.IDConto" dsMovimenti = New DataSet("Movimenti") 'crea dataadapter daMovimenti = New SqlDataAdapter(strsql, strconn) daMovimenti.Fill(dsMovimenti, "Movimenti") dsMovimenti.Tables("Movimenti").Columns(0).AutoIncrement = True dsMovimenti.Tables("Movimenti").Columns(0).AutoIncrementSeed = -1 dsMovimenti.Tables("Movimenti").Columns(0).AutoIncrementStep = -1 Dim drkey(0) As DataColumn drkey(0) = dsMovimenti.Tables("Movimenti").Columns(0) bdsMovimenti = New BindingSource() 'creazione del bindingsource bdsMovimenti.DataSource = dsMovimenti.Tables("Movimenti") 'associazione del datasource al Dataset CreaDatagridView(1) dsMovimenti.Tables("Movimenti").Columns("isdeleted").DefaultValue = False dsMovimenti.Tables("Movimenti").Columns("IDGenere").DefaultValue = 1 dsMovimenti.Tables("Movimenti").Columns("IDContoDA").DefaultValue = 1 dsMovimenti.Tables("Movimenti").Columns("IDContoA").DefaultValue = 1 'imposto i valori di default delle colonne altrimenti addnew non mi funziona dsGenere = New DataSet("Genere") 'crea dataadapter daGenere = New SqlDataAdapter("SELECT IDGenere,DescGenere FROM Genere ORDER BY IDGenere;", strconn) daGenere.Fill(dsGenere, "Genere") bdsGenere = New BindingSource() 'creazione del bindingsource bdsGenere.DataSource = dsGenere.Tables("Genere") 'associazione del datasource al Dataset dsContoDaA = New DataSet("ContoDa") dsContoDaA2 = New DataSet("ContoA") ''crea dataadapter daContoDaA = New SqlDataAdapter("SELECT IDConto as IDContoDa,DescConto as ContoDa FROM ContoDaA ORDER BY IDContoDa;", strconn) ''Fill del dataset daContoDaA.Fill(dsContoDaA, "ContoDa") bdsContoDaA = New BindingSource() 'creazione del bindingsource bdsContoDaA.DataSource = dsContoDaA.Tables("ContoDa") 'associazione del datasource al Dataset ''crea dataadapter daContoDaA2 = New SqlDataAdapter("SELECT IDConto As IDContoA,DescConto as ContoA FROM ContoDaA ORDER BY IDContoA;", strconn) ''Fill del dataset daContoDaA2.Fill(dsContoDaA2, "ContoA") bdsContoDaA2 = New BindingSource() 'creazione del bindingsource bdsContoDaA2.DataSource = dsContoDaA2.Tables("ContoA") 'associazione del datasource al Dataset
Tutto bene si direbbe, ho però il problema che quando premo un bottone che mi lancia il comando bdsmovimenti.addnew() posso selezionare tutti i campi correttamente, quando poi però finisco di inserire i dati e lancio un bdsmovimenti.endedit() u poi un update tutte le textbox riportano i dati correttamente nel datagridview, però nella casella bianca del datagrid(non è impostata come combobox ma normale tabella di testo) la descrizione appare bianca, non ci sono errori di sorta perchè i comandi vengono eseguiti correttamente e il database si aggiorna con i dati corretti, infatti chiudendo e riaprendo il programma tutti i valori risultano essere inseriti correttamente ... direi che il mio problema è associare la propietà text delle combobox alla riga correntemente aggiornata ... ma come fare visto che il bindingsource mi ha lasciato a piedi ???codice:Me.TextBox1.DataBindings.Add("text", bdsMovimenti, "IDMovimenti") 'associazione textbox1 alla sorgente bds "ID" Me.TextBox2.DataBindings.Add("text", bdsMovimenti, "DescMovimenti") 'associazione textbox2 alla sorgente bds "Descrizione" Me.TextBox3.DataBindings.Add("text", bdsMovimenti, "Spesa", True, DataSourceUpdateMode.OnPropertyChanged, "", "C") Me.TextBox4.DataBindings.Add("text", bdsMovimenti, "DataMovimento", True, DataSourceUpdateMode.OnPropertyChanged, "", "dd/MM/yyyy") Me.CheckBox1.DataBindings.Add("checked", bdsMovimenti, "isdeleted") Me.ComboBox1.DataSource = bdsGenere Me.ComboBox1.DisplayMember = "DescGenere" Me.ComboBox1.ValueMember = "IDGenere" Me.ComboBox1.DataBindings.Add("SelectedValue", bdsMovimenti, "IDGenere", True, DataSourceUpdateMode.OnPropertyChanged) Me.ComboBox1.SelectionStart = 0 Me.ComboBox2.DataSource = bdsContoDaA Me.ComboBox2.DisplayMember = "ContoDa" Me.ComboBox2.ValueMember = "IDContoDa" Me.ComboBox2.DataBindings.Add("SelectedValue", bdsMovimenti, "IDContoDa", True, DataSourceUpdateMode.OnPropertyChanged) Me.ComboBox2.SelectionStart = 0 Me.ComboBox3.DataSource = bdsContoDaA2 Me.ComboBox3.DisplayMember = "ContoA" Me.ComboBox3.ValueMember = "IDContoA" Me.ComboBox3.DataBindings.Add("SelectedValue", bdsMovimenti, "IDContoA", True, DataSourceUpdateMode.OnPropertyChanged) Me.ComboBox3.SelectionStart = 0

Rispondi quotando