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

    Incluir um ID Sequencial Alfanumérico a cada Inserção de linha

    Compartilhe

    ruvierijunior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 10/02/2014

    Incluir um ID Sequencial Alfanumérico a cada Inserção de linha

    Mensagem  ruvierijunior em 7/8/2018, 15:19

    Bom dia Meus amigos!

    Preciso de uma ajuda de vocês, Estou com um probleminha nessa consulta abaixo (Destacado):

    INSERT INTO Fretes ( IdCliente, Criado, DataColeta, Placa, Motorista, Valor, EndereçoColeta, EndereçoEntrega, IdFrete, IdSubmissions )
    SELECT Left([Submissions]![Solicitante],10) AS SolicitanteAtual, Submissions.[Submission Date], Submissions.[Data Frete:], Submissions.[Veículo:], Submissions.[Motorista:], Submissions.[Valor (R$)], Submissions.[Empresa de Coleta], Submissions.[Empresa de Entrega:], "FRT" & Format(Right(DMax("IdFrete","Fretes"),7)+1,"0000000") AS FreteId, Submissions.[Submission ID]
    FROM Submissions
    WHERE (((Exists (SELECT 1 FROM [Fretes] WHERE [Fretes].[IdSubmissions]=[Submissions].[Submission ID]))=False));



    O Nesse modelo ele fará a inclusão do IdFrete apenas para a primeira linha e copiará o mesmo Id para as demais linhas, gostaria que fosse criado um IdFrete sequencial para cada linha inserida, como faço isso meus amigos?
    avatar
    caiosouza
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 309
    Registrado : 05/12/2016

    Re: Incluir um ID Sequencial Alfanumérico a cada Inserção de linha

    Mensagem  caiosouza em 8/8/2018, 17:52

    Boa tarde,

    Utilize estrutura de repetição:

    Exemplo:

    Código:
    Dim Cont As Integer, Max As Integer, IdFrete As String
    Max = 5 'Aqui vc define o numero limite de repetição
       
        For Cont = 1 To Max
            IdFrete = Format(Right(DMax("IdFrete", "Fretes"), 7) + Cont, "0000000")
            MsgBox "Seu IdFrte: " & IdFrete
        Next


    .................................................................................
    A persistência leva ao sucesso!

    ruvierijunior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 10/02/2014

    Re: Incluir um ID Sequencial Alfanumérico a cada Inserção de linha

    Mensagem  ruvierijunior em 8/8/2018, 19:50

    Boa tarde Caio!

    Obrigado pela ajuda. só pra ver se entendi certinho,  o "Max" vai ser a quantidade de linhas da consulta insert?

    Esse código é em VBA, certo? Estou fazendo isso em modo sql será que consigo aplicar lá?
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Incluir um ID Sequencial Alfanumérico a cada Inserção de linha

    Mensagem  Alexandre Neves em 8/8/2018, 21:09

    Boa noite,

    Renomeie os campos de forma normalizada, sem espaços, sem caracteres especiais
    Tente
    INSERT INTO Fretes (IdCliente, Criado, DataColeta, Placa, Motorista, Valor, EndereçoColeta, EndereçoEntrega, IdFrete, IdSubmissions) SELECT Left(Solicitante,10) AS SolicitanteAtual, [Submission Date], [Data Frete:], [Veículo:], [Motorista:], [Valor (R$)], [Empresa de Coleta], [Empresa de Entrega:], 'FRT' & Format(Right(DMax('IdFrete','Fretes'),7)+1,'0000000') AS FreteId, [Submission ID] FROM Submissions WHERE Exists (SELECT 1 FROM Fretes WHERE IdSubmissions=[Submission ID]=False;


    .................................................................................
    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
    caiosouza
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 309
    Registrado : 05/12/2016

    Re: Incluir um ID Sequencial Alfanumérico a cada Inserção de linha

    Mensagem  caiosouza em 8/8/2018, 21:56

    Boa tarde,

    @ruvierijunior, siga as dicas do @Alexandre Neves, é muito importante.

    Sobre a sua dúvida, vc pode fazer o inverso, vc pode inserir os registros a partir do VBA.
    E sim, o Max é a quantidade de registros que pretende inserir.
    Segue abaixo um exemplo ilustrativo:

    Código:
    Dim Cont As Integer, Max As Integer, IdFrete As String
    Max = 5 'Aqui vc define o numero limite de repetição
        
        For Cont = 1 To Max
            IdFrete = Format(Right(DMax("IdFrete", "Fretes"), 7) + Cont, "0000000")
            CurrentDb.Execute "SUA SQL"
        Next


    O CurrentDb.Execute tem a tarefa de executar uma consulta


    .................................................................................
    A persistência leva ao sucesso!

    ruvierijunior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 10/02/2014

    Re: Incluir um ID Sequencial Alfanumérico a cada Inserção de linha

    Mensagem  ruvierijunior em 15/8/2018, 04:53

    Prezados!

    Obrigado, pela ajuda consegui seguindo as dicas para fazer em vba!

    Alexandre Essa tabela esta vinculada por isso os nomes estão fora de padrão, mas valeu pela dica.

    Very Happy Very Happy Very Happy Laughing Laughing
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Incluir um ID Sequencial Alfanumérico a cada Inserção de linha

    Mensagem  Alexandre Neves em 15/8/2018, 06:13

    Bom dia,
    Faltou o "Resolvido"


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

      Data/hora atual: 16/11/2018, 04:01