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

set#1

Gravar dados em tres tabelas

6 mensagens neste tópico

Gostaria de saber qual a melhor maneira pra gravar dados em 3 tabelas (Server 2005).

Meu form faz o load de dados de três tabelas:

t_paciente, t_adulto, t_contacto

Quero grava alguns dados, para o mesmo NID, em t_paciente, o mesmo NID na em t_adulto (se for adulto) com outros dados referentes a adulto, e em t_contacto o NID e a pessoa a contactar.

O form: http://img268.imageshack.us/i/recepcao.jpg/

Agora, na tabela t_contacto ainda não consegui referenciar ao NID/HDD para ao navegar (no form) pelos pacientes mostre a pessoa de contacto do referido paciente.

Espero ter sido claro.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A melhor maneira é invocares uma Stored Procedure.

Na SP fazes uma transacção onde ou insere nas 3 tabelas ou então faz rollback a tudo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A melhor maneira é invocares uma Stored Procedure.

Na SP fazes uma transacção onde ou insere nas 3 tabelas ou então faz rollback a tudo.

Na verdade já tava a pesquisar como usar as SP...mas se poder peco um exemplo que me pode dar um empurao.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fiz uma SP_InsertAdulto na tabela t_adulto e no codigo fiz assim:

Private Sub btGravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btGravar.Click
        Dim pacientesDTA As New BD_TL2009DataSetTableAdapters.t_pacienteTableAdapter
        pacientesDTA = New BD_TL2009DataSetTableAdapters.t_pacienteTableAdapter

        Dim pacAdultoDTA As New BD_TL2009DataSetTableAdapters.t_adultoTableAdapter
        pacAdultoDTA = New BD_TL2009DataSetTableAdapters.t_adultoTableAdapter

        If ValidarCampos() Then
            Try
                pacientesDTA.InsertPaciente(Me.cbUS.Text, Me.txtDataAbertura.Text, Me.txtNrOrdem.Text, Me.txtNID.Text, Me.txtNome.Text, Me.txtSexo.Text, Me.txtIdade.Text, Me.txtIdentific.Text, Me.cbDistrito.Text, Me.cbBairro.Text, Me.txtCelQuart.Text, Me.txtAvenida.Text, Me.cbServico.Text, Me.cbReferencia.Text, Me.txtDataNasc.Text, Me.txtApelido.Text, Me.cbFuncionario.Text, Me.txtDataDiag.Text, Me.ChcBxAconselhado.TabIndex, Me.cbTipoPac.Text)
                pacAdultoDTA.SP_InsertAdulto(Me.txtNID.Text, Me.cbProfissao.Text, Me.cbNivelEsc.Text, Me.txtTelefone.Text, Me.txtNrConviventes.Text, Me.cbEstCivil.Text, Me.txtConjugues.Text, Me.cbSerologiaConj.Text, Me.txtNrProcesso.Text, Me.txtOutrParc.Text, Me.txtNrFilhos.Text, Me.txtNrFilhosTest.Text, Me.txtNrFilhosPos.Text, Me.ChBxGeleira.TabIndex, Me.ChBxElectricidade.TabIndex)
                MsgBox("Paciente registado com sucesso", MsgBoxStyle.Information, "Adicionou Paciente")
                CarregarDados()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Else
            MsgBox("Verifique os dados se estao correctos.", MsgBoxStyle.Critical, "Erro")
            Me.txtNID.Focus()
        End If
    End Sub

Depois de executar não grava na tabela t_adulto os dados a ele referentes (SP_InsertAdulto), apenas o InsertPaciente.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só vendo o código desse método e da SP, qq coisa deve estar mal.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A SP não estava a retornar nenhum valor. Configurando, pus a a retornar: A single value e dai gerou o insert e ja esta a funcionar.

Obrigado pela ajuda!!

(((Peace&Love)))

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