Jump to content

Reload dados no form depois de apagar


set#1
 Share

Recommended Posts

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

Link to comment
Share on other 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)))

Link to comment
Share on other 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

Link to comment
Share on other 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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.