MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Alterar registros ou Inserir simultaneamente em duas tabelas

    Compartilhe

    acas-acas
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 11/07/2017

    [Resolvido]Alterar registros ou Inserir simultaneamente em duas tabelas

    Mensagem  acas-acas em Ter 11 Jul 2017, 17:40

    Prezados, estou com um bd quase pronto, mas tenho um problema em uma VB que é executada quando o botão é clicado.

    Eu quero Inserir ou Atualizar duas tabelas simultaneamente, mas eu só consigo inserir. Tem como colocar as duas funções no mesmo botão.

    Segue o código que estou usando no botão, ele está funcionando só para inserir dados que não existem:


    Private Sub BtnSalvar_Click()

    DoCmd.RunSQL "INSERT INTO fornecedores(empresa,nome,sobrenome,cargo) SELECT nome,territorio,nome_gedt,nome_cdt FROM Usuario WHERE NOT EXISTS(select * from fornecedores where usuario.territorio = fornecedores.nome)"


    End Sub

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: [Resolvido]Alterar registros ou Inserir simultaneamente em duas tabelas

    Mensagem  Phillip_Junior em Ter 11 Jul 2017, 19:21

    Olá

    Deixa eu ver se entendi!

    Vc quer que ao executar o comando ele verifique na tabela se o valor existe sim ou não, e se existe ele atualiza o valor, caso não exista ele adiciona esse valor.

    É isso ?

    Informações necessárias. Esses valores a serem verificados nessa tabela para serem adicionados ou atualizados estão num formulário ?
    Esse formulário está relacionado a essa tabela ?

    Se for isso, será necessário criar uma condição para verificar se o valor existe na tabela.
    Se existe valor x na tabela atualiza, se não existe adiciona.


    Explique melhor o mecanismo dos valores que estão sendo adicionados na execução de
    DoCmd.RunSQL "INSERT INTO fornecedores(empresa,nome,sobrenome,cargo) SELECT nome,territorio,nome_gedt,nome_cdt FROM Usuario WHERE NOT EXISTS(select * from fornecedores where usuario.territorio = fornecedores.nome)".

    para podermos lhe ajudar com o código de condição.

    aguardo




    .................................................................................
    Phillip_Junior
    Analista de Sistemas

    acas-acas
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 11/07/2017

    Alterar registros ou Inserir simultaneamente em duas tabelas

    Mensagem  acas-acas em Ter 11 Jul 2017, 19:41

    Vc quer que ao executar o comando ele verifique na tabela se o valor existe sim ou não, e se existe ele atualiza o valor, caso não exista ele adiciona esse valor.

    É isso ?

    xxxxxxxxxxxxxxxxxxx

    É exatamente isso.

    xxxxxxxxxxxxxxx


    Bom eu sou novo nesta questão de programação no ACCESS, então eu peguei um BD com o formato que eu estava interessado e fui fazendo as minhas alterações.


    Eu criei um formulário de cadastro de usuários, e eu quero que alguns dados como território, empresa... que é inserido/atualizado na tabela de usuário, fosse replicado na tabela de fornecedores.

    Se tiver alguma outra opção que possa fazer esta relação estou a disposição para aprender, mas atualmente com pouco tempo para concluir este projeto.

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: [Resolvido]Alterar registros ou Inserir simultaneamente em duas tabelas

    Mensagem  Phillip_Junior em Ter 11 Jul 2017, 20:36

    Olá

    Vejamos se eu entendi:

    Você criou um formulário de cadastro de usuários, e vc quer que alguns dados como território, empresa... que é inserido na tabela de usuário fossem também adicionados na
    na tabela de fornecedores.
    Mas caso esses dados já existam na tabela de usuário ele não adiciona nem na tabela de usuários nem na tabela de fornecedores.

    Presumindo que seja isso:

    Criamos uma condição:


    Insira esse código adaptando ele conforme a sua necessidade no evento onde já está o código para adicionar o registro. Você deve substituir pelo anterior.

    Private Sub BtnSalvar_Click()

    Dim nometerritorio As String
    Dim nomeempresa As String

    'Altere o nome dos campos conforme estão no seu formulário.
    nometerritorio = (Nz(Me.nomedocampoterritorionoformulario.Value, ""))
    nomeempresa = (Nz(Me.nomedocampoempresanoformulario.Value, ""))

    If existeusuario(nometerritorio, nomeempresa) Then

    MsgBox "Já existe os dados cadastrados" & vbCrLf & vbCrLf & "Os dados não serão registrados na tabela usuário nem tabela fornecedores.", vbCritical + vbOKOnly, "ATENÇÃO"
    MsgBox "Vc pode se assim for conveniente pedir que seja buscado nessa tabela os dados registrados e vc apresente eles nos campos do próprio formulário e altere os dados", _
    vbCritical + vbOKOnly, "ATENÇÃO"
    Else

    CurrentDb.Execute "INSERT INTO NomeTabelaUsuario(NomeDoCampoDaTabela, NomeDoCampoDaTabela) VALUES('" & Me.NomeCampoDoForm & "', '" & Me.NomeCampoDoForm & "'")

    CurrentDb.Execute "INSERT INTO NomeTabelaFornecedores(NomeDoCampo1DaTabela, NomeDoCampo2DaTabela) VALUES('" & Me.NomeCampo1DoForm & "', '" & Me.NomeCampo2DoForm & "'")

    End If

    End Sub

    ' Função que irá localizar os dados existentes na tabela

    Public Function existeusuario(strterritorio As String, strempresa As String) As Boolean

    'On Error GoTo deu_erro

    Dim rst As dao.Recordset
    Dim sql As String
    ' Altere o nome da tabela e dos campos na tabela

    sql = "SELECT * FROM [nomedatabela] US WHERE US.[nomedocamponatabela] = '" & strterritorio & "' AND US.[nomedocamponatabela] = '" & strempresa & "'"
    Set rst = CurrentDb.OpenRecordset(sql)

    If rst.BOF And rst.EOF Then
    existeusuario = False

    Else
    existeusuario = True
    End If

    rst.Clone
    Set rst = Nothing

    Exit Function

    'deu_erro:
    'MsgBox Err.Description
    End Function


    .................................................................................
    Phillip_Junior
    Analista de Sistemas

    acas-acas
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 11/07/2017

    Alterar registros ou Inserir simultaneamente em duas tabelas

    Mensagem  acas-acas em Qua 12 Jul 2017, 12:13

    Grato.

    Funcionou.

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: [Resolvido]Alterar registros ou Inserir simultaneamente em duas tabelas

    Mensagem  Phillip_Junior em Qua 12 Jul 2017, 13:15

    Que Bom! Obrigado pelo retorno.
    O fórum agradece.


    .................................................................................
    Phillip_Junior
    Analista de Sistemas

      Data/hora atual: Qua 22 Nov 2017, 20:12