ULTIMO REGISTRO INCLUSO NAO E EXIBIDO

PITERGALDIANO 18/12/2012 10:28:04
#416124
Bom dia Pessoal,

Sou novado aqui no fórum e iniciante em VB, estou usando VB6

Criei um form para cadastro de usuarios, que possui um banco Firebird (FDB), uma tabela chamada [Ô]usuarios[Ô] e dois campos na mesma, código e nome.
Uso ADO para fazer a conexão.
O problema é o seguinte: consigo navegar pelos registros, fazer inclusão. Porém sempre para exibir os registros que eu inclui é preciso eu fechar o sistema e abrir novamente. Ex.: O último registro cadastrado é o 10. Aí eu clico no botão incluir e incluo o registro 11. Após a inclusão se eu clicar no botão para ir para o último registro é exibido o registro 10, sendo que deveria aparecer o 11.
Se eu fechar o sistema e abrir novamente e clicar novamente no botão último registro aí sim aparece o 11.
O que pode estar errado em meu código?

form evento load
Set cnn = New ADODB.Connection
With cnn
.CursorLocation = adUseClient
.Open [Ô]DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=D:\SISTEMAS\TESTEVB\BANCO.FDB[Ô]
End With
MsgBox [Ô]Conexão realizada com sucesso[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Conexão com Banco Firebird[Ô]

botão incluir
On Error GoTo Incluir_ERRO
Dim sql As String
Set cmd = New ADODB.Command
If cmdIncluir.Caption = [Ô]&Incluir[Ô] Then
txtCodigo.Text = [Ô]NOVO[Ô]
With txtNome
.Enabled = True
.SetFocus
End With
LimpaFormulario
cmdIncluir.Caption = [Ô]&Salvar[Ô]
Else
If txtNome.Text = Empty Then
MsgBox [Ô]Digite o nome[Ô], vbApplicationModal + vbInformation + vbOKOnly, [Ô]Atenção[Ô]
Exit Sub
End If
With cmd
.ActiveConnection = cnn
.CommandText = [Ô]INSERT INTO usuarios (nome) VALUES ([ô][Ô] & txtNome.Text & [Ô][ô]);[Ô]
.Execute
End With
MsgBox [Ô]Gravação concluída[Ô], vbApplicationModal + vbOKOnly + vbInformation, [Ô]Atenção[Ô]
AtualizaDados
cmdIncluir.Caption = [Ô]&Incluir[Ô]
Set cmd = Nothing
End If

Incluir_ERRO:
With Err
If .Number <> 0 Then
MsgBox [Ô]Erro ao incluir[Ô], vbApplicationModal + vbExclamation + vbOKOnly, [Ô]Erro[Ô]
.Number = 0
Exit Sub
End If
End With

Obrigado pela atenção de todos.

PITERGALDIANO 18/12/2012 11:12:00
#416126
Alguém me socorre?

Grato
MARCELO.TREZE 18/12/2012 11:20:27
#416127
Resposta escolhida
tentou assim

cmd.Close
Set cmd = Nothing

use o close entes do nothing

OCELOT 18/12/2012 11:24:12
#416128
Você recarregou o recordset que usa para ver os registros?
PITERGALDIANO 18/12/2012 11:33:17
#416129
Como faço para recarregar o recordset?
PITERGALDIANO 18/12/2012 11:38:57
#416135
Marcelo não tem essa propriedade .close no meu cmd...
MARCELO.TREZE 18/12/2012 11:44:31
#416138
sim entendi tenta isto

.ActiveConnection = cnn
.CommandText = [Ô]INSERT INTO usuarios (nome) VALUES ([ô][Ô] & txtNome.Text & [Ô][ô]);[Ô]
.Execute
.Parameters.Refresh

PITERGALDIANO 18/12/2012 11:52:18
#416139
Puts não sei o que tá acontecendo...

coloquei o
.Parameters.Refresh após o .execute

mesmo assim, quando clico em salvar e depois clico para ir para o último registro ele não aparece. se eu fecho o sistema e abro novamente aí consigo visualizar.
PITERGALDIANO 18/12/2012 12:30:27
#416142
Socorro gente
PITERGALDIANO 18/12/2012 12:34:30
#416143
consegui pessoal...

desculpa a pressa

tava faltando a linha

recordset.requery

Obrigado a todos
OCELOT 18/12/2012 12:48:08
#416146
Faz muito tempo que não uso ADO diretamente, mas pela documentação eu diria pra depois que executar o insert você deveria chamar o método Requery do seu recordset e então reposicionando o cursor nele ou atualizando a tela
Tópico encerrado , respostas não são mais permitidas