AJUDA MOVER REGISTROS DESCONETADOS

USUARIO.EXCLUIDOS 18/12/2006 11:54:52
#190588
Bom dia a Todos.

Meu problema é o seguinte, tive que fazer um cadastro onde todos os botões de Incluir, alterar, localizar, etc , são feitos com o recordset fechado,ou seja, toda vez que o usuário Clicar em um desses botões é feita uma nova conexão abrindo o recordset fazendo a ação e depois fechando ele, pois nesse mesmo form, não existe só o cadastro, tem outras rotinas que chamam outros objetos e outros forms conforme determinação da empresa.
Até aí tudo bem, tudo está funcionando, consegui resolver esses problema, com exceção dos comandos para mover o registros para o próximo e anterior, até consegui resolver parcialmente conforme o código abaixo movendo um registro para frente:


Private Sub cmdNext_Click()

Call MinhaConexao
Set cursor = New ADODB.Recordset
cursor.Open "Select * From Tabela Where Codigo = " & txtCod.Text & "", Conexao, adOpenKeyset, adLockOptimistic

txtCod.Text = cursor("Codigo") + 1

cursor.Close

cursor.Open "Select * From Tabela Where Codigo = " & txtCod.Text & "", Conexao, adOpenKeyset, adLockOptimistic

Call ListaRegistro

Set Conexao = Nothing

End Sub



a dúvida é:

Como dar mensagem de erro, e travar o andamento do cursor quando chegar no último registro, já tentei como abaixo :

Private Sub cmdNext_Click()

Call MinhaConexao
Set cursor = New ADODB.Recordset
cursor.Open "Select * From Tabela Where Codigo = " & txtCod.Text & "", Conexao, adOpenKeyset, adLockOptimistic

txtCod.Text = cursor("Codigo") + 1

cursor.Close

cursor.Open "Select * From Tabela Where Codigo = " & txtCod.Text & "", Conexao, adOpenKeyset, adLockOptimistic

If cursor.EOF = True Then
Beep
Exit Sub
Else
Call ListaRegistro
End If

Set Conexao = Nothing

End Sub


Até dá o Beep, mas não termina a rotina e cai o sistema, na mensagem: Bof e Oef são verdadeiros, ou o registro atual foi excluído....


Alguém pode me dar uma Luz ?

USUARIO.EXCLUIDOS 18/12/2006 19:27:22
#190745
olá...

por favor alguém pode me orientar em algo ?

Abraço,
Val
USUARIO.EXCLUIDOS 19/12/2006 11:54:07
#190844
SC[S22]RR[S38]


USUARIO.EXCLUIDOS 19/12/2006 14:20:07
#190897
Resposta escolhida
Carinha, acho que ninguém usa assim... normalmente abre-se o form e já mantém o banco conectado. Somente ao encerrar (form_queryunload) é que encerra a conexão... Deste modo que está tentando só vai dar trabalho e não há vantagem alguma!
USUARIO.EXCLUIDOS 21/12/2006 12:23:24
#191453
pois é André, eu até sei disso, o problema é que foi uma exigência do cliente, e tive que adaptar, mas a criatividade deve fazer parte de nosso curriculum de programador, de tanto tentar acabei conseguindo, vou postar como deu certo,s e acaso alguém precise um dia..

Private Sub cmdNext_Click()

Dim Ultimo As Integer

Call MinhaConexao
Set rs = New ADODB.Recordset
rs.Open "Select Codigo From tabela", Conexao, 3, 4

rs.MoveLast
Ultimo = rs("Codigo").Value

Set Conexao = Nothing


Call MinhaConexao
Set cursor = New ADODB.Recordset
cursor.Open "Select * From tabela Where Codigo = " & TxtFields(0).Text & "", Conexao, 3, 2

If cursor("Codigo") = Ultimo Then
Beep
Exit Sub
Else
TxtFields(0).Text = cursor("Codigo") + 1

cursor.Close

cursor.Open "Select * From tabela Where Codigo = " & TxtFields(0).Text & "", Conexao, 3, 2

Call ListaRegistro
End If

Set Conexao = Nothing

End Sub


USUARIO.EXCLUIDOS 21/12/2006 12:55:25
#191460
Teoricamente está ótimo, mas se excluir um registro intermediário, essa rotina pára de funcionar...
USUARIO.EXCLUIDOS 21/12/2006 13:00:48
#191463
Putz, pior que é mesmo André...

vc tem idéia como faço prá resolver esse problema agora ?

Abraço,

Tópico encerrado , respostas não são mais permitidas