PDA

View Full Version : [vb.net] DataTable non riconosciuta....


mangzeus
16-08-2005, 09:10
Mi succede una cosa strana...nel mio programma ho creato una classe (ClasseStandard) la quale contiene la funzione di aggiornamento del mio database, cioè parte da una Datatable, vede se ci sino dei cambiamenti e poi si collega al DB per aggiornarlo...la funzione all'interno della classe è questa:
-------------------------------------------------------------------
Public Class ClasseStandard
Public dsInt As New DataSet
Public daInt As New OleDb.OleDbDataAdapter
Public Cn As New OleDbConnection
Public TableInt As DataTable

'sub per l'aggiornamento del database access e per tutte le modifiche apportate alla tabella
Public Function AggiornaDB(ByVal da As OleDb.OleDbDataAdapter, ByVal ds As Data.DataSet, ByVal NomeTabella As String, Optional ByVal AskForSave As Boolean = False) As Integer
'verifica se sono state apportate modifiche alla tabella specificata e nel caso salva

Dim dt As DataTable
Dim Choice As MsgBoxResult = MsgBoxResult.Yes
Try
dt = ds.Tables(NomeTabella).GetChanges()
If Not IsNothing(dt) Then 'devi controllare l'insieme delle righe modificate..se ce ne sono salvi altrimenti no

If AskForSave Then 'chiedo se salvare le modifiche
Choice = MessageBox.Show("Salvare tutte le modifiche?", "Salvare Database...", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
End If
If Choice = MsgBoxResult.Yes Then
Return da.Update(ds.Tables(NomeTabella)) 'ORA HA AGGIORNATO CON LE MODIFICHE SUL TUO DB ACCESS!
'torna il numero di righe salvate
End If
End If

Catch err As Exception
MsgBox(err.Message, MsgBoxStyle.Critical, "Errore...")
End Try

End Function

end class
----------------------------------------------------
quando vado ad inserire un nuovo record nel mio DB io vado poi a salvare i cambiamenti nella tabella con la funzione sopra e quindi richiamo nell'evento click del tasto ok la funzione AggiornaDB
---------------------------------------------------
Public cl1 As new ClasseStandard

cl1.AggiornaDB(cl1.daInt, cl1.dsInt, "TblInt", False)
-----------------------------------------------------

dove ovviamente cl1 è l'istanza alla classe standard...

solo che quando arriva alla valorizzazione di tb all'interno della funzione AggiornaDB mi dice "object reference not set to an istance of an object", in pratica non riconosce il NomeTabella nella funzione AggiornaDB. La cosa strana che se io la funzione AggiornaDB c'e l'ho all'interno di un modulo la cosa funziona...cosa può essere??l'istanza alla classe l'ho fatta

joesabba
17-08-2005, 16:01
il dataset dovresti passarlo alla funzione per referenza, non per valore.
prova e fammi sapere.. ciao