none
Problemas para verificar pendentes RRS feed

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

    segunda-feira, 21 de fevereiro de 2011 12:26

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 :)
    segunda-feira, 21 de fevereiro de 2011 13:17
  • 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
    segunda-feira, 21 de fevereiro de 2011 14:24
  • então, quando testado diretamente no form, o codigo funciona normalmente.

     

    mas estou precisando fazer desta maneira, com funções em uma classe, e não está funcionando.

    segunda-feira, 21 de fevereiro de 2011 14:26
  • Guilherme,

    Não entendi o que você precisa, mas para essa monitoração seria viável executar seu método em outra Thread,  em background.

    Abs

    terça-feira, 22 de fevereiro de 2011 02:06
  • 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

    terça-feira, 22 de fevereiro de 2011 11:49