• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

set#1

Reload dados no form depois de apagar

8 mensagens neste tópico

No meu utimo topico estava com difuculdades de apagar dados na BD (Server 2005). Depois de resolvido tenho outro problema. O codigo 'e este:

    Private Sub btApagar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btApagar.Click
      
        Dim pacientesDTA As New BD_TL2009DataSetTableAdapters.t_pacienteTableAdapter
        pacientesDTA = New BD_TL2009DataSetTableAdapters.t_pacienteTableAdapter
        'Dim paciente As BD_TL2009DataSet.t_pacienteRow

        If MsgBox("Tem a certeza que deseja apagar o registo: " & Trim(txtNID.Text) & " ?", MessageBoxButtons.YesNo, "Confime: Apagar Registo") = Windows.Forms.DialogResult.Yes Then
            pacientesDTA.DeletePaciente(txtNID.Text.ToString.Trim())
            MsgBox("Registo apagado com sucesso!", MessageBoxButtons.OK, "Apagou Dados")
        Else
            MsgBox("Registo nao apagado!", MessageBoxButtons.OK, "Cancelou")
        End If
    End Sub

Quando ele apaga ainda me mostra o paciente apagado, so depois de sair e voltar ao form 'e que actualiza. Como faco para ele depois actualizar para os dados actuas logo apos apagar.

E como faco para ele mostrar num label o numero total dos pacientes da t_paciente.

Obrigado

(((Peace&Love)))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para clarificar vou dar um exemplo:

Se tenho na BD 10 pacientes no form me mostra todos certo. Se apago o pac 001 (usando o botão apagar) depois de apagar, navegando pelos pacientes, ele ainda 'e visivel no form. So depois de sair e voltar a entrar no form 'e que actualiza os dados.

Desejo actualizar os dados logo após apagar o paciente.

Obrigado

(((Peace&Love)))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vejo que chamas um metodo para apagar o registo do table adapter, mas onde estas a fazer o reload do controlo que mostra os registos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vejo que chamas um metodo para apagar o registo do table adapter, mas onde estas a fazer o reload do controlo que mostra os registos?

O load dos dados 'e feito no form frmPaciente:

Private Sub frmPaciente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        frmLogin.Timer.Stop()
        Me.T_funcionarioTableAdapter.Fill(Me.BD_TL2009DataSet1.t_funcionario)
        Me.T_provenienciaTableAdapter.Fill(Me.BD_TL2009DataSet1.t_proveniencia)
        Me.T_nivelescolarTableAdapter.Fill(Me.BD_TL2009DataSet1.t_nivelescolar)
        Me.T_profissaoTableAdapter.Fill(Me.BD_TL2009DataSet1.t_profissao)
        Me.T_contactoTableAdapter.Fill(Me.BD_TL2009DataSet.t_contacto)
        Me.T_bairroTableAdapter.Fill(Me.BD_TL2009DataSet.t_bairro)
        Me.T_distritoTableAdapter.Fill(Me.BD_TL2009DataSet.t_distrito)
        Me.T_adultoTableAdapter.Fill(Me.BD_TL2009DataSet.t_adulto)
        Me.T_pacienteTableAdapter.Fill(Me.BD_TL2009DataSet.t_paciente)

        Me.btGravar.Enabled = False

        'Carrega dado do dataset t_contacto: GetContactoAdulto no Pessoa de referencia
        Dim pacientesAdapter As New BD_TL2009DataSetTableAdapters.t_contactoTableAdapter
        pacientesAdapter = New BD_TL2009DataSetTableAdapters.t_contactoTableAdapter
        Dim pacientes As BD_TL2009DataSet.t_contactoDataTable
        Dim paciente As BD_TL2009DataSet.t_contactoRow

        pacientes = pacientesAdapter.GetContactoAdulto

        paciente = pacientes.Item(0)
        Me.txtNomeRef.Text = paciente.nome
        Me.txtApelidoRef.Text = paciente.apelido
        Me.txtContactoRef.TabIndex = paciente.telefone
End Sub

Aqui neste form tenho o botao apagar. Eu pretendo depois de apagar ele fazer um Refresh dos dados e apresentar os que ficaram (sem aquele que acabo de apagar, que ate agora me aparece).

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como tens a actualização dos dados no evento frmPaciente_Load ele só os actualiza quando esse evento ocorre, logo quando o formulário é inicializado, solução simples é criar um procedimento ou função para fazer a actualização dos dados, não deve ser solução única e nem deve ser muito optimizada mas deve funcionar:

Private Sub frmPaciente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        frmLogin.Timer.Stop()

        Me.btGravar.Enabled = False

        CarregarDados()

End Sub

Private Sub CarregarDados()
        Me.T_funcionarioTableAdapter.Fill(Me.BD_TL2009DataSet1.t_funcionario)
        Me.T_provenienciaTableAdapter.Fill(Me.BD_TL2009DataSet1.t_proveniencia)
        Me.T_nivelescolarTableAdapter.Fill(Me.BD_TL2009DataSet1.t_nivelescolar)
        Me.T_profissaoTableAdapter.Fill(Me.BD_TL2009DataSet1.t_profissao)
        Me.T_contactoTableAdapter.Fill(Me.BD_TL2009DataSet.t_contacto)
        Me.T_bairroTableAdapter.Fill(Me.BD_TL2009DataSet.t_bairro)
        Me.T_distritoTableAdapter.Fill(Me.BD_TL2009DataSet.t_distrito)
        Me.T_adultoTableAdapter.Fill(Me.BD_TL2009DataSet.t_adulto)
        Me.T_pacienteTableAdapter.Fill(Me.BD_TL2009DataSet.t_paciente)
        'Carrega dado do dataset t_contacto: GetContactoAdulto no Pessoa de referencia
        Dim pacientesAdapter As New BD_TL2009DataSetTableAdapters.t_contactoTableAdapter
        pacientesAdapter = New BD_TL2009DataSetTableAdapters.t_contactoTableAdapter
        Dim pacientes As BD_TL2009DataSet.t_contactoDataTable
        Dim paciente As BD_TL2009DataSet.t_contactoRow

        pacientes = pacientesAdapter.GetContactoAdulto

        paciente = pacientes.Item(0)
        Me.txtNomeRef.Text = paciente.nome
        Me.txtApelidoRef.Text = paciente.apelido
        Me.txtContactoRef.TabIndex = paciente.telefone
End Sub

Private Sub btApagar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btApagar.Click
     
        Dim pacientesDTA As New BD_TL2009DataSetTableAdapters.t_pacienteTableAdapter
        pacientesDTA = New BD_TL2009DataSetTableAdapters.t_pacienteTableAdapter
        'Dim paciente As BD_TL2009DataSet.t_pacienteRow

        If MsgBox("Tem a certeza que deseja apagar o registo: " & Trim(txtNID.Text) & " ?", MessageBoxButtons.YesNo, "Confime: Apagar Registo") = Windows.Forms.DialogResult.Yes Then
            pacientesDTA.DeletePaciente(txtNID.Text.ToString.Trim())
            MsgBox("Registo apagado com sucesso!", MessageBoxButtons.OK, "Apagou Dados")
        Else
            MsgBox("Registo nao apagado!", MessageBoxButtons.OK, "Cancelou")
        End If

        CarregarDados()

    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Optimo!!

Funcionou exactamente como eu queria.

Obrigado  :)

(((Peace&Love)))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda bem que ajudei a resolver o teu problema.

Qualquer dúvida é só postar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora