ULTIMO REGISTRO INCLUSO NAO E EXIBIDO
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.
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.
Alguém me socorre?
Grato
Grato
tentou assim
cmd.Close
Set cmd = Nothing
use o close entes do nothing
cmd.Close
Set cmd = Nothing
use o close entes do nothing
Você recarregou o recordset que usa para ver os registros?
Como faço para recarregar o recordset?
Marcelo não tem essa propriedade .close no meu cmd...
sim entendi tenta isto
.ActiveConnection = cnn
.CommandText = [Ô]INSERT INTO usuarios (nome) VALUES ([ô][Ô] & txtNome.Text & [Ô][ô]);[Ô]
.Execute
.Parameters.Refresh
.ActiveConnection = cnn
.CommandText = [Ô]INSERT INTO usuarios (nome) VALUES ([ô][Ô] & txtNome.Text & [Ô][ô]);[Ô]
.Execute
.Parameters.Refresh
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.
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.
Socorro gente
consegui pessoal...
desculpa a pressa
tava faltando a linha
recordset.requery
Obrigado a todos
desculpa a pressa
tava faltando a linha
recordset.requery
Obrigado a todos
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