CADASTRO DE CLIENTES VB

MIYAVI 21/02/2014 16:44:40
#435109
Minha duvida é o seguinte: Eu cadastrei um cliente com certo numero de CPF, caso eu queira cadastrar um novo cliente com o mesmo CPF por exemplo, quero que seja feita uma consulta no banco de dados pra verificar se aquele CPF já esteja cadastrado, caso já esteja não será possível cadastrar.
Eu tentei fazer mas, depois que crio o IF e Else e tento cadastrar qualquer novo cliente aparece um erro assim: [Ô]NÃO HÁ LINHA NA POSIÇÃO 0.[Ô] tá aí meu código:

Public Sub Cadastrar()

Dim cn As New SqlConnection(conexao)

Dim comando As New SqlCommand

Dim query As String = [Ô][Ô]

query &= [Ô]Select * from Cadastrocliente where Codigo = [Ô] & txtcodigo.Text

Dim da As New SqlDataAdapter(query, cn)

Dim ds As New DataSet

da.Fill(ds)

If txtcpf.Text = ds.Tables(0).Rows(0).Item([Ô]CPF[Ô]) Then

MsgBox([Ô]Já existe um cliente com este CPF cadastrado![Ô])

Else

query &= [Ô]insert into Cadastrocliente (Nome_Completo,CPF)[Ô]
query &= [Ô]values ( [ô][Ô] & txtnome.Text & [Ô][ô], [Ô][ô] & CPF.Text & [Ô][ô] )[Ô]

cn.Open()
comando.Connection = cn

comando.CommandText = query

comando.CommandType = CommandType.Text

comando.ExecuteNonQuery()

MsgBox([Ô]Inserido com sucesso![Ô])

Finally
cn.Close()

Ele estava cadastrando normal, mas depois que coloquei o IF/ELSE ele passou a dar o erro que mencionei acima =/
MARCELO.TREZE 21/02/2014 18:32:54
#435115
qual vb vc ta usando?
FILMAN 21/02/2014 18:51:58
#435117
Tente isso aqui

Public Sub Cadastrar()
Dim cn As New SqlConnection(conexao)
Dim comando As New SqlCommand
Dim query As String = [Ô][Ô]
Dim i As Integer
Dim dt As New DataTable

query = [Ô]Select * from Cadastrocliente where CPF = [Ô] & txtcpf.Text

comando.Connection = cn

cn.Open()

comando.CommandText = query

dt.Load(comando.ExecuteReader())

cn.Close()

If dt.Rows.Count > 0 then
MessageBox.Show([Ô]Já existe um cliente com este CPF cadastrado![Ô])
Else
query = [Ô]insert into Cadastrocliente (Nome_Completo,CPF)[Ô]
query &= [Ô] values ([ô][Ô] & txtnome.Text & [Ô][ô], [Ô][ô] & CPF.Text & [Ô][ô])[Ô]

Try
cn.Open()
comando.ComandText = query
i = comando.ExecuteNonQuery()
cn.Close()
MessageBox.Show([Ô]Cadastro realizado com sucesso[Ô])

Catch ex As Exception
cn.Close()
MessageBox.Show([Ô]Erro ao cadastrar o cliente[Ô])

Close Try
End If
End Sub



Erros encontrados
query [txt-color=#e80000]&=[/txt-color] [Ô]insert into Cadastrocliente (Nome_Completo,CPF)[Ô]
query &= [Ô]values ( [ô][Ô] & txtnome.Text & [Ô][ô], [Ô][ô] & CPF.Text & [Ô][ô] )[Ô]

A parte em vermelho não pode, pois se você não limpara a variável ela vai conter sujeira da query anterior


query &= [Ô]Select * from Cadastrocliente where Codigo = [Ô] & txtcodigo.Text
Se você esta querendo cadastrar um novo CPF não deve comparar o código do Cliente e sim o numero do CPF

Espero ter ajudado
MIYAVI 21/02/2014 18:59:47
#435118
Estou usando o visual studio 2008, e programando em visual basic
MIYAVI 21/02/2014 19:12:14
#435119
Não deu certo isso =/
MARCELO.TREZE 21/02/2014 20:03:00
#435123
Resposta escolhida
Colega poste sua duvida no forum VB.NET a partir da versão 2005 é considerado .NET, la vc terá mais opção de respostas.

não haverá mensagem mas vc pode fazer uma unica query para não salvar duplicados, ex:


s
SQL = [Ô]Insert into Cadastrocliente (Nome_Completo,CPF) select [ô][Ô] & txtnome.Text & [Ô][ô], [Ô][ô] & CPF.Text & [Ô][ô] WHERE NOT EXISTS (Select * from Cadastrocliente where Codigo = [ô][Ô] & txtcodigo.Text &[Ô][ô])[Ô]




FILMAN 21/02/2014 20:42:48
#435127
o que não deu certo? que mensagem retornou?
TECLA 22/02/2014 06:51:52
#435141
Estou usando o visual studio 2008, e programando em visual basic	

Miyavi


Você postou a mesma dúvida em VB6 e VB.NET.
Favor encerrar este tópico, já que o problema é com a linguagem .NET.
Tópico encerrado , respostas não são mais permitidas