Ir para conteúdo
Fórum Script Brasil
  • 0

Refresh na tabela


Carlos Rocha

Pergunta

Ola pessoal.

Aos trancos e barrancos, vou eu conseguindo estudar VB.Net.

Mas, novamente me esbarrei aqui.

Seguinte:

Obs.: Só consigo fazer uma operação por vez no dataset. Eu não consigo por exemplo, gravar uma novo registro e depois navegar a té uns trez ou quatro registros atraz e altera-lo que da erro.

No caso , estou tendo que fechar o form e abrir ele de novo. Nem mesmo gravar dois registros na sequencia não da.

tenho a função que me retorna um dataset:

Public Function ExecuteDS(ByVal sql As String, ByRef tabela As String) As DataSet
        Dim ds As New DataSet
        Dim da As MySqlDataAdapter = New MySqlDataAdapter()

        Try
            OpenConnection()
            cmd.CommandType = CommandType.Text
            cmd.CommandText = sql
            cmd.Connection = Conexao
            da.SelectCommand = cmd
            da.Fill(ds, tabela)
            da.Dispose()
            Return ds
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        Return ds
    End Function
Bom, no form tenho o botão novo com o código
Private Sub Novo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Novo.Click
        If Novo.Text = "Novo" Then
            For Each c As Control In Me.grpClientes.Controls
                If TypeOf c Is TextBox Then
                    c.Text = ""
                End If
            Next
            Atualizar.Enabled = False
            Eliminar.Enabled = False
            Encerrar.Text = "Cancela"
            Novo.Text = "Incluir"
            Nome.Focus()
            habilita()
            Codigo.Enabled = False
        ElseIf Novo.Text = "Incluir" Then
            Dim dr As DataRow = dt.NewRow
            incluirRegistro(dr)
            Novo.Text = "Novo"
            Encerrar.Text = "Encerrar"
            Atualizar.Enabled = True
            Eliminar.Enabled = True
            desabilita()
        End If
    End Sub
Que chama a função abaixo
Private Sub incluirRegistro(ByVal dr As DataRow)
        Dim sqlinsere As String = "INSERT INTO " & tabela & " (Nome,Endereco,Email)VALUES ('" & Nome.Text & "','" & Endereco.Text & "','" & Email.Text & "')"
        atribuirDados(dr)
        ds = accDb.ExecuteDS(sqlinsere, tabela)
        dt = ds.Tables(tabela)
        Try
            MessageBox.Show("registro de Usuário incluido com sucesso.")
            'accDb.CloseConnection()
            'accDb.OpenConnection()
        Catch ex As Exception
            MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
        End Try
    End Sub

O problema é que quando eu cliko no botão novo e insiro um novo registro, ele não mostra o código autoincrement gerado.

Então, quando eu recebo do script o aviso "Cadastro feito com sucesso", depois volta na mesma tela de cadastro, e, ai se eu tentar incluir um novo registro, ai da erro.

Parece que depois do aviso, tenho que fechar e abrir a conexão novamente como tentei(esta comentado no código).

É isso mesmo, o que eu faço?

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Outro problema que aconteceu é o seguinte:

Eu acabo de dar um delete em um registro.

O script funciona normal, confiro no banco de dados. Ta certinho, registro deletado. Mas, se eu navegar até ele de novo, ele esta la.

Mas, se eu fechar o form e abrir de novo ai ele some.

Parece que eu preciso de dar um refresh na tabela apos a mensagem de exclusão.

Como faço isso?

Eis o código do delete

Private Sub atualizarRegistro(ByVal dr As DataRow)
        atribuirDados(dr)
        Dim sql As String = "UPDATE Clientes SET Nome = '" & Nome.Text & "',Endereco= '" & Endereco.Text & "',Email = '" & Email.Text & "' where clienteID='" & dr("clienteID") & "'"
        ds = accDb.ExecuteDS(sql, tabela)
        exibirDados(registro)
        Try
            MessageBox.Show("registro de Usuário alterado com sucesso.")
        Catch ex As Exception
            MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
        End Try
    End Sub

    Private Sub Eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Eliminar.Click
        If registro < 0 OrElse registro > dt.Rows.Count - 1 Then
            Exit Sub
        Else
            If MessageBox.Show("Deseja Excluir esse registro", "Excluir", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                Dim codigo As Integer
                Dim dr As DataRow = dt.Rows(registro)
                codigo = dr("clienteID")
                codigo = CType(codigo.ToString, Integer)
                eliminarRegistro(codigo)
            End If
        End If
    End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...