PROBLEMA PARA ALTERAR REGISTRO

WILCOX 27/08/2009 07:43:22
#321075
EStou tentandofazer um botão de alterar no meu programa mas mesmo depois tentar de diversas maneiras não funciona. Sempre o registro ao invés de salvar no codigo do cliente salva no codigo 1.

DEsde já agradeço a atenção

no meu botão coloco a codificação

Dim tabela As integer

Private Sub ABRETABELA()
Set TB = Nothing
Set TB = New Recordset
SQL = [Ô]SELECT * FROM CLIENTE WHERE CODIGO = [Ô] & [Ô]codigo[Ô]
TB.Open SQL, CN, adOpenStatic, adLockPessimistic
If TB.EOF Then
MsgBox [Ô]NENHUM USUÁRIO CADASTRADO[Ô], vbInformation, [Ô]ATENÇÃO[Ô]
Unload Me
Else
TB.MoveFirst
End If
End Sub

Private Sub CMDALTERAR_CLICK()
codigo=lblcodigo.caption
abretabela
TB!NOME = TXTNOME.Text
TB!RUA = TXTRUA.Text
TB!BAIRRO = TXTBAIRRO.Text
If MsgBox([Ô]SALVAR ALTERAÇÃO?[Ô], vbYesNo + vbExclamation, [Ô]ATENÇÃO[Ô]) = vbYes Then
TB.Update
MsgBox [Ô]USUÁRIO ALTERADO[Ô]
Else
MsgBox [Ô]ALTERE ALGUM CAMPO PRIMEIRO[Ô], , [Ô]ATENÇÃO[Ô]
End If
End Sub
ASHKATCHUP 27/08/2009 08:05:36
#321076

SQL = [Ô]SELECT * FROM CLIENTE WHERE CODIGO = [Ô] & [Ô]codigo[Ô]


Você está colocando a string [Ô]código[Ô] fixa na SQL.


TB.MoveFirst


Isso que faz salvar no primeiro registro.
ROBIU 27/08/2009 08:32:21
#321079
Resposta escolhida
Esse Código é um critério. Ele deve está sem aspas. Outra coisa é que você não declarou nenhuma variável código nesta rotina. Tambem observe o escopo(alcance) da variável. Se ele está em uma private, não será [Ô]vista[Ô] fara desta sub. Para corrigir:
Declara a variável assim:

Dim tabela As integer
Dim Codigo as Long

A SQL fica assim:
SQL = [Ô]SELECT * FROM CLIENTE WHERE CODIGO = [Ô] & Codigo


Agora a Variavel Codigo pode receber o valor da label:

codigo=lblcodigo.caption

Agora deve funcionar.
Vou te mostrar uma outra forma:
Podemos colocar um parâmetro opcional nesta sub AbreTabela. Com isso, se informar o critério, exibe o registro do critério, se não informar, exibe todos registros:

Dim tabela As Integer

Sub AbreTabela(Optional Criterio As Long)
Set TB = Nothing
Set TB = New Recordset
If Criterio = 0 Then

SQL = [Ô]SELECT * FROM CLIENTE[Ô]
Else
SQL = [Ô]SELECT * FROM CLIENTE WHERE CODIGO = [Ô] & Criterio
End If
TB.Open SQL, CN, adOpenStatic, adLockPessimistic
If TB.EOF Then
MsgBox [Ô]NENHUM USUÁRIO CADASTRADO[Ô], vbInformation, [Ô]ATENÇÃO[Ô]
Unload Me
Else
TB.MoveFirst
End If
End Sub

Private Sub CMDALTERAR_CLICK()
AbreTabela Val(lblcodigo.Caption)
TB!Nome = TXTNOME.Text
TB!RUA = TXTRUA.Text
TB!BAIRRO = TXTBAIRRO.Text
If MsgBox([Ô]SALVAR ALTERAÇÃO?[Ô], vbYesNo + vbExclamation, [Ô]ATENÇÃO[Ô]) = vbYes Then
TB.Update
MsgBox [Ô]USUÁRIO ALTERADO[Ô]
Else
MsgBox [Ô]ALTERE ALGUM CAMPO PRIMEIRO[Ô], , [Ô]ATENÇÃO[Ô]
End If
End Sub



WILCOX 28/08/2009 07:50:39
#321194
Nossa. Funcionou perfeitamente. Muitissimo obrigado mesmo.

Eu estou procurando um bom livro pra me guiar nesse mundo vb. Mas ta dificil. Ja baixei varios na parte de downloads. Vcs poderiam me indicar um bom?
ROBIU 28/08/2009 08:12:29
#321198
O Forum funciona como uma Biblioteca. Quando temos dúvidas, primeiro procuramos no forum e, não encontrando, abrimos um tópico. Se seu tópico já foi resolvido, o correto é encerrá-lo e abrir um novo tópico com outra dúvida.
Estou postando um link com diversos tutoriais de vb6. Se não for suficiente, encerre o tópico a abra outro.

Aqui no site há várias apostilas de vb6. Outro site muito visitado é o http://www.macoratti.net/indvb.htm. Para os iniciantes, comece estudanto os artigos do final da página. Além disso, tem uma área do lado direito da tela, onde podemos baixar apostilas etc.
WILCOX 28/08/2009 13:36:02
#321233
Muito obrigado pela ajuda e pelos links. E me desculpe por abrir outra duvida dentro do topico.
Tópico encerrado , respostas não são mais permitidas