NAVEGAR PELOS REGISTROS
boa tarde jovens, estou com mais uma duvida, e vim novamente pedir a ajuda de voces....
estou querendo fazer que meu programa na tela de cadastro de produtos navegue pelos produtos tipo, clico em proximo e ele passa para o proximo registro, mas estou usando ado para isso, tentei fazer mas ele da um erro assim:
operaçao nao permitida quando o objeto esta fechado
abaixo passo o fonte para que possam dar uma olhada....
Private Sub Form_Load()
Dim cnncomando As New ADODB.Command
Dim rec As New ADODB.Recordset
rec.open [Ô]select * from tblprodutos[Ô], cnnsoftpark, adOpenKeyset, adLockOptimistic
With cnncomando
.ActiveConnection = cnnsoftpark
.CommandType = adCmdText
.CommandText = [Ô]select * from tblprodutos[Ô]
Set rec = .Execute
End With
With rec
If .EOF And .BOF Then
TxtCodProd.SetFocus
Else
TxtCodProd.Enabled = False
TxtCodProd.Text = !IdProduto
TxtDescProd.Text = !descricao
TxtPrecProd.Text = !valor
TxtImpProd.Text = !imposto
TxtSetProd.Text = !idsetor
TxtCatImpProd.Text = !categoriaimposto
End If
End With
End Sub
Private Sub ImgPro_Click()
rec.MoveNext
If rec.EOF Then
rec.MoveLast
MsgBox [Ô]nao existe mais produtos[Ô], vbInformation, [Ô]aviso[Ô]
End If
TxtCodProd.Text = rec!IdProduto
TxtDescProd.Text = rec!descricao
TxtPrecProd.Text = rec!valor
TxtImpProd.Text = rec!imposto
TxtSetProd.Text = rec!idsetor
TxtCatImpProd.Text = rec!categoriaimposto
End Sub
postei o form load e depois o botao que deveria navegar pelos registros, qualquer ajuda é muito bem vinda, obrigado..
estou querendo fazer que meu programa na tela de cadastro de produtos navegue pelos produtos tipo, clico em proximo e ele passa para o proximo registro, mas estou usando ado para isso, tentei fazer mas ele da um erro assim:
operaçao nao permitida quando o objeto esta fechado
abaixo passo o fonte para que possam dar uma olhada....
Private Sub Form_Load()
Dim cnncomando As New ADODB.Command
Dim rec As New ADODB.Recordset
rec.open [Ô]select * from tblprodutos[Ô], cnnsoftpark, adOpenKeyset, adLockOptimistic
With cnncomando
.ActiveConnection = cnnsoftpark
.CommandType = adCmdText
.CommandText = [Ô]select * from tblprodutos[Ô]
Set rec = .Execute
End With
With rec
If .EOF And .BOF Then
TxtCodProd.SetFocus
Else
TxtCodProd.Enabled = False
TxtCodProd.Text = !IdProduto
TxtDescProd.Text = !descricao
TxtPrecProd.Text = !valor
TxtImpProd.Text = !imposto
TxtSetProd.Text = !idsetor
TxtCatImpProd.Text = !categoriaimposto
End If
End With
End Sub
Private Sub ImgPro_Click()
rec.MoveNext
If rec.EOF Then
rec.MoveLast
MsgBox [Ô]nao existe mais produtos[Ô], vbInformation, [Ô]aviso[Ô]
End If
TxtCodProd.Text = rec!IdProduto
TxtDescProd.Text = rec!descricao
TxtPrecProd.Text = rec!valor
TxtImpProd.Text = rec!imposto
TxtSetProd.Text = rec!idsetor
TxtCatImpProd.Text = rec!categoriaimposto
End Sub
postei o form load e depois o botao que deveria navegar pelos registros, qualquer ajuda é muito bem vinda, obrigado..
coloquei ate a tela pra ver se ajuda......o botao é o proximo, acho que o resto eu devo conseguir fazer, rsrs
Primeiramente, declare a linha abaixo no General Declarations.
Em seguida, faça uma pequena alteração na rotina do botão Próximo.
Pra facilitar (e organizar) criei uma sub-rotina para apresentar os dados no Form.
Veja se funciona e retorne o resultado no tópico.
Dim rec As ADODB.Recordset
Em seguida, faça uma pequena alteração na rotina do botão Próximo.
Private Sub ImgPro_Click()
rec.MoveNext
If rec.EOF Then
rec.MovePrevious
End If
Call MostrarDados
End Sub
Pra facilitar (e organizar) criei uma sub-rotina para apresentar os dados no Form.
Sub MostrarDados()
TxtCodProd.Text = rec!IdProduto
TxtDescProd.Text = rec!descricao
TxtPrecProd.Text = rec!valor
TxtImpProd.Text = rec!imposto
TxtSetProd.Text = rec!idsetor
TxtCatImpProd.Text = rec!categoriaimposto
End Sub
Veja se funciona e retorne o resultado no tópico.
funcionou, somente tive que acrescentar algumas coisas, mas tem outra coisa...ele só mosra o proximo produto, tenho mais 7 produtos cadastrados e ele só funciona ate o 2º ai é como se o botao nao funcionasse mais....
Private Sub ImgPro_Click()
Set rec = New ADODB.Recordset
With rec
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.open [Ô]tblprodutos[Ô], cnnsoftpark, , , adCmdTable
rec.MoveNext
End With
If rec.EOF Then
rec.MovePrevious
End If
Call mostrardados
End Sub
Private Sub ImgPro_Click()
Set rec = New ADODB.Recordset
With rec
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.open [Ô]tblprodutos[Ô], cnnsoftpark, , , adCmdTable
rec.MoveNext
End With
If rec.EOF Then
rec.MovePrevious
End If
Call mostrardados
End Sub
O código que postou está incorreto.
Vou tentar corrigÃ-lo aqui sem VB (por isso, teste e veja se funciona).
Declaração no General Declarations
Rotina para o evento LOAD do FORM
Rotina para o botão PRÓXIMO
Creio que resolva.
Vou tentar corrigÃ-lo aqui sem VB (por isso, teste e veja se funciona).
Declaração no General Declarations
Dim rec As ADODB.Recordset
Rotina para o evento LOAD do FORM
Set rec = New ADODB.Recordset
rec.Open [Ô]SELECT * FROM tblprodutos[Ô], cnnsoftpark, adOpenKeyset, adLockOptimistic
If rec.RecordCount > 0 Then
Call MostrarDados
Me.Caption = rec.RecordCount & [Ô] registro(s).[Ô]
End If
Rotina para o botão PRÓXIMO
Private Sub ImgPro_Click()
rec.MoveNext
If rec.EOF Then
rec.MovePrevious
End If
Call MostrarDados
End Sub
Creio que resolva.
valeu mesmo, ficou dessa forma...
Private Sub ImgPro_Click()
rec.MoveNext
If rec.EOF Then
rec.MovePrevious
End If
Call mostrardados
End Sub
mas quando chego no ultimo registro, se clico em proximo novamente ele da esse erro:
operação nao permitida nesse contexto
Private Sub ImgPro_Click()
rec.MoveNext
If rec.EOF Then
rec.MovePrevious
End If
Call mostrardados
End Sub
mas quando chego no ultimo registro, se clico em proximo novamente ele da esse erro:
operação nao permitida nesse contexto
Tente mais uma alteração.
Private Sub ImgPro_Click()
If rec.EOF = False Then
rec.MoveNext
Call mostrardados
Else
[txt-color=#007100][ô]Não faça nada... ou mostre uma mensagem para o usuário[/txt-color]
End If
End Sub
tecla nao quero abusar da sua paciencia...mas agora deu outro erro:
BOF ou EOF sao verdadeiros, ou o registro atual foi excluido. a operaçao solicitada pelo aplicativo requer um registro atual
e ele aponta para a sub mostrar dados....
BOF ou EOF sao verdadeiros, ou o registro atual foi excluido. a operaçao solicitada pelo aplicativo requer um registro atual
e ele aponta para a sub mostrar dados....
Faça assim...
[ô]Mover para Primeiro Registro
Case 1
If Not RS.BOF Then
RS.MoveFirst
End If
[ô]Mover para Registro Anterior
Case 2
If Not RS.BOF Then
RS.MovePrevious
If RS.EOF Then
RS.MoveLast
End If
Else
RS.MoveLast
End If
[ô]Mover para Proximo Registro
Case 3
If Not RS.EOF Then
RS.MoveNext
If RS.EOF Then
RS.MoveFirst
End If
Else
RS.MoveFirst
End If
[ô]Mover para Ultimo Registro
Case 4
If Not RS.EOF Then
RS.MoveLast
End If
valeu tecla.....funcionou, tb precisei adicionar uma linha:
cnnProjetos.CursorLocation = adUseClient
mas ta tudo ok, valeu mesmo hein...
cnnProjetos.CursorLocation = adUseClient
mas ta tudo ok, valeu mesmo hein...
Tópico encerrado , respostas não são mais permitidas