MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

    Duvida com INSERT INTO e dados duplicados

    teboman
    teboman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 49
    Registrado : 03/08/2016

    Duvida com INSERT INTO e dados duplicados Empty Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman 5/9/2017, 20:04

    Boa tarde caros colegas, no meu sistema tenho um botão que cria registros em 2 tabelas simultaneamente (Tabela pastas e tabela processos).
    Porem preciso fazer um botão que insira somente em 1 tabela (Tabelas Pastas) em alguns casos. O problema é que os usuarios não são muito atentos em relação a isso e vão acabar criando então gostaria que o código do botão que cria o registro nas 2 tabelas de erro caso na tabela (Processos) ja tenho um registro com o mesmo numero não sei se expliuei direito mas qualquer duvida estou aqui. Meu codigo ta da seguinte forma.

    Private Sub btnnovapasta_Click()
    Dim strCliente, strPasta As String
    Dim strSql As String
    Dim strSQL2 As String
    Dim strCodigo As String

    strCliente = Forms!FormClientes!Cliente
    strPasta = InputBox("Digite o numero da pasta desejada!", "NovaPasta", " ")
    strCodigo = Forms!FormClientes!txtcodigo

    strSql = "INSERT INTO Pastas (CodCliente,Cliente,Pasta) VALUES('" & strCodigo & "', '" & strCliente & "', '" & strPasta & "')"
    strSQL2 = "INSERT INTO Processos (Pasta) VALUES('" & strPasta & "')"
    CurrentDb.Execute strSql
    CurrentDb.Execute strSQL2
    DoCmd.OpenForm "FormProcessos", , , "Pasta='" & strPasta & "'"
    DoCmd.Close acForm, "FormClientes"

    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves 5/9/2017, 22:25

    Boa noite,
    Private Sub btnnovapasta_Click()
    Dim strCliente, strPasta As String
    Dim strSql As String
    Dim strSQL2 As String
    Dim strCodigo As String

    strCliente = Forms!FormClientes!Cliente
    strPasta = InputBox("Digite o numero da pasta desejada!", "NovaPasta", " ")
    strCodigo = Forms!FormClientes!txtcodigo

    strSql = "INSERT INTO Pastas (CodCliente,Cliente,Pasta) VALUES('" & strCodigo & "', '" & strCliente & "', '" & strPasta & "')"
    strSQL2 = "INSERT INTO Processos (Pasta) VALUES ('" & strPasta & "') WHERE Pasta<>'" & strPasta & "'"
    CurrentDb.Execute strSql
    CurrentDb.Execute strSQL2
    DoCmd.OpenForm "FormProcessos", , , "Pasta='" & strPasta & "'"
    DoCmd.Close acForm, "FormClientes"

    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    teboman
    teboman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 49
    Registrado : 03/08/2016

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman 11/9/2017, 18:45

    Desculpa a demora estava viajando.
    Eu fiz oque foi orientado e me deu erro de Erro em tempo de execução '3067':
    A entrada de uma consulta deve ter pelo menos uma tabela ou consulta.
    Na hora de depurar da erro na linha
    CurrentDb.Execute strSQL2
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves 11/9/2017, 19:51

    Boa noite,
    Reveja os nomes das tabelas e dos campos, não devem estar certos


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    teboman
    teboman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 49
    Registrado : 03/08/2016

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman 12/9/2017, 17:59

    Opa, eu dei uma conferida e ao meu ver esta tudo certo, o codigo inteiro ta assim conforme voce me orientou.

    Private Sub btnnovapasta_Click()
    Dim strCliente, strPasta As String
    Dim strSql As String
    Dim strSQL2 As String
    Dim strCodigo As String

    strCliente = Forms!FormClientes!Cliente
    strPasta = InputBox("Digite o numero da pasta desejada!", "NovaPasta", " ")
    strCodigo = Forms!FormClientes!txtcodigo

    strSql = "INSERT INTO Pastas (CodCliente,Cliente,Pasta) VALUES('" & strCodigo & "', '" & strCliente & "', '" & strPasta & "')"
    strSQL2 = "INSERT INTO Processos (Pasta) VALUES ('" & strPasta & "') WHERE Pasta<>'" & strPasta & "'"
    CurrentDb.Execute strSql
    CurrentDb.Execute strSQL2
    DoCmd.OpenForm "FormProcessos", , , "Pasta='" & strPasta & "'"
    DoCmd.Close acForm, "FormClientes"

    End Sub

    Ele funciona somente sem a condição Where em diante
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves 12/9/2017, 20:43

    Boa noite,
    Qual valor de strPasta?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    teboman
    teboman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 49
    Registrado : 03/08/2016

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman 13/9/2017, 14:31

    Geralmente um numero entre 1000 - 80000 (Porem há casos que contenham letras) ele é determinado através da inputbox
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves 13/9/2017, 20:10

    Boa tarde,
    Devia dar certo. disponibilize dados significaticos e explique todos os detalhes


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    teboman
    teboman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 49
    Registrado : 03/08/2016

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman 18/9/2017, 17:12

    Qual mais informação posso te passar para esclarecer melhor, desculpe não sei se estou sabendo explicar direito mas o codigo junto com oque você me orientou que também não entendi porque não deu certo ficou do seguinte modo...

    Private Sub btnnovapasta_Click()
    Dim strCliente As String
    Dim strPasta As String
    Dim strSql As String
    Dim strSQL2 As String
    Dim strCodigo As String

    strCliente = Forms!FormClientes!Cliente 'captura o nome do cliente no formulario para jogar igual na tabela Pastas
    strPasta = InputBox("Digite o numero da pasta desejada!", "NovaPasta", " ") 'Aqui o usuário informa qual vai ser o numero da pasta pro cliente para colocar na tabela pastas e na tabela processos
    strCodigo = Forms!FormClientes!txtcodigo 'aqui captura somente o código do cliente para jogar junto com o nome do cliente na tabela pastas

    strSql = "INSERT INTO Pastas (CodCliente,Cliente,Pasta) VALUES('" & strCodigo & "', '" & strCliente & "', '" & strPasta & "')"
    strSQL2 = "INSERT INTO Processos.Pasta VALUES (strPasta) WHERE Pasta <>'" & strPasta & "'"
    CurrentDb.Execute strSql
    CurrentDb.Execute strSQL2
    DoCmd.OpenForm "FormProcessos", , , "Pasta='" & strPasta & "'"
    DoCmd.Close acForm, "FormClientes"

    End Sub

    A questão é a falta de atenção dos usuários, se eu colocar um botão só para inserir na tabela pastas não vai vincular e criar o registro na tabela processos que é onde fica todas as informações importantes, nesse meu caso a tabela PASTAS só faz a ligação entre o cliente e o processo, pois as vezes um mesmo processo pode ter mais que um polo ativo, ou seja, na tabela PASTAS pode ter numero de pasta repetido porém evidentemente serão nome e código do cliente diferentes e na tabela PROCESSO não, ela tem um numero único.
    Eu poderia colocar o campo pasta na tabela processos pra não aceitar dados duplicados porém eu peguei um BD já feito por uma pessoa a muitos anos atras, e é arriscado apagar certos registros.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves 18/9/2017, 21:10

    Boa noite,
    coloque

    Private Sub btnnovapasta_Click()
    Dim strCliente, strPasta As String
    Dim strSql As String
    Dim strSQL2 As String
    Dim strCodigo As String

    strCliente = Forms!FormClientes!Cliente
    strPasta = InputBox("Digite o numero da pasta desejada!", "NovaPasta", " ")
    strCodigo = Forms!FormClientes!txtcodigo

    strSql = "INSERT INTO Pastas (CodCliente,Cliente,Pasta) VALUES('" & strCodigo & "', '" & strCliente & "', '" & strPasta & "')"
    strSQL2 = "INSERT INTO Processos (Pasta) VALUES ('" & strPasta & "')"
    CurrentDb.Execute strSql
    if dcount("*","Processos","Pasta='" & strPasta & "'")=0 then CurrentDb.Execute strSQL2
    DoCmd.OpenForm "FormProcessos", , , "Pasta='" & strPasta & "'"
    DoCmd.Close acForm, "FormClientes"

    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    teboman
    teboman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 49
    Registrado : 03/08/2016

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman 20/9/2017, 13:37

    Assim o código não deu erro porem continua da mesma forma, criando registro duplicado na tabela processos, no caso queria que ele me desse erro caso já exista um registro com esse numero de pasta na tabela processos. As pessoas daqui não são muito atentas, até eu remover todas as duplicatas do sistema terei que agir dessa forma e tratando isso nos códigos, esse problema seria facilmente solucionado se o BD tivesse sido desenvolvido corretamente desde o começo.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves 20/9/2017, 20:15

    Boa noite,
    Quando existe pasta registada, o resultado de dcount("*","Processos","Pasta='" & strPasta & "'")=0 devia dar 0
    Reveja os parâmetros desta função


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    teboman
    teboman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 49
    Registrado : 03/08/2016

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman 21/9/2017, 18:55

    Perdoe minha ignorância amigo mas eu acho que não entendi direito o código.
    Eu aos poucos estou tirando as duplicatas da tabela processos para colocar que o campo não pode ser repetido mas ainda vou demorar um bocado pra fazer isso, por isso estou indo atras de uma solução até que eu termine.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves 23/9/2017, 10:07

    Bom dia,
    Não existe outra forma
    Você tem os dados, tem de saber utilizar a função dcount que é básica


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    teboman
    teboman
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 49
    Registrado : 03/08/2016

    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman 24/9/2017, 20:44

    Estou aprendendo conforme a necessidade kkkkkkk
    Vou dar uma pesquisada a respeito dessa função.
    Provavelmente vou precisar dela pra fazer uma coisa que estou precisando que é executar a linha SQL somente se o numero citado pelo usuario já tiver em uma determinada tabela diferente da que vai ser criado.

    Conteúdo patrocinado


    Duvida com INSERT INTO e dados duplicados Empty Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/4/2024, 04:29