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
-------------------------------------------------------------------
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