Inquiridor
Problemas para verificar pendentes

Pergunta
-
Olá,
estou tendo problemas para verificar registros pendentes em um banco de dados. Eu adiciono novos registros, e ao sair, devia mostrar que há registros pendentes e se quero ou não salvá-los, porém, ele sai direto sem nem mostrar isso.
Se alguém puder me ajudar...
Segue meu código:
Public Shared Function VerificaPendentesGrid(ByVal DataSetDB As DataSet, ByVal AdapterDB As OleDbDataAdapter, ByVal Tabela As String, ByVal OleDbCmdBuilder As OleDbCommandBuilder) As Boolean
AdapterDB = New OleDbDataAdapter("select * From " & Tabela, con)
OleDbCmdBuilder = New OleDbCommandBuilder(AdapterDB)
DataSetDB = New DataSet
AdapterDB.Fill(DataSetDB)
Dim LinhasModificadas As Integer = 0
Dim LinhasAdicionadas As Integer = 0
Dim LinhasDeletadas As Integer = 0
Try
LinhasDeletadas = DataSetDB.Tables(0).Select("", "", DataViewRowState.Deleted).Length
LinhasAdicionadas = DataSetDB.Tables(0).Select("", "", DataViewRowState.Added).Length
LinhasModificadas = DataSetDB.Tables(0).Select("", "", DataViewRowState.ModifiedCurrent).Length
If (LinhasModificadas > 0 Or LinhasAdicionadas > 0 Or LinhasDeletadas > 0) Then
Return True
Else
Return False
End If
Catch ex As Exception
Return False
End Try
End Function
Public Shared Sub SalvarAlteracoes(ByVal DataSetDB As DataSet, ByVal AdapterDB As OleDbDataAdapter, ByVal Tabela As String, ByVal OleDbCmdBuilder As OleDbCommandBuilder)
Dim result As DialogResult
If (VerificaPendentesGrid(DataSetDB, AdapterDB, Tabela, OleDbCmdBuilder) = True) Then
result = MessageBox.Show("Deseja realmente salvar as alterações feitas no cadastro?", "Registros pendentes", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If (result = DialogResult.Yes) Then
AdapterDB.Update(DataSetDB.Tables(0))
MsgBox("Banco de dados atualizado com sucesso!", MsgBoxStyle.Exclamation, "Atualizar banco de dados")
End If
End If
End Sub
Grato!
Todas as Respostas
-
mas desta maneira que ta escrito você so verifica se apertarem o botão de salvar correto ? você precisa executar o método de verificar caso seja soliticado o fechamento do form, se for windows forms você pode usar a função:
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { }
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :) -
com os testes que fiz, se voce utiliza as funções sem parametros
diretamente no form, o codigo funciona
caso se utilize desta forma, com funções feitas separadamente em uma classe
e usada posteriormente
ocorre realmente um problema
Bruno Gaiola Domus & Lepton Des. Software -
-
-
isso esta em uma classe do meu projeto
Public Shared Function VerificaPendentesGrid(ByVal DataSetDB As DataSet, ByVal AdapterDB As OleDbDataAdapter, ByVal Tabela As String, ByVal OleDbCmdBuilder As OleDbCommandBuilder) As Boolean
AdapterDB = New OleDbDataAdapter("select * From " & Tabela, con)
OleDbCmdBuilder = New OleDbCommandBuilder(AdapterDB)
DataSetDB = New DataSet
AdapterDB.Fill(DataSetDB)
Dim LinhasModificadas As Integer = 0
Dim LinhasAdicionadas As Integer = 0
Dim LinhasDeletadas As Integer = 0
Try
LinhasDeletadas = DataSetDB.Tables(0).Select("", "", DataViewRowState.Deleted).Length
LinhasAdicionadas = DataSetDB.Tables(0).Select("", "", DataViewRowState.Added).Length
LinhasModificadas = DataSetDB.Tables(0).Select("", "", DataViewRowState.ModifiedCurrent).Length
If (LinhasModificadas > 0 Or LinhasAdicionadas > 0 Or LinhasDeletadas > 0) Then
Return True
Else
Return False
End If
Catch ex As Exception
Return False
End Try
End Function
Public Shared Sub SalvarAlteracoes(ByVal DataSetDB As DataSet, ByVal AdapterDB As OleDbDataAdapter, ByVal Tabela As String, ByVal OleDbCmdBuilder As OleDbCommandBuilder)
Dim result As DialogResult
If (VerificaPendentesGrid(DataSetDB, AdapterDB, Tabela, OleDbCmdBuilder) = True) Then
result = MessageBox.Show("Deseja realmente salvar as alterações feitas no cadastro?", "Registros pendentes", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If (result = DialogResult.Yes) Then
AdapterDB.Update(DataSetDB.Tables(0))
MsgBox("Banco de dados atualizado com sucesso!", MsgBoxStyle.Exclamation, "Atualizar banco de dados")
End If
End If
End Sub
agora preciso utilizar a sub em um evento de um Form
porém ele não funciona, mesmo declarando corretamente as variaveis
funciona apenas se escrever a sub na classe do meu formulario
obrigado