Binding Source Binding navigator

martedì 07 aprile 2015 - 17.36
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  SQL Server 2008 R2  |  Access (.mdb)  |  Office 2010  |  Internet explorer 8.0

Rigiova Profilo | Newbie

Salve
In questa applicazione in VB 2010 ho due form
IL primo Form con questo codice:
----------------------------------------------------------------
Public Class FormProva
Dim MioAdapter As New SqlDataAdapter
Dim Tbl1 As New DataTable
Dim MioBS As New BindingSource
Private Sub FormProva_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim ConnSafDB As New SqlConnection
' restituisce un oggetto connessione non aperto
ConnSafDB = GlobalFunction.ConnettiDB
ConnSafDB.Open()
' imposto le varie proprieta di Adapter SelectCommnd UpdateCommand DeleteCommand UpdateCommand
Dim UnitCommand As New SqlCommand("Select * from TblCategNominativiCF", ConnSafDB)
MioAdapter.SelectCommand = UnitCommand

UnitCommand = New SqlCommand("INSERT iNTO TblCategNominativiCF(IdCategoria,DescrizioneCategoria) VALUES (@IdCat,@DesCat)", ConnSafDB)
UnitCommand.Parameters.Add("@IdCAt", SqlDbType.VarChar, 3, "IdCategoria")
UnitCommand.Parameters.Add("@DesCat", SqlDbType.VarChar, 20, "DescrizioneCategoria")
MioAdapter.InsertCommand = UnitCommand

UnitCommand = New SqlCommand("UPDATE tblCategNominativiCF SET DescrizioneCategoria=@DesCat WHERE IdCategoria=@VecchioValIdCat", ConnSafDB)
UnitCommand.Parameters.Add("@IdCAt", SqlDbType.VarChar, 3, "IdCategoria")
UnitCommand.Parameters.Add("@DesCat", SqlDbType.VarChar, 20, "DescrizioneCategoria")
Dim VecchioValParam As SqlParameter = UnitCommand.Parameters.Add("@VecchioValIdCat", SqlDbType.NChar, 3, "IdCategoria")
VecchioValParam.SourceVersion = DataRowVersion.Original
MioAdapter.UpdateCommand = UnitCommand

UnitCommand = New SqlCommand("DELETE FROM TblcategNominativiCF where IdCategoria=@IdCatOrig", ConnSafDB)
UnitCommand.Parameters.Add("@IdCatOrig", SqlDbType.NChar, 3, "IdCategoria")
VecchioValParam.SourceVersion = DataRowVersion.Original
MioAdapter.DeleteCommand = UnitCommand


' Dim MioDataSet As New DataSet
' possiamo attribuire anche il dataset facendo riferimento all'indice della tbl
' DataGridView1.DataSource = MioDataSet.Tables(0)



MioAdapter.Fill(Tbl1)
BindingNavigator1.BindingSource = MioBS
MioBS.DataSource = Tbl1

ConnettiDB.Close()
' associo l'origina dati ai controlli

txtIdCategoria.Clear()
txtDescrizioneCategoria.Clear()
txtIdCategoria.DataBindings.Add("text", MioBS, "IdCategoria")
txtDescrizioneCategoria.DataBindings.Add("text", MioBS, "DescrizioneCategoria")

End Sub

Private Sub btnConferma_Click(sender As System.Object, e As System.EventArgs) Handles btnConferma.Click
MioBS.EndEdit()
MioAdapter.Update(Tbl1)
End Sub
---------------------------------------------------------------------------
Funziona bene Quando Clicco sul pulsante aggiungi "+" Vengono cancellati i valori nei controlli, inserisco i nuovi e salvo sul DB

Mentre questo codice identico in quello che dovrebbe fare:
------------------------------------------------------------------------------------------
Public Class FrmProtMovimenti
Dim MioAdapter As New SqlDataAdapter
Dim Tbl1 As New DataTable
Dim MioBS As New BindingSource
Private Sub FrmProtMovimenti_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim ConnSafDB As New SqlConnection
ConnSafDB = GlobalFunction.ConnettiDB
ConnSafDB.Open()
' Dim UnitCommand As New SqlCommand("Select * from TblProtocolliMovimenti", ConnSafDB)

Dim UnitCommand As New SqlCommand("Select IdProtocollo,DescrizProtocollo,GeneraDocFiscale,AzzeramentoAnno,UltimoNumeroCOrrente,IdAzienda from TblProtocolliMovimenti", ConnSafDB)
'Dim UnitCommand As New SqlCommand("Select IdProtocollo,DescrizProtocollo,GeneraDocFiscale,AzzeramentoAnno,UltimoNumeroCOrrente,A.IdAzienda,B.NominativoAzienda from TblProtocolliMovimenti as A inner join TblAziendeProdotti as B on A.IdAzienda=B.IdAzienda", ConnSafDB)
MioAdapter.SelectCommand = UnitCommand


UnitCommand = New SqlCommand("INSERT INTO TblProtocolliMovimenti (IdProtocollo,DescrizProtocollo,GeneraDocFiscale,AzzeramentoAnno,UltimoNumeroCorrente,IdAzienda) VALUES (@IdProtocollo,@DescrizProtocollo,@GeneraDocFiscale,@AzzeramentoAnno,@UltimoNumeroCorrente,@IdAzienda)", ConnSafDB)
UnitCommand.Parameters.Add("@IdProtocollo", SqlDbType.VarChar, 5, "IdProtocollo")
UnitCommand.Parameters.Add("@DescrizProtocollo", SqlDbType.VarChar, 25, "DescrizProtocollo")
UnitCommand.Parameters.Add("@GeneraDocFiscale", SqlDbType.VarChar, 5, "GeneraDocFiscale")
UnitCommand.Parameters.Add("@AzzeramentoAnno", SqlDbType.VarChar, 5, "AzzeramentoAnno")
UnitCommand.Parameters.Add("@UltimoNumeroCorrente", SqlDbType.VarChar, 5, "UltimoNumeroCorrente")
UnitCommand.Parameters.Add("@IdAzienda", SqlDbType.VarChar, 5, "IdAzienda")
MioAdapter.InsertCommand = UnitCommand

UnitCommand = New SqlCommand("Update TblProtocolliMovimenti set DescrizProtocollo=@DescrizProtocollo,GeneraDocFiscale=@GeneraDocFiscale,AzzeramentoAnno=@AzzeramentoAnno, " &
" UltimoNumeroCorrente=@UltimoNumeroCorrente,IdAzienda=@IdAzienda WHERE IdProtocollo=@IdVecchioProt", ConnSafDB)


UnitCommand.Parameters.Add("@DescrizProtocollo", SqlDbType.VarChar, 25, "DescrizProtocollo")
UnitCommand.Parameters.Add("@GeneraDocFiscale", SqlDbType.VarChar, 5, "GeneraDocFiscale")
UnitCommand.Parameters.Add("@AzzeramentoAnno", SqlDbType.VarChar, 5, "AzzeramentoAnno")
UnitCommand.Parameters.Add("@UltimoNumeroCorrente", SqlDbType.VarChar, 5, "UltimoNumeroCorrente")
UnitCommand.Parameters.Add("@IdAzienda", SqlDbType.VarChar, 5, "IdAzienda")
Dim VecchioIdProt As SqlParameter = UnitCommand.Parameters.Add("@IdVecchioProt", SqlDbType.VarChar, 5, "IdProtocollo")
VecchioIdProt.SourceVersion = DataRowVersion.Original
MioAdapter.UpdateCommand = UnitCommand

UnitCommand = New SqlCommand("DELETE FROM TblProtocolliMovimenti where IdProtocollo=@IdVecchioProt", ConnSafDB)
UnitCommand.Parameters.Add("@IdVecchioProt", SqlDbType.VarChar, 5, "IdProtocollo")
VecchioIdProt.SourceVersion = DataRowVersion.Original
MioAdapter.DeleteCommand = UnitCommand

MioAdapter.Fill(Tbl1)
BindingNavigator12.BindingSource = MioBS
MioBS.DataSource = Tbl1

ConnSafDB.Close()

txtIdProtocollo.Clear()
txtDescrizioneProtocollo.Clear()

CheckBox1.DataBindings.Clear()
CheckBox2.DataBindings.Clear()
txtIdAzienda.Clear()
txtUltimoNumero.Clear()

txtIdProtocollo.DataBindings.Add("text", MioBS, "IdProtocollo")
txtDescrizioneProtocollo.DataBindings.Add("text", MioBS, "DescrizProtocollo")

CheckBox1.DataBindings.Add("checked", MioBS, "GeneraDocFiscale")
CheckBox2.DataBindings.Add("checked", MioBS, "AzzeramentoAnno")
txtUltimoNumero.DataBindings.Add("text", MioBS, "UltimoNumeroCOrrente")
txtIdAzienda.DataBindings.Add("text", MioBS, "Idazienda")
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
MioBS.EndEdit()
MioAdapter.Update(Tbl1)
End Sub
-----------------------------------------------------------------------------------
Non funziona. Quando premo il taso Aggiungi del BindingNavigator, non mi cancella i valori nei controlli per permettermi di inserire quei nuovi.
Varia solamente il valore della textbox del BindNav che visualizza il numero dei record

Vorrei comprendere per bene il concetto di BindingSource . Se non ho capito male tale classe rappresenta l'origine dati per i ctr del Form che possiamo scorrere modificare elimin,inserire nuovi record magari aiutati dal Binding navigator Per le modifiche dei dati da passare al DB bisogna sempre /Tassativamente avvalersi del DataAdapter.update che richiamano le sue istruzioni insertCommand updateCommand DeleteCommand .Vorrei capire anche bene i concetti di CurrencyManager e bindingContest Se avete del materiale da passarmi che spieghi in maniera semplice tali argomenti vi sarei grato
Ciao
Gianni
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