Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pedro1412

verificar se campos estão preenchidos

Recommended Posts

tenho 2 dúvidas:

 

1)creio que essa seja uma dúvida bem básica, mas sou novato no access ainda! eu fiz um cadastro de itens mas eu gostaria que fosse impossível inserir um novo cadastro se algum dos campos estivesse em branco... eu tenho um botao que confirma cadastro, mas o access faz aqueles botoes de navegação que se eu mudar registro ele salva tambem, entao eu queria que soh fosse possivel se todos campos estivessem corretos!

 

2)minha segunda dúvida é um problema mais esquisito. pra fazer esse cadastro eu peguei uma batabase pronta ja, e o ultimo ID que tem (aquele automatico q o access poe) eh 974, mas sempre que quero inserir novos dados esse ID pula pra 65000! não sei o que há de errado e gostaria mto de ajuda nisso tb!

 

ps: eu tenho umas noções de VB acho que fica mais fácil pra resolver a primeira questao.

 

obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Pedro:Dúvida 1:Já há muito tempo não utilizo os formulários criados pelos assistentes do Access. Apesar de facilitarem muito a vida em se tratando de pequenos sistemas, aqueles famigerados "botões de navegação" são quase incontroláveis, além de deixarem o formulário com um aspecto horroroso. Aliás, acho que foi por isso que passei a criar meus próprios formulários, e sem tais "recursos". Se puder, crie também um novo formulário, mas que não esteja relacionado a uma tabela ou consulta específica. Você pode exibir, incluir, editar ou excluir os registros desejados através de consultas SQL. Por exemplo, suponhamos que deseja incluir registros numa tabela de clientes por intermédio de um formulário que contém uma caixa de texto (para especificar o nome) e uma caixa de combinação (para selecionar o estado civil). Acrescente um botão de comando no formulário e, no evento OnClick daquele componente, insira o código abaixo (as variáveis não estão declaradas; você pode fazer isso no próprio procedimento ou declará-las num módulo global - se forem de uso geral ou seja, passíveis de serem reaproveitadas em outros procedimentos):If IsNull(txtNome) Then DoCmd.Beep MsgBox "É necessário especificar o Nome do cliente.", 48, "Banco de Dados" txtNome.SetFocus Exit SubElseIf IsNull(cboEstadoCivil) Then DoCmd.Beep MsgBox "É necessário selecionar o Estado Civil.", 48, "Banco de Dados" cboEstadoCivil.SetFocus Exit SubElse Set db = CurrentDb strCriterio = "[Nome] = '" & txtNome & "'" Set rst = db.OpenRecordset("tblClientes", dbOpenDynaset) rst.FindFirst strCriterio If rst.NoMatch Then db.Execute "INSERT INTO tblClientes (Municipio, EstadoCivil) VALUES (""" & txtNome & """, '" & cboEstadoCivil & "')" DoCmd.Beep MsgBox "Cliente cadastrado com sucesso.", 48, "Banco de Dados" Else DoCmd.Beep MsgBox "Cliente já cadastrado.", 48, "Banco de Dados" txtNome = Null txtNome.SetFocus Exit Sub End If rst.Close db.Close Set db = NothingEnd IfComo vê, antes de executar a consulta, o procedimento exige que os componentes estejam preenchidos. Perceba, também, que isso é bastante útil para formulários com poucos componentes, mas a solução deixa de ser prática se há dezenas de caixas de texto, de combinação, etc., a serem preenchidas (e checadas). Para isso, há uma outra solução que verifica os componentes por tipo, porém não gera mensagens personalizadas. Mas creio que isso atenderá suas necessidades. Para as demais operações de registro (exclusão - DELETE e edição - UPDATE), favor verificar o arquivo de Ajuda do Access, e são tão simples quanto o método descrito acima.Dúvida 2:A aparente anomalia decorre certamente porque o intervalo entre os registros mencionados foi excluído ou, mais provável, que o "proprietário anterior" da base de dados estava fazendo testes de inclusão na tabela, vindo a acrescentar um registro personalizado no campo ID de número 64 999, via consulta SQL. Nesse caso, a autonumeração passa a considerar a seqüência a partir do maior registro (mesmo que ele não exista mais). Se quiser solucionar o problema, é simples: na estrutura da tabela, apague o campo ID e, em seguida, crie ele novamente, com o mesmo nome e declarando como o mesmo tipo de dados (Autonumeração). Se tudo correr bem, a seqüência será refeita. Antes de aplicar isso, porém, faça um backup (cópia) da tabela, mas não tente essa solução se o campo ID corresponda ao código REAL do registro. Por exemplo, se o valor ID de um cliente é 12345, e ele é utilizado somente para identifica-lo de maneira exclusiva em operações de edição e exclusão, tudo bem, mas se 12345 é também código do cliente na empresa, aí então há grande possibilidade que ele venha ser alterado, gerando inúmeros problemas.Espero que isso ajude.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.