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


4 participantes

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    avatar
    MSoccol
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 24/03/2011

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  MSoccol 26/5/2011, 13:47

    Bom dia!

    Pra não deixar de aumentar a massa de conhecimento do fórum, tenho um problema. Necessito gerar um código para um registro, que incluem letras e um número sequencial, tudo dentro de um mesmo campo tipo String.

    O código seria mais ou menso assim "20I001TW". Sendo que os 3 primeiros e os dois ultimos especificam o tipo, e os tres números juntos, são sequenciadores. Hoje utilizo a função Dcount conforme abaixo:

    anterior = DCount("TAB1_ITEM", "TABELA1", "[CÓDIGO] LIKE '" & w & "*" & y & "'")
    Me.CÓDIGO = w & Format$(anterior + 1, "000") & y

    Sendo w os 3 primeiros caracteres do código e y os dois últimos, não sendo relevantes a minha questão.

    Essa forma funciona, no entanto se um dos ítens for excluido, essa função retornaria um código ja existente. Por exemplo: se eu tivesse os codigos 20I001TW, 20I002TW, 20I003TW e excluísse o 20I002TW, meu próximo código desse tipo seria o 20I003TW, duplicando meus dados.

    Minha idéia para resolver o problema seria um Dmax. no entanto o VBA não aceito o que testei, conforme abaixo:
    anterior = DMax(" & right(left(CÓDIGO,6),3) & ", "TABELA1", "[CÓDIGO] LIKE '" & w & "*" & y & "'")
    mas não funcionou, dava ERRO 3075 - Erro de sintese (operador faltando)..
    A questão então é essa: existe alguma forma de retornar o valor máximo de alguns números dentro de uma string?

    Desde ja Grato!
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Re: [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  criquio 26/5/2011, 14:47

    Já tentou usar o DLast para ir direto ao último registro?

    Me.Código = Left(DLast("CÓDIGO", 3), "TABELA1") & Mid(DLast("CÓDIGO", 4 ,3), "TABELA1") + 1 & Right(DLast("CÓDIGO", 2), "TABELA1")

    Talvez tenha que adaptar, mas deve dar certo por esse caminho.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    MSoccol
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 24/03/2011

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Re: [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  MSoccol 26/5/2011, 15:21

    Não tentei, pois teria que criar um campo para armazenar o instante da inserção, para daí sim utilizar o Dlast.

    Necessito de algo parecido com o que testei acima
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Re: [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  criquio 26/5/2011, 15:24

    O DLast é usado exatamente como o DCount ou DMax. Se você tem como usar esses, pode usar o DLast tambem. Não entendi o que quis expor Razz


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Re: [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  JPaulo 26/5/2011, 16:00

    Teste por favor;

    anterior = Format(Val(Left((Right((DMax("[CÓDIGO]", "TABELA1", "[CÓDIGO] LIKE '" & w & "*" & y & "'")), 6)), 3)), "000")



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Folder_announce_new Instruções SQL como utilizar...
    Pablo Neruda
    Pablo Neruda
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 344
    Registrado : 17/09/2010

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Re: [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  Pablo Neruda 26/5/2011, 16:47

    MS boa tarde!

    Você já pensou ao invés de excluir seu item, trabalhar com um campo de status do item, onde você poderia seta-lo como AT = ATIVO, IN = INATIVO, BL = BLOQUEADO, PD = PENDENTE, pois você trabalhando com a exclusão terá esse incoveniente de uma re-geração do código, dependendo de como esta montado seu projeto poderá perder alguma informação que faz referencia a este código e assim sucessivamente...

    Bem deixo aqui minha sugestão...

    Sds,


    Pablo


    .................................................................................
    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Uc?export=view&id=0B-lnOJoekdM2VzZBQzFMVzRreTg
    avatar
    MSoccol
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 24/03/2011

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Re: [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  MSoccol 26/5/2011, 18:23

    Bem, primeiramente Criquio, achei que para a função Dlast funcionar a tabela teria que estar organizada pelo instante de inserção, mas acho que estava enganado, ordenando pelo proprio código ele colocaria na ordem que eu desejava, por exemplo: 20T001TW, 20T002TW, 20T003TW ,20T004TW. Então esse foi meu erro Criquio, desculpe-me.

    Nesse ponto está a solução do meu problema, mas primeiro, ao JPaulo, testei seu código e ele não entendeu, quanto ao Pablo, muito interessante sua dica, no entanto queria deixar meu projeto resistente a qualquer problema ou situação futura que possa ocorrer, então mantive a possibilidade de exclusão de algum item.

    Vamos a solução então, que é mto simples: O access consegue extrair o valor máximo de uma string! ou seja se
    ant = DMax("CÓDIGO", "OFRAG - ALVOS", "[CÓDIGO] LIKE '" & w & "*" & y & "'"), com w ="20T" e y="TW", ant seria igual a 20T004TW, que era exatamente o que eu precisa. Agora mesmo que eu exclua o item 20T002TW, com o sub abaixo, retorno o valor 20T005TW.

    Eis o código:

    Private Sub Subtipo_AfterUpdate() 'Geração de Código
    Dim y, w, ant As String
    Dim seq As Integer

    y = (dois últimos caracteres, não vem ao caso seu cálculo)
    w = (três primeiros caracteres, não vem ao caso seu cálculo)

    If IsNull(DMax("CÓDIGO", "TABELA1", "[CÓDIGO] LIKE '" & w & "*" & y & "'")) Then
    ant = "nulo"
    Else
    ant = DMax("CÓDIGO", "TABELA1", "[CÓDIGO] LIKE '" & w & "*" & y & "'")
    End If

    If ant = "nulo" Then
    seq = 0
    Else
    seq = Right(Left(ant, 6), 3)
    End If

    Me.CÓDIGO = w & Format$(seq + 1, "000") & y
    End Sub

    Era isso, agradeço a todos.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Re: [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  criquio 26/5/2011, 18:29

    Muito bom. Só um detalhe na declaração das variáveis:

    Dim y, w, ant As String

    Dessa forma acima, apenas ant está sendo declarada como String. y e w estão ficando com o tipo Variant. Funciona, mas não com uma performance tão boa quanto se for corretamente declarada. O certo:

    Dim y As String, w As String, ant As String

    Poderia até adicionar a outra variável Integer tambem, assim:

    Dim y As String, w As String, ant As String, seq As Integer

    Alguns programadores preferem colocar uma abaixo da outra para não incorrer nesse equívoco:

    Dim y As String
    Dim w As String
    Dim ant As String
    Dim seq As Integer


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    MSoccol
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 24/03/2011

    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Re: [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  MSoccol 26/5/2011, 18:42

    Opa, muito Obrigado Criquio, essa eu não sabia. Tinha visto uns códigos pela net, e achei que toda a linha ficava conforme a ultima declaração,

    Valeu mesmo, vou refazer meus códigos

    Conteúdo patrocinado


    [Resolvido]Retornar o valor máximo de um número que está dentro de uma String Empty Re: [Resolvido]Retornar o valor máximo de um número que está dentro de uma String

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 04:53