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

Verificar Registro ou Código


new_rayderss

Pergunta

Bom pessoal estou começando em visual basic e estou tendo um probleminha:

Como o título do tópico diz estou tentando fazer isso só que não está dando certo, e tb nem sei se estou fazendo certo.

Private Sub cmdGuardar_Click()

Do While (Data1.Recordset.EOF = False)
If Me.txtCodCli = "" Then
MsgBox "Informe o código do cliente", vbOKOnly, "Campo Vazio"
Exit Sub
ElseIf Data1.Recordset.Fields(0) = txtCodCli.Text Then
MsgBox ("Este Código já existe.")
txtCodCli.Text = ""
txtCodCli.SetFocus
Exit Sub
Else
MsgBox ("Código aceito.")
txtCodCli.Enabled = True
End If
Loop

eu tentei isso, porém não deu certo, o progrma trava tudo e nada faz.

Alguém pode me dar uma ajuda?

Agradeço a atenção. ^^

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

O programa "trava" porque se trata de um loop infinito

Ele faz tudo "certo", mas no final não passa para o próximo campo da tabela

Tenta fazer isso:

Do While not Data1.Recordset.EOF
If Me.txtCodCli = "" Then
MsgBox "Informe o código do cliente", vbOKOnly, "Campo Vazio"
Exit Sub
ElseIf Data1.Recordset.Fields(0) = txtCodCli.Text Then
MsgBox ("Este Código já existe.")
txtCodCli.Text = ""
txtCodCli.SetFocus
Exit Sub
Else
MsgBox ("Código aceito.")
txtCodCli.Enabled = True
End If
Data1.RecordSet.MoveNext
Loop

Se der certo posta aí !

Pode ajudar outros membros com o mesmo problema

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

  • 0

Cara a idéia funciona só que falta alguma coisa.

Os problemas que deram foram os seguintes:

- quando não há registro algum e eu add esses dois novos registros, ele simplesmente aceita sem falar nada é como aquelas condições não valessem de nada.

- quando vou editar aí mudo o numero do código para algo já existente, aí que funciono, só que aquele move next faz com que apague as informações já add. aí eu tirei aquilo e fiz isso

Do While Not Data1.Recordset.EOF
If Me.txtCodCli = "" Then
MsgBox "Informe o código do cliente", vbOKOnly, "Campo Vazio"
Exit Sub
ElseIf Data1.Recordset.Fields(0) = txtCodCli.Text Then
MsgBox ("Este Código já existe.")
txtCodCli.Text = ""
txtCodCli.SetFocus
Exit Sub
Else
MsgBox ("Código aceito.")
txtCodCli.Enabled = True
End If
'Data1.Recordset.MoveNext
Exit Sub
txtNome.SetFocus
Loop

só não entendi porque quando vai de 1° não funciona.

Link para o comentário
Compartilhar em outros sites

  • 0

ta meio confuso... o q esse codigo devia fazer exatamente??

não entendi aquela parte do "codigo já existe". não da pra procurar codigo assim. dessa forma q você fez ele vai comparar apenas com o registro atual. ou você percorre todos os registros comparando o codigo, ou você faz um select q procure por ele (melhor).

provavelmente é por isso q ocorre isso aqui:

- quando não há registro algum e eu add esses dois novos registros, ele simplesmente aceita sem falar nada é como aquelas condições não valessem de nada.

apesar de q não entendi pra q serve essas condicoes.

quanto a isso:

- quando vou editar aí mudo o numero do código para algo já existente, aí que funciono, só que aquele move next faz com que apague as informações já add. aí eu tirei aquilo e fiz isso

cada vez q você altera ele altera os dados so no recordset na memoria. não altera o bacno direto. pra altera o banco, você tem q dar um update antes.

então antes do movenext de um update.

agora acho q o seu codigo não precisa de while nem de movenext... seila não entendi direito o q era pra fazer. mas o while você usa so quando for percorrer tudo. você parece q ta tentando altera um unico registro. então não precisa de while.

Link para o comentário
Compartilhar em outros sites

  • 0

hum... tipo, imagino q você tenha um campo codigo no banco. ai imaginando q o nome do campo seja Codigo você faria assim ó:

Data1.Recordset.MoveFirst 'Move pro primero registro
Data1.Recordset.FindFirst "Codigo = " & txtCodigo.Text 'Aqui ele le um por um a partir do atual ate achar o codigo

If Data1.Recordset.EOF Then 'EOF significa q chegou no final do arquivo. E se chego no final é porque não encontro o codigo
    -- Não Encontrou --
Else
    -- Encontrou --
End If[/code] caso o codigo seja do tipo texto, você tem q fazer o find entr aspa, assim:
[code]Data1.Recordset.FindFirst "Codigo = '" & txtCodigo.Text & "'"

não uso o componente data, mas acho q é mais o menos isso, qualquer problema poste.

Link para o comentário
Compartilhar em outros sites

  • 0
e o segundo caso foi em relação se fosse um nome o código por exemplo?

hum... é... tipo no banco de dados quando você cria um campo você pode definir o tipo, se é numero (em sql: int, float, etc.), texto (no sql: varchar, etc), data, etc. quando é texto o campo tem q ir entre ' '. quando é numero tem q sem aspa (apesar de q tem banco q aceita com aspa). data tb tem q entre aspa na maioria dos bancos, mas no access tem q ser entre ##.

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...