Usuário com melhor resposta
Validar Antes de Salvar

Pergunta
-
Boa tarde, como faço uma verificação antes de efetivar em Banco?Sou novato com Windows Forms.
Tenho esse código abaixo:
Code SnippetIf VerificaHexaCadastrado(edtHexa.Text) Then 'Verifica se encontrou
MessageBox.Show("Hexadecimal já cadastrado.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning)
edtCodigo.Focus()
Else
For i As Integer = 0 To Int(edtQtdd.Text) - 1
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\Server\Pagina_ASP\Dados\HexaCelular.mdb")
Dim cmd As New OleDbCommand("Insert into CadHexaCelular(CodProduto, DescProduto, DataEntCentral, Loja, HexaCel) values (@Cod, @Desc, @Data, @Loja, @Hexa)", conn)
conn.Open()
cmd.Parameters.Add(New OleDbParameter("@Cod", edtCodigo.Text))
cmd.Parameters.Add(New OleDbParameter("@Desc", lblDescricao.Text))
cmd.Parameters.Add(New OleDbParameter("@Data", FormatDateTime(CDate(edtData.Text), DateFormat.GeneralDate)))
cmd.Parameters.Add(New OleDbParameter("@Loja", cboxLoja.Text))
'Verifica se o campo hexadecimal está em branco ou menor que 15 caracteres
If (Len(edtHexa.Text) < 15) Or (Len(edtHexa.Text) > 15) Then
Dim hexa As String = InputBox("Hexadecimal (Núm.: " & CStr(i) + 1 & ") :", "Digite o Hexadecimal")
If (VerificaHexaCadastrado(hexa) = True) Or ((Len(hexa) < 15) Or (Len(hexa) > 15)) Then
edtHexa.Text = InputBox("Hexadecimal já cadastrado ou com quantidade de caracteres diferente de 15." & _
"(Núm.: " & CStr(i) + 1 & ") :", "Digite o Hexadecimal")
End If
edtHexa.Text = hexa
End If
cmd.Parameters.Add(New OleDbParameter("@Hexa", edtHexa.Text))
edtHexa.Text = ""
cmd.ExecuteNonQuery()
conn.Close()
Next i
MessageBox.Show("Celulares cadastrados com sucesso!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
Controles()
LimpaControles()
End If
Code SnippetIf (Len(edtHexa.Text) < 15) Or (Len(edtHexa.Text) > 15) Then
Dim hexa As String = InputBox("Hexadecimal (Núm.: " & CStr(i) + 1 & ") :", "Digite o Hexadecimal")
If (VerificaHexaCadastrado(hexa) = True) Or ((Len(hexa) < 15) Or (Len(hexa) > 15)) Then
edtHexa.Text = InputBox("Hexadecimal já cadastrado ou com quantidade de caracteres diferente de 15." & _
"(Núm.: " & CStr(i) + 1 & ") :", "Digite o Hexadecimal")
End If
edtHexa.Text = hexa
End If
Estou usando VS2k8 e Access
Respostas
-
Consegui! Segue o trecho que alterei.
'Verifica se o campo hexadecimal está em branco ou menor que 15 caracteres
If edtHexa.Text.Length <> 15 Then
While edtHexa.Text = String.Empty
Dim Hexa As String = InputBox("Hexadecimal (Núm.: " & CStr(i) + 1 & "): ", "Digite o Hexadecimal")
While (VerificaHexaCadastrado(Hexa) = True) Or (Hexa.Length <> 15)
Hexa = InputBox("Hexadecimal inválido." & vbCrLf & vbCrLf & vbCrLf & "(Núm.: " & CStr(i) + 1 & ") :", "Digite o Hexadecimal")
End While
edtHexa.Text = Hexa
End While
End If
Todas as Respostas
-
Olá Facc.
Aconselho você colocar a sua função de validação no evento Validating do seu edtHea (textbox espero).
Code SnippetPrivate
Sub TextBox1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating If TextBox1.Text.Length <> 15 ThenMessageBox.Show(
"Voce nÆo digitou o numero correto de caracteres", "Aten‡Æo")e.Cancel =
True Exit Sub End If End SubEsse evento ocorre antes do foco sair do controle. Caso o dado inserido esteja errado, vc cancela o usuário de sair deste controle (e.cancel = true).
Espero ter ajudado.
t+
-
Ric4rd0 wrote: Olá Facc.
Aconselho você colocar a sua função de validação no evento Validating do seu edtHea (textbox espero).
Code SnippetPrivate Sub TextBox1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If TextBox1.Text.Length <> 15 Then
MessageBox.Show("Voce nÆo digitou o numero correto de caracteres", "Aten‡Æo")
e.Cancel = True
Exit Sub
End If
End Sub
Esse evento ocorre antes do foco sair do controle. Caso o dado inserido esteja errado, vc cancela o usuário de sair deste controle (e.cancel = true).
Espero ter ajudado.
t+
Valeu, resolveu por partes, mas como é um cadastro de celular para lojas, eles irão passar várias vezes o mesmo código de celular, teria como resolver isso? no meu código original, estava usando o inputbox -
Olá.
Não entendi muito bem.
A pessoa vai digitar alguma coisa nesse textbox, aí vai dar a mensagem que está inválido. O que exatamente isso se relaciona com que eles irão passar varias vezes o mesmo código de celular?
Fico no aguardo.
t+
-
É assim, o Código do Celular é do cadastro em BD, esse vai ser o mesmo para, por exemplo, 5 cadastros, o que irá diferenciar vai ser o HEXADECIMAL, esse é unico para cada celular, como se fosse o CPF.
É esse HEXADECIMAL que vou ter que ficar pedindo, de acordo com a quantidade que o usuário informar.
Vou tentar exemplificar:
Existem vários Fábio por aí, o que diferencia eles, é o número do CPF de cada um. Vamos supor que quero criar um programa onde irei cadastrar uma certa quantidade (irei informar qntos quero cadastrar), portanto o Nome vai ser Fábio para todos os 5 cadastros, apenas pedindo o CPF de cada um que vai sendo cadastrado (num Loop). -
-
Consegui! Segue o trecho que alterei.
'Verifica se o campo hexadecimal está em branco ou menor que 15 caracteres
If edtHexa.Text.Length <> 15 Then
While edtHexa.Text = String.Empty
Dim Hexa As String = InputBox("Hexadecimal (Núm.: " & CStr(i) + 1 & "): ", "Digite o Hexadecimal")
While (VerificaHexaCadastrado(Hexa) = True) Or (Hexa.Length <> 15)
Hexa = InputBox("Hexadecimal inválido." & vbCrLf & vbCrLf & vbCrLf & "(Núm.: " & CStr(i) + 1 & ") :", "Digite o Hexadecimal")
End While
edtHexa.Text = Hexa
End While
End If