Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Autocomplemento


brunocasado

Pergunta

aí galera tdo blza?

vamu la? vou tenta explicar o que eu quero dessa vez ahhh e agradecendo o moderador do forum pela dica do dlookup poreem tive um probleminha eu consegui fazer ele funciona mais ele fez uma coisa errada.... mais tdo bem isso num vem ao caso agora

vai ai a explicaçao

eu tenho 2 tabelas

uma de cadastro de materiais

e outra de tipos do material certo?

Bem

na tabela de cadastro de material

tenho um campo de tipo de material

esse tipo de material esta relacionada na tabela de tipos de materiais pois há variedades de tipos cadastrados...

continuando..

na tabela de cadastro de materiais vao ter 2 campos o do tipo de material(esta relacionada ao tipo de material da tabela cadastro materiais) e codigo do material

bem o que eu quero é o seguinte: quando eu selecionar o CE no campo tipo do material,ele vai somar todos as ocorrencias do codigo do material.... por exemplo toda vez que eu seleciono o tipo do material CE ele e adiciona na parte do codigo do material altomaticamente CE001.... CE002 e assim por diante

ou por exemplo vamus supor que eu escolha o tipo RS ai altomaticamente no campo seguinte (codigo do material) ele ponha RS001 e assim por diante..

como fazer isso?

aí galera espero uma explicaçao grato!

Editado por brunocasado
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
aí galera tdo blza?

vamu la? vou tenta explicar o que eu quero dessa vez ahhh e agradecendo o moderador do forum pela dica do dlookup poreem tive um probleminha eu consegui fazer ele funciona mais ele fez uma coisa errada.... mais tdo bem isso num vem ao caso agora

vai ai a explicaçao

eu tenho 2 tabelas

uma de cadastro de materiais

e outra de tipos do material certo?

Bem

na tabela de cadastro de material

tenho um campo de tipo de material

esse tipo de material esta relacionada na tabela de tipos de materiais pois há variedades de tipos cadastrados...

continuando..

na tabela de cadastro de materiais vao ter 2 campos o do tipo de material(esta relacionada ao tipo de material da tabela cadastro materiais) e codigo do material

bem o que eu quero é o seguinte: quando eu selecionar o CE no campo tipo do material,ele vai somar todos as ocorrencias do codigo do material.... por exemplo toda vez que eu seleciono o tipo do material CE ele e adiciona na parte do codigo do material altomaticamente CE001.... CE002 e assim por diante

ou por exemplo vamus supor que eu escolha o tipo RS ai altomaticamente no campo seguinte (codigo do material) ele ponha RS001 e assim por diante..

como fazer isso?

aí galera espero uma explicaçao grato!

dexa eu ver se entendi:

você quer fazer uma autonumeração, porém dividida por tipo de material da tabela de material...certo?

bom bruno, se sua dúvida for esta aí de cima que perguntei, acho que tenho uma solução...

fiz os testes aqui, e acabou dando certo...

o que fiz foi pegar o último registro de um determinado campo que comece com uma letra (como exemplo, "A") cadastrado na minha tabela e incrementei o valor de +1 em sua parte numeral (A0001, A0002, A0003...A000N)...

abaixo esta as linhas de código...veja se entende:

'TRAZER VALOR MÁXIMO DA tblCliente CONFORME A INICIAL DO CAMPO

Dim vMax As Variant

'faz uma pesquisa na tabela cliente e traz o maior dado do campo código quando _

o início do campo for igual a A

vMax = DMax("[Cliente_ID]", "tblcliente", "[Cliente_ID] Like 'A*'")

'RETIRAR PARTE NUMERAL DO ÚLTIMO VALOR ENCONTRADO ACIMA (SOMENTE NÚMEROS)

Dim vLen As Integer, vRight As Long

'armazena quantidade de caracteres da string

vLen = Len(vMax)

'retira todos os numerais da string, todos caracteres da direita, menos o primeiro

vRight = Right(vMax, vLen - 1)

'SOMA +1 A VARIAVEL VRIGHT PARA GERAR A PRÓXIMA NUMERAÇÃO DE "A", E CONCATENA COM _

O VALOR INICIAL "A" NOVAMENTE

Dim vAutoNum As String

vAutoNum = "A" & Format(vRight + 1, "00000")

o que você precisa fazer agora é, conforme os processos do seu formulário, determinar qual será a primeira letra do campo a ser pesquisada, se será A, ou B, ou C, ou X...

deu pra entender?

caso não, retorne a dúvida...

no aguardo, abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Fera conforme combinado, estou postando o seu BD com essa dúvida solucionada (acredito eu), bom não esqueça de de dizer se resolver pra mim poder dar esse tópico com RESOLVIDO!

Como você poderá ver utilizei o evento após atualizar do campo tipo para chamar uma consulta previamente criada pela função dlookup, depois incrementei 1 e concatenei com o tipo já formatado com os zeros. Tentei separar bem no evento pra talvez você poder melhor entender o que está sendo feito, agora acho que o restante você consegue fazer, ou pelo menos tentar.

Ah sim o que o Elber falou é funcional vale a pena uma analise.

MrMALJ.zip

Link para o comentário
Compartilhar em outros sites

  • 0

mrmalj cara fico muito bom cara muito obrigado... porem ocorreu 1 erro ... quando eu digito por exemplo 2 vezes o rs

ele da um pau la no construtor em vez dele passa pro rs002 ele da um pau... ahh e tipo ele num ta chamando os intens de tipo de material.... intao eu to tendo que digitar ele... mais mesmo assim quando eu digito o rs ele poe no campo do lado rs001... só ta com esse pauzinho mesmo....

primero ele da erro em tempo de execuçao 13

ai diz tipos incompativeis

ai eu do em depurar e mostra esse erro....

segue:

Private Sub TIPMAT_AfterUpdate()
    Dim tSt, juNta As Variant
    tSt = DLookup("[maiorNr]", "cadMatNr")                   (nessa linha da o pau)
    juNta = Me.TIPMAT & Format((Nz(tSt, 0) + 1), "000")
    Me.COD_MATL.Value = juNta
    Me.LOCALIZAÇAO.SetFocus
End Sub

o que sera?

elber sim esta correto porem eu teria que fazer akela parte de determinar a sigla pra cada tipo de material ?

no caso você sito o A mais eu vo ter inumeros tipos....

Editado por brunocasado
Link para o comentário
Compartilhar em outros sites

  • 0
mrmalj cara fico muito bom cara muito obrigado... porem ocorreu 1 erro ... quando eu digito por exemplo 2 vezes o rs

ele da um pau la no construtor em vez dele passa pro rs002 ele da um pau... ahh e tipo ele num ta chamando os intens de tipo de material.... intao eu to tendo que digitar ele... mais mesmo assim quando eu digito o rs ele poe no campo do lado rs001... só ta com esse pauzinho mesmo....

primero ele da erro em tempo de execuçao 13

ai diz tipos incompativeis

ai eu do em depurar e mostra esse erro....

segue:

Private Sub TIPMAT_AfterUpdate()
    Dim tSt, juNta As Variant
    tSt = DLookup("[maiorNr]", "cadMatNr")                   (nessa linha da o pau)
    juNta = Me.TIPMAT & Format((Nz(tSt, 0) + 1), "000")
    Me.COD_MATL.Value = juNta
    Me.LOCALIZAÇAO.SetFocus
End Sub

o que sera?

elber sim esta correto porem eu teria que fazer akela parte de determinar a sigla pra cada tipo de material ?

no caso você sito o A mais eu vo ter inumeros tipos....

isso, no caso eu citei o A, e coloquei-o direto na programação...

acredito que você terá qualquer objeto no formulário que determine se a sigla será A, B, X etc...

a partir de então você determina em uma variável qual a sigla escolhida no formulário, e em vez de jogar o A direto na programação, você joga a variável que estará em constante mudança conforme a interface do usuário...

deu pra entender?

o valor da variável tSt retornado pela função DLOOKUP é uma string?

se sim, não é possível efetuar cálculos (+1, no caso) quando o tipo da variável não for completamente números (integer)...

por isso que na programação que te mandei como exemplo, separei a parte inteira (só números) da sigla (string)...posteriormente concatenei as informações novamente... por exemplo: A123(string completa)... A(String separada)... 123(integer separados) ... 123+1=124(sequencial em numeração)... A124(string completa novamente)

veja se o problema esta realmente nisso, e retorne os resultados...

grande abraço,

Link para o comentário
Compartilhar em outros sites

  • 0

sim cara é uma string pera aí que eu vo tenta....

porem n intendi muito bem a parte de terminar por exemplo no lugar de

vMax = DMax("[Cliente_ID]", "tblcliente", "[Cliente_ID] Like 'A*'")

eu colocaria um objeto sei la vamu supora

vMax = DMax("[Cliente_ID]", "tblcliente", "[Cliente_ID] Like '[tipmat]*'")

é isso? n intendi muito bem.....

agora vo tenta adicionar o codigo de separar o numero e concatenar com a mdb que o mrmalj me mando devolta....

só 1 pequena duvida....

da pra adiciona esses codigos com o procedimento que o mrmalj já fez?

ou vo ter que fazer otro eskema?

é num ta dando...

Link para o comentário
Compartilhar em outros sites

  • 0

Fera dei uma testada aqui e a principio o uso da função STR para transformar o valor em string resolveria, mais logo me debati com outra questão que me fez pensar que em de você adicionar as letras na frente do código você poderia simples guardar o número e quando necessário mostrar concatenado os dois, pois do jeito que está depois que se cadastra um por exemplo "CE001", provavelmente seu proximo produto sairia "CECE001001", vendo dessa forma acho que seria muito melhor armazer o código do material separada da sua numeração, daí com poucas mução no código que já te passei você poderia utilizar sempre sem problemas!

Link para o comentário
Compartilhar em outros sites

  • 0

certo... o problema que eu num manjo de fazer isso... alias ateh tentei adicionar o codigo que o elber passou mais não consrgui fazer funcionar..... tem como você dar uma olhada no codigo? porque tipo vai ter que mudar mta coisa certo... alias a estrutur toda dakele codigo que você passo não é??

tipo manow eu so novato saka num intendo muito bem todas as expressoes ai fico meio perdido..

c der pra você me da mais um help :D rs seria grato

aí cara eu usei a funcao que você falo a str eu fiz assim

Private Sub TIPMAT_AfterUpdate()
    Dim tSt, juNta As Variant
    tSt = DLookup("[maiorNr]", "cadMatNr")
   
    tSt = Str(1 + 1)
    juNta = Me.TIPMAT & Format((Nz(tSt, 0) + 1), "000")
       
    Me.COD_MATL.Value = juNta
    Me.LOCALIZAÇAO.SetFocus
    

End Sub

deu ateh que certo.... tipo já tinha 2 registros com nz sendo assim nz 001 e nz 002 ai depois que eu adicionei a str ele colocou no proximo registyro nz003 ateh ai tdo bem

o problema que na proxima ele já copia o 003..... no caso que funcao eu uso pra ele somar?

Link para o comentário
Compartilhar em outros sites

  • 0

Fera eu fiz um exemplo com o que pensei e disse no comentário anterior ou seja não estou guardando as letras junto com o código, isso a principio resolve, mais para você ter uma ideia de como concatenar isso depois deixei um exemplo de relatório também...

Agora estou só aguardando sua resposta pra mim dar esse tópico como resolvido!

MrMALJ.zip

Link para o comentário
Compartilhar em outros sites

  • 0

aee cara fico muito bomm! vlw mesmo... é melhor mesmo assim...

mais me explica por favor intao c der não é? rs

o que você fez agora?

intao qr dizer que n daria pra junta o ce junto ao numero no cod matl?

Link para o comentário
Compartilhar em outros sites

  • 0

Fera fiz uma analise da funcionalidade do que fiz no exemplo anterior e vi que ao se fazer uma busca pelo código do produto poderia haver retundância já que posso ter vários produtos com o número "001" então o que afiz foi seguinte criei um código de exibição que na verdade será a identificação do produto e o campo numérico ficaria apenas como suporte para auxiliar na alimentação desse novo campo que irá servir para buscas e até mesmo associações de tabelas, e dessa forma acho que finalmente seu problema foi resolvido, por favor confirme

MrMALJ.zip

Link para o comentário
Compartilhar em outros sites

  • 0

Fera como eu disse anteriormente se eu precisasse pegar o valor dou ultimo código para adicionar+1, não seria exatamente o que iria precisas, visto que por exemplo, quando você digitasse o primeiro produto "CE" então ele iria gerar um CE001 certo?

Então no proximo eu iria buscar o ultimo registro de "CE" que teria o código "CE001" então novamente iria forçar a mascara e iria ficar assim "CECE001001" ou seja não ia haver na verdade um acrescimo na códificação do produto, da forma que deixei isso se torna possivel!

Claro que podem haver outras formas de se fazer isso, mais agora foi só o que me veio na cabeça.

t+

ps.: Que precisa de algum help adicional mande uma MP para o brunocasado....

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...