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

(Resolvido) Help De Entrada De Dados! Autopreenchimento!


RicardoMP

Pergunta

Gostaria de saber como fazer para quando digitar um registro em um campo, outro seja preenchido a partir do que fosse preenchido neste.

Por exemplo, tenho 2 tabelas: PRODUTO e PEDIDO. Na tabela pedido, tenho um campo chamado CÓDIGO e outros DESCRIÇÃO, VALOR, etc., gostaria que quando preencher o campo código, o campo ao lado (valor, descrição...), já selecionasse o valor correto (a partir do que tenho cadastrado na tbl produto) e deixasse além de visível na célula, também desabilitado para edição, fazendo com que não ocorra redigitação e não fique aberto para erro do usuário.

Obrigado.

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Ricardo...

dê uma olhada nos tópicos do fórum...tem vários falando sobre isso...

só pra adiantar, você vai ter que usar uma função chamada DLOOKUP...

nos retorne,

abraços!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --ricardomp --

Então Elber, estou procurando sobre isso no fórum, só queria saber se esta função que você citou é utilizada em MÓDULOS no Access, porque se for eu terei que arrumar outra maneira de fazer, sem programação em VBA.

Se puder me ajudar, agradeço + 1 x. Obrigado.

Ricardo...

dê uma olhada nos tópicos do fórum...tem vários falando sobre isso...

só pra adiantar, você vai ter que usar uma função chamada DLOOKUP...

nos retorne,

abraços!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Ricardo --

Bom dia, li este tópico mas ele está falando de atualização de campos, no meu caso eu preciso de autopreenchimento. Não sei se por um acaso o link pode estar errado ou eu que não achei, mas mesmo assim, obrigado.

Se você tiver algo, p.f. me passe, grato + 1 x.

Ricardo

----

Link para o comentário
Compartilhar em outros sites

  • 0

Veja bem o exemplo mostra como você pega dados em uma tabela e atualiza (preenche) o de outra, dá uma lida com calma que você verá que é isso que está procurando, claro faça as devidas adaptações (nomes de campos e tabelas) que com certeza irá fucionar.

Link para o comentário
Compartilhar em outros sites

  • 0
Então Elber, estou procurando sobre isso no fórum, só queria saber se esta função que você citou é utilizada em MÓDULOS no Access, porque se for eu terei que arrumar outra maneira de fazer, sem programação em VBA.

Se puder me ajudar, agradeço + 1 x. Obrigado.

QUOTE(Elber Carretoni @ 17/03/2007 - 06:43)

Ricardo...

dê uma olhada nos tópicos do fórum...tem vários falando sobre isso...

só pra adiantar, você vai ter que usar uma função chamada DLOOKUP...

nos retorne,

abraços!

Ricardo, você utilizará VBA assim...entretanto, não necessariamente necessitará de um Módulo...você pode gerar o código automaticamente no formulário...

dê uma lida com calma no tópico que o mrmalj passou que é exatamente o que você quiser...

se ainda assim não conseguir entender, dê mais um retorno que tentamos esclarecer melhor as coiasas pra você..

abraços,

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

  • 0

Obrigado pela ajuda, deu certo mesmo, eu não tinha compreendido muito isso.

O que eu gostaria de saber agora é um exemplo p/ se eu quiser que + d 1 campo seja atualizado, nesse exemplo eu digito o código e o bd atualiza o preço do produto. O legal é que você pode deixar para fazer isso sempre que o usuário alterar o código e também deixei com a propriedade Bloqueado em SIM, dessa forma não há como alterar o valor. Só me descreva como proceder para, como disse, atualizar mais de um campo.

Como devo completar o código para, por exemplo, atualizar além do valor, a DESCRIÇÃO e UNIDADE DE MEDIDA? Abaixo está o meu exemplo:

Private Sub detProCod_AfterUpdate()

' If Me.detPreco = 0 Or IsNull(Me.detPreco) Then

Me.detPreco = DLookup("[proPreco]", "tblProdutos", "[proCodigo]=" & Me.detProCod)

' End If

End Sub

Acho que assim consigo fechar essa minha dúvida, obrigado + 1 x.

---

Veja bem o exemplo mostra como você pega dados em uma tabela e atualiza (preenche) o de outra, dá uma lida com calma que você verá que é isso que está procurando, claro faça as devidas adaptações (nomes de campos e tabelas) que com certeza irá fucionar.

Então, assim como agradeci o Sr. Mr. MalJ, agradeço-o também, deu certo o exemplo, muito obrigado, está sendo d imensa serventia.

Gostaria de saber c você sabe ou c acho aqui no fórum sobre um procedimento para REUTILIZAR "espaços vazios" quando uso um campo de AutoNumeração, como código por exemplo, pois pelo pouco que seu, o Access não reutliza os campos deletados ou alterados, e sim só vai criando outras numerações sequenciais, "inchando" o banco desnecessariamente ao meu ver.

Bom dia.

---

Então Elber, estou procurando sobre isso no fórum, só queria saber se esta função que você citou é utilizada em MÓDULOS no Access, porque se for eu terei que arrumar outra maneira de fazer, sem programação em VBA.

Se puder me ajudar, agradeço + 1 x. Obrigado.

QUOTE(Elber Carretoni @ 17/03/2007 - 06:43)

Ricardo...

dê uma olhada nos tópicos do fórum...tem vários falando sobre isso...

só pra adiantar, você vai ter que usar uma função chamada DLOOKUP...

nos retorne,

abraços!

Ricardo, você utilizará VBA assim...entretanto, não necessariamente necessitará de um Módulo...você pode gerar o código automaticamente no formulário...

dê uma lida com calma no tópico que o mrmalj passou que é exatamente o que você quiser...

se ainda assim não conseguir entender, dê mais um retorno que tentamos esclarecer melhor as coiasas pra você..

abraços,

Link para o comentário
Compartilhar em outros sites

  • 0

É simples basta você repetir o mesmo procedimento para os outros campos

Me.detPreco = DLookup("[proPreco]", "tblProdutos", "[proCodigo]=" & Me.detProCod)

me.descrição=dlookup("[suaDescrição]","tblProdutos", "[proCodigo]=" & Me.detProCod)

me.unidade=dlookup("[suaUnidade]","tblProdutos", "[proCodigo]=" & Me.detProCod)

bom quanto a autonumeração li algo sobre como reutilizar numero deletados, não lembro onde foi, porém eu diria para você utilizar um processo que incremente sempre o ultimo número do seu controle no registro, tipo crie uma consulta que mostre somente o ultimo ou maior valor da seu campo código e faça-o incrementar 1, algo mais ou menos assim:

me.condigoControle.value=nz(dlookup("[seuCodigo]',"suaConsulta"),0)+1

ou ainda assim sem consulta

me.codigoControle.value=nz(DMáx("[seuCodigo]',"suaTabela"),0)+1

Link para o comentário
Compartilhar em outros sites

  • 0

...de volta... Com relação a autonumeração que te perguntei, gostaria de saber aonde vou para entrar com esse código que você me passou, e qual dos 2 é mais aconselhável. Obrigado.

---

É simples basta você repetir o mesmo procedimento para os outros campos

Me.detPreco = DLookup("[proPreco]", "tblProdutos", "[proCodigo]=" & Me.detProCod)

me.descrição=dlookup("[suaDescrição]","tblProdutos", "[proCodigo]=" & Me.detProCod)

me.unidade=dlookup("[suaUnidade]","tblProdutos", "[proCodigo]=" & Me.detProCod)

bom quanto a autonumeração li algo sobre como reutilizar numero deletados, não lembro onde foi, porém eu diria para você utilizar um processo que incremente sempre o ultimo número do seu controle no registro, tipo crie uma consulta que mostre somente o ultimo ou maior valor da seu campo código e faça-o incrementar 1, algo mais ou menos assim:

me.condigoControle.value=nz(dlookup("[seuCodigo]',"suaConsulta"),0)+1

ou ainda assim sem consulta

me.codigoControle.value=nz(DMáx("[seuCodigo]',"suaTabela"),0)+1

Link para o comentário
Compartilhar em outros sites

  • 0

Qualquer um dos códigos faz a mesma coisa o primeiro utiliza consulta o segundo não, e quanto a onde você for utilizar, acredito que logo após você começar a inserção do novo registro OK!

(

Link para o comentário
Compartilhar em outros sites

  • 0

Vou te exemplificar, ok!

Então, só para fazer um teste eu criei uma tabela (tblCadastro) apenas com os campos: cadCodigo (AutoNumeração) e cadNome (Texto). Depois disso gerei um formulário dessa tabela (frmCadastro), fui no modo estrutura do formulário e acessei as propriedades do campo cadNome, na guia Evento escolhi "antes de atualizar" e cliquei nas reticências (...), na janela escolhi construtor de código... estou certo até aqui?

Na janela do VBA, copiei e colei o 2° código que me deu (sem consulta) e fiz as alterações, como abaixo:

seu código --->> Me.codigoControle.Value = Nz(DMáx("[seuCodigo]", "suaTabela"), 0) + 1

meu código --->> Me.codigoControle.Value = Nz(DMáx("[cadCodigo]", "tblCadastro"), 0) + 1

Eu acho que está faltando algo para alterar corretamente o código acima. Bom, salvei tudo e fiz um teste, o Access permitiu digitar o 1° nome mas qd deu um TAB para passar para o próximo registro apareceu um erro na tela indicando o trecho " DMáx selecionado ", e na janela dizia mais ou menos assim:

Erro de compilação:

'Sub' ou 'Function' não definda

Desculpe a minha falta de conhecimento mais afundo, veja se você pode me dar mais uma força, grato mais uma vez.

---

Qualquer um dos códigos faz a mesma coisa o primeiro utiliza consulta o segundo não, e quanto a onde você for utilizar, acredito que logo após você começar a inserção do novo registro OK!

(

Link para o comentário
Compartilhar em outros sites

  • 0

Bom você tem que você o procedimento logo ao alterar o primeiro campo, ou seja, na propriedade após atualizar, faça um codigo que teste se seu codigo está vazio e se tiver faça o incremento:

if isnull(Me.codigoControle) then

Me.codigoControle.Value = Nz(DMáx("[cadCodigo]", "tblCadastro"), 0) + 1

end if

Assim ele só será incrementado se estiver vazio e quando você precisar alterar um resgistro anterior ele não irá mexer no código ok!

Link para o comentário
Compartilhar em outros sites

  • 0

Não deu certo ainda... Fiz tudo do jeito que me orientou. Mas antes mais uma pergunta: o código que você me deu não precisa ser alterado em nada não é? Se sim, não está surtindo efeito mesmo, fiz um teste cadastrando 10 registros, depois exclui o número 5 e cliquei em novo registro para cadastrar mais um, só que ele foi pro n° 11 e não "reaproveitou" o número deletado. É isso que eu quero, entende. Obrigado, vamos lá...!

---

Bom você tem que você o procedimento logo ao alterar o primeiro campo, ou seja, na propriedade após atualizar, faça um codigo que teste se seu codigo está vazio e se tiver faça o incremento:

if isnull(Me.codigoControle) then

Me.codigoControle.Value = Nz(DMáx("[cadCodigo]", "tblCadastro"), 0) + 1

end if

Assim ele só será incrementado se estiver vazio e quando você precisar alterar um resgistro anterior ele não irá mexer no código ok!

Link para o comentário
Compartilhar em outros sites

  • 0

Veja bem para poder reaproveitar a numeração, seria precisar fazer uma rotina pra ir contando os números identificar a falta desse determinado numero é utiliza-lo, porém me parece que isso tornaria o sistema lento, pois se toda vez que ele for incluir ele tiver que fazer essa comparação, tudo bem enquanto o BD estiver pequeno porém quando você tiver muitos dados ficará impraticável.

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