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

    Duvida com INSERT INTO e dados duplicados

    Compartilhe
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

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

    Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman em Ter 05 Set 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
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves em Ter 05 Set 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
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman em Seg 11 Set 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
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves em Seg 11 Set 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
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman em Ter 12 Set 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
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves em Ter 12 Set 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
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman em Qua 13 Set 2017, 14:31

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

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves em Qua 13 Set 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
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman em Seg 18 Set 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.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves em Seg 18 Set 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
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman em Qua 20 Set 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.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves em Qua 20 Set 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
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman em Qui 21 Set 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.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  Alexandre Neves em Sab 23 Set 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
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: Duvida com INSERT INTO e dados duplicados

    Mensagem  teboman em Dom 24 Set 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.

      Data/hora atual: Seg 20 Nov 2017, 05:44