• 0
Sign in to follow this  
Camaleao_Du_Cerrado

Campos Do Formulario Em Branco

Question

Olá Pessoal,

Solicito apoio em solucionar a seguinte situação: Tenho um formulário baseado em uma tabela e gostaria que quando este formulário fosse ativado, o mesmo abrissse com seus campos "em branco" (sem registros) para que o usuário escolhesse em realizar uma consulta ou então gravar um novo registro.

Share this post


Link to post
Share on other sites

11 answers to this question

Recommended Posts

  • 0

cara...pra ser bem sincero não sei se existe alguma forma, através de controles do access, de deixar sempre os campos do formulário, direto de sua tabela, em branco...

o que você pode fazer é uma rotina para que os campos sempre estejam no modo de adição de novo registro...

por exemplo, quando abrir o formulário, já adicionar um novo registro...

quando o usuário akbar de salvar um novo registro, automaticamente já faz adicionar outro novo registro...entendeu?

dessa forma o usuário sempre ficara preso em campos em branco, sem nenhum registro aparecendo...e se você ainda tirar a 'Barra de Navegação", não é nem possível o usuário mudar os registros para ver os cadastrados anteriormente...

(ps. Barra de Navegação são os botões que o access automaticamente insere no seu formulário/relatório para que o usuário possa controlar os registros para 'próximo', 'anterior', 'novo', 'excluir', etc...Na verdade essa Barra de Navegação é uma propriedade do seu formulário que dá para ser retirada!! Fica na parte inferior esquerda da sua janela de formulário/relatório...)

mas...se você quer usar os mesmos campos para o usuário fazer pesquisa ou cadastrar novos registros na tabela, aconselho a você que não use diretamente os campos de sua tabela...

você vai criar um formulário com sua fonte de registro indicando a tabela, mas não vai utilizar esses campos efetivamente...vê se você consegue me entender:

todos os campos da sua tabela vão estar invisíveis, ou seja, não vão aparecer para o usuário, apenas no modo design que eles vão poder visualizados...

em vez dos campos de sua tabela, você vai colocar CAIXAS DE TEXTO não-acopladas simulando os campos originais de sua tabela...

sempre quando você entrar no formulário, você zera o valor dessas caixas de texto....como elas não serão ligadas à sua tabela, se você apagar o conteúdo delas isso não vai interferir nos seus registros da tabela...

e então, quando o usuário mandar cadastrar um novo registro, você faz uma programação para indicar os valores das caixas de texto para os respectivos campos de sua tabela...

ou se não, quando ele mandar pesquisar, você apenas efetua a pesquisa sem mandar nenhum valor para os campos de sua tabela...

deu pra entender?

espero que sim...

acho que esse método de simulação de campos vai dar bem certinhu pro seu problema...espero que ajude!!!

nos retorne o resultado, ok?

abração!

Share this post


Link to post
Share on other sites
  • 0

Elber, entendi sua explicação. Porém, acho que a mesma não irá funcionar no meu caso.

O que acontece é que mesmo se o registro já existir no banco, o mesmo poderá ser atualizado. E da forma como você explicou, na pesquisa os campos ficarão bloqueados.

Deixa ver se consigo ser mais claro.

O banco que estou desenvolvendo é para o controle de entrada e saída de documentos.

Se é a primeira vez que o documento entra no departamento, ou seja, ele não possui registro no banco. Então terei que lançá-lo. Agora, se já existir um registro do mesmo no banco, terei apenas que lançar o dia de sua entrada/saída. Nesse banco, lanço as entradas e as saídas dos documentos além de outras informações pertinentes.

Mas como saber se um documento já existe ou não no banco?

É aí que entra os campos em branco. Quando o form for aberto, ele estará preparado para realizar uma consulta. Caso o documento já exista no banco, será lançada a atualização do mesmo. Caso a consulta não retorne em nada, o form continuará em branco (sem a exibição de dados)

Estive pensando em colocar um botão que liberasse o form para consulta. Como se fosse um botão Edição/Consulta. Quando o form estivesse aberto ele viria com os campos em branco e, como não aparecem registros você não iria poder alterar e nem salvar nada. Quando liberasse e form para a consulta, o mesmo, após realização da consulta, voltaria para o status de Edição.

Outra coisa.

Tem como o ponteiro apontar para o último registro (registro em branco)???

Pois, quando abro o form o ponteiro está na posição do primeiro registro. E quando eu navego pelo registros encontro o último registro em branco.

Share this post


Link to post
Share on other sites
  • 0

hummm...intendi bem o que você quer agora...

mas, só uma dúvida...caso seja a segunda vez que o registro esteja sendo cadastrado, você vai apenas atualizar os dados do mesmo...certo? mas essa atualização vai ficar armazenada em um novo registro, você vai salvar por cima do antigo ou vai 'tentar armazenar tudo num registro só' com vários campos indicando todas as entradas e todas as saídas de documentos?

bom, se entendi bem mesmo o que você quer, vou tentar te explicar o que fiz uma vez, numa situação bem parecida:

tinha um formulário em que o usuário efetuava a intenção de matriculas em determinados cursos que ele se interessava na escola. Então, os cursos eu trazia através de relacionamento...o usuário (aluno) selecionava o curso e digitava todos seus dados pertinentes à uma futura matrícula.

no quadro Dados Pessoais do usuário, a primeira informação que o usuário fornecia para o sistema era o RG. e, após ele digitar o RG, o sistema automaticamente efetuava a tal pesquisa para verificar se o registro já existia...se existisse, eu trazia todas as informações na tela e deixava o usuário mudar apenas o que não é fixo...ou seja, os dados pessoais, cpf, filiação, data de nascimento, deficiências, etc, eram todos bloqueados...

quando o usuário selecionava seu novo curso com as outras informações diferents em relação ao horário e tals, salvava e gerava um novo registro, igualzinhu com o mesmo aluno, mas apenas com as informações do curso diferente...

caso o rg do aluno ainda não fosse encontrado (ainda não fosse cadastrado), os campos ficavam em branco esperando a nova entrada de dados...

bom, pra fazer isso eu usei a função dlookup logo após atualizar o rg...

essa função permite que, se os dados forem encontrados, automaticamente já preenche os campos...caso contrário, os campos ficam em branco!!!

na verdade, assim que eu entrava no meu formulário, todos os campos já estavam em modo de adição, num novo registro (EM BRANCOS)...a pesquisa e busca de informações de registros já existentes na verdade não era necessariamente o registro antigo (ou seja, eu não trazia aquele registro para a tela, para editá-lo), mas apenas as informações contidas nos campos eu tornava iguais aos meus "novos campos"...

tudo era um novo registro, porém com os mesmos dados...

se for isso o que você quer agora, dá uma fuçada na função DLookup...tem vários tópicos aqui na comunidade, inclusive um que eu mesmo criei...de qualquer forma, acho que essa função de uma forma ou de outra vai resolver seu problema...

em relação ao registro em branco que você mencionou...na verdade, aquele registro em branco é um NOVO REGISTRO...

ao estar no ultimo registro cadastrado de sua tabela e apertar mais uma vez para o "Próximo Registro", ele automaticamente insere um novo registro em branco...

fazer isso através do botão PRÓXIMO ou através do botão NOVO REGISTRO tem a mesma função e o resultado é o mesmo...deu pra entender?

nas propriedades do seu formulário, vá em eventos e no evento AO ABRIR, insira essa linha de código:

'insere um novo registro logo que entra no formulário (campos em branco)

DoCmd.GoToRecord , , acNewRec

Espero que ajude...

Abraço,

Share this post


Link to post
Share on other sites
  • 0

Fala Elber, beleza mano?

Camaradinha.... depois que li seu post quebrei a cabeça procurando o exemplo do Dlookup que me indicou. Encontrei alguma coisa aqui no forum e em outros também. Consegui montar o código, conforme descrito abaixo, só que o mesmo ainda não está "redondinho". Não sei se é a forma como montei o código, as tabelas/relacionamentos ou os formulários. Tentarei descrever o que está acontecendo.

Criei um form. Dentro dele coloquei um subform. E dentro desse subform, mais uns subforms.

A consulta dlookup está acontecendo no primeiro subform. Coloquei um botão Pesquisar nesse subform que dispara a rotina do dlookup. A consulta é executada como previsto. Porém, ao tentar fechar o form ou sair do campo de pesquisa, o access retorna uma mensagem de erro do índice. (Tentei enviá-la mas o forum deu erro no envio)

Private Sub Cmd_pesquisar_Click()

Dim consultadoc As String

consultadoc = Me.Numero_Doc

consultadoc = """" & consultadoc & """"

Me.Valor.Value = DLookup("[Valor]", "Tab_Pec_Dados_Fixos", "[Numero_Doc]=" & consultadoc)

Me.Assunto_Doc.Value = DLookup("[Assunto_Doc]", "Tab_Pec_Dados_Fixos", "[Numero_Doc]=" & consultadoc)

Me.Valor_Mensal.Value = DLookup("[Valor_Mensal]", "Tab_Pec_Dados_Fixos", "[Numero_Doc]=" & consultadoc)

End Sub

Poderia, mais uma vez, me ajudar?????

Só acrescentando o post que enviei.

O comando para força o form a abrir no novo registro está sendo usado.

Será que é por isso que o access retorna a mensagem de erro no indice?

Mano, o erro estava ocorrendo exatamente pelo comando de abrir em um novo registro. Quando a consulta era feita, ele questionava o valor do campo, alegando que ele estava duplicado. Retirei a linha de comando e a consulta funcionou. Só que voltei para o ponto de origem. Como fazer para o form abrir com os campos em branco?

Share this post


Link to post
Share on other sites
  • 0

salve salve camaleôn...supimpa?

cara...fica complicado dizer pra você onde está o erro, já que tenho seus forms e subforms apenas de forma abstrata na mente...

mas, como você disse, erro no índice...certo?

talvez seja possível que seja realmente erro na duplicação da chave primário mesmo...na verdade, os campos que você manda receber os valores da consulta devem ser NÃO-ACOPLADOS...

acredito que o erro seja o seguinte:

você mandou abrir o form adicionando um novo registro...ou seja, nesse caso, os campos estão branquinhos e prontos para receber os dados...

mas estes dados que você akbou de mandar os campos em brancos receberem (novo registro), já existem, pois aliás, você está efetuando uma consulta...e é natural que a chave primária não aceite valores duplicados em sua tabela...

não sei qual é o seu planejamento, seus objetivos, mas, se não for interferir, aconselho a você que torne os campos que recebem os valores da pesquisa como NÃO-ACOPLADOS...

apenas apague a Fonte de Controle deles...e faça os testes novamente...

no caso da função dlookup, não está rodando "redondinho"?

não sei se isso enflue em algo, mas no comecinho, quando você indica o campo que vai receber o valor da pesquisa, apaga a expressão .Value...

deixe apenas o seguinte: me.NOME_DO_CAMPO = Dlookup(...)

espero retorno da solução...

espero também que dê certo...rs

abração!

Share this post


Link to post
Share on other sites
  • 0

Elber, meu caro

O erro meu amigo era no índice mesmo. Só foi desacoplar os campos que a pesquisa funcionou (por enquanto, pois a verdade é que ainda terei que solicitar seus préstimos no futuro, pois modificarei alguns detalhes).

A solução que encontrei para "resolver" o meu problema é a seguinte:

Ficarei com o meu form_principal com alguns dos seus campos desacoplados e bloqueados (mais precisamente os campos de chave) para que ele abra com os campos limpos. Os outros campos do formulário serão para o usuário atualizar os dados após a pesquisa. Para executar a pesquisa, criarei um outro formulário (form_pesquisa que será ativado no botão que coloquei no form_principal). Neste form colocarei campos para que o usuário informe os parametros da consulta. O retorno da consulta, após o clique no botão pesquisar do form_pesquisa, será no form_principal. Se caso a pesquisa retorne em branco, ou seja, não exista registro no banco, você terá no form_principal um botão novo_registro. Esse botão irá levar o usuário para um formulário igual ao form_principal (form_novo_registro). No form novo_registro irei colocar a linha de comando para que o mesmo se abra em novo registro. Creio que essa será a solução para o que eu estava procurando. Irei desenvolver a idéia... espero que dê certo. Posto quando concluir. Valeu pela ajuda de sempre.

Share this post


Link to post
Share on other sites
  • 0

humm...que bom que deu certo a história dos campos não-acoplados...isso aí!

você tava me explicando...vai criar um outro formulário para o usuário determinar os parametros da pesquisa não é??

na sua tabela, tem algum campo único e exclusivo para cada registro...por exemplo, um campo RG, no caso de cliente, um campo CJPN, no caso de pessoa jurídica...enfim

dessa forma, assim que o usuário terminasse de digitar esse campo exclusivo, o sistema automaticamente já faria a pesquisa e, se encontrasse resultados, mostraria os dados na tela do próprio formulário...caso contrário, os campos ficam em branco para a entrada de novos dados...

não sei se isso foge do que você pretende, mas caso esteja nos seus parâmetros, acho uma idéia mais fácil e leve...

espero retorno dos seus resultados...

abração! bom fds!

Share this post


Link to post
Share on other sites
  • 0

Boa tarde Elber

Empaquei de novo (pra variar)

Como comentei antes, estou fazendo um form com os critério da pesquisa já pré-definidos. Ou seja, o usuário escolhe a forma de pesquisa, digita os valores e clica no botão pesquisar. O bicho pega agora. Como fazer os dados da consulta aparecerem no form_principal. Lembrando que este form é que encontram-se os campos em branco e é nele também que coloquei a o comando Dlookup. Consegui fazer a consulta, mas consegui apenas usando um botão pesquisar. o usuário insere o dado e clica no botão pesquisar. não consegui fazer a consulta do modo que em falou. Após a inserção de dados o sistema retornar a consulta. Outro problema: O botão pesquisar tá funcionando direitinho com o comando Dlookup, isso quando existe informação no campo. E quando não existir dado? É nessa hora meu brother que o bug acontece. Ele não permite informação Null no campo e dá pau. Será que pode me ajudar? Obrigado!

Share this post


Link to post
Share on other sites
  • 0

Faça uma validação do campo critério antes de executar a consulta

dim mmm

if isnull(seuCampoCriterio) then

mmm=msgbox("É necessário informar o criterio para busca",vbokonly+vbinformation)

me.seucampoCriterio.setfocus

else

<EXECUTE SUA BUSCA>

end if

Outra solução é você utiliza a função NZ para não retornar valores nulos ou invalidos, assim:

nz(dlookup(................),0)

No caso acima o NZ irá retornar 0 toda vez que dlookup encontrar nulo, mais isso talvez não resolva pra você já que o problema está falta de criterio, então acho que o primeiro exemplo.

Share this post


Link to post
Share on other sites
  • 0

Salve, salve galerinha do fórum.

Estive fora por algum tempo, devido a problemas que fogem do meu controle.

Em consequência tive de deixar de lado o meu projeto de BD. Porém, estou de volta!!!

Espero continuar contando com o apoio/suporte de sempre.

Abraços a todos,

Camaleão du Cerrado.

Share this post


Link to post
Share on other sites
  • 0
Salve, salve galerinha do fórum.

Estive fora por algum tempo, devido a problemas que fogem do meu controle.

Em consequência tive de deixar de lado o meu projeto de BD. Porém, estou de volta!!!

Espero continuar contando com o apoio/suporte de sempre.

Abraços a todos,

Camaleão du Cerrado.

ixi, o tempo também tá osso aqui...

mas sempre que der to passando por aqui....

seja bem vindo novamente!!!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this