Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nilck

Contador que acompanha posição do registro na tabela

Recommended Posts

Pessoal estou com uma dúvida que parece ser simples de resolver, mas eu nao estou sabendo conto com ajuda de vocês, sou novata na area!Tenho um banco de dados com uma tabela chamada etiquetas que contem apenas um campo chamado num, então eu to exibindo os registros "num" na caixa de texto e quando eu clico em avançar ele avança para o próximo registro e mostra um label com o valor do contador, o seja: se estou no primeiro registro o label tem q mostrar 1, no segundo, 2 e assim por diante. Se clico em voltar o label precisa voltar tambem, acompanhando-o.O problema é que quando chego no ultimo registro e clico em voltar ele volta apenas o label e o registro permanece no ultimo se clico denovo ele volta e quando chega no primeiro registro ao invés de me mostrar apenas 1 ele me mostra o 0 no label do primeiro registro, como faço para resolver? aí vai o código:

Private Sub Cmdavancar_Click()On Error GoTo erroIf Not eti.EOF ThenText1.Text = eti("num")eti.MoveNextcont = cont + 1lblcont.Caption = contElseMsgBox "Fim!!"End Iferro:If Err.Number = 3021 Thencont = 0'eti.MoveFirstlblcont.Caption = contEnd IfEnd SubPrivate Sub Cmdvoltar_Click()On Error GoTo erroIf Not eti.BOF Theneti.MovePreviouscont = cont - 1lblcont.Caption = contText1.Text = eti("num")'ElseIf eti.BOF ThenMsgBox "Primeira Etiqueta!!"End IfIf eti.EOF Then    MsgBox "Ultimo"End IfEnd Iferro:If Err.Number = 3021 Thencont = 0eti.MoveFirstlblcont.Caption = contEnd IfEnd Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

ao invez de colocar um contador manual (cont = cont +1 ou cont = cont - 1)coloca para ele pegar o AbsolutePosition do recordeset. no seu caso eti.AbsolutePosition. Isso fara com que ele mostre somente a posição do registro.acredito que isso possa ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mto Obrigado por responder!! eu estou mesmo precisando muito resolver este problema...Talvez eu nao esteja sabendo utilizar o AbsolutePosition...Ele dá o erro que não reconhece o objeto, ou então não executa partindo direto para o erro tratado.Poderia olhar novamente? Muito Obrigada!

Private Sub Cmdavancar_Click()On Error GoTo erroIf Not eti.EOF ThenText1.Text = eti("num")eti.MoveNextcont = eti.AbsolutePositionlblcont.Caption = contElseMsgBox "Fim!!"End Iferro:If Err.Number = 3021 Theneti.MoveFirstEnd IfEnd SubPrivate Sub Cmdvoltar_Click()On Error GoTo erroIf Not eti.BOF Theneti.MovePreviouscont = eti.AbsolutePositionlblcont.Caption = contText1.Text = eti("num")'ElseIf eti.BOF ThenMsgBox "Primeira Etiqueta!!"End IfIf eti.EOF Then    MsgBox "Ultimo"End IfEnd Iferro:If Err.Number = 3021 Theneti.MoveFirstlblcont.Caption = contEnd IfEnd Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mto Obrigado por responder!! eu estou mesmo precisando muito resolver este problema...Talvez eu nao esteja sabendo utilizar o AbsolutePosition...Ele dá o erro que não reconhece o objeto, ou então não executa partindo direto para o erro tratado.Poderia olhar novamente? Muito Obrigada!

Private Sub Cmdavancar_Click()On Error GoTo erroIf Not eti.EOF ThenText1.Text = eti("num")eti.MoveNextcont = eti.AbsolutePositionlblcont.Caption = contElseMsgBox "Fim!!"End Iferro:If Err.Number = 3021 Theneti.MoveFirstEnd IfEnd SubPrivate Sub Cmdvoltar_Click()On Error GoTo erroIf Not eti.BOF Theneti.MovePreviouscont = eti.AbsolutePositionlblcont.Caption = contText1.Text = eti("num")'ElseIf eti.BOF ThenMsgBox "Primeira Etiqueta!!"End IfIf eti.EOF Then    MsgBox "Ultimo"End IfEnd Iferro:If Err.Number = 3021 Theneti.MoveFirstlblcont.Caption = contEnd IfEnd Sub
Nilck, era para dar certo o que o Fernando te recomendou.Qual é o erro que está dando??Faz assim, antes da função, passa o cursos da coneção para useCliente cn.CursorLocation = adUseClientcn é o nome de minha variável de conexão com o banco, não sei como chamou a sua.Por padrão, ele abre a conexão como adUseServer, e quando está desse modo, ele não carrega algumas funções para ganhar desempenho. Pode ser que umas das coisas que ele não carregue seja o AbsolutionPosition, mas não tenho certeza, então dá uma tentada para ver se resolve.Uma dica, como eu disse, ele usa o aduseserver para ganhar performace, então depois de sua sub, faça cn.CursorLocation = adUseServer.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mto Obrigado por responder!! eu estou mesmo precisando muito resolver este problema...Talvez eu nao esteja sabendo utilizar o AbsolutePosition...Ele dá o erro que não reconhece o objeto, ou então não executa partindo direto para o erro tratado.Poderia olhar novamente? Muito Obrigada!

Private Sub Cmdavancar_Click()On Error GoTo erroIf Not eti.EOF ThenText1.Text = eti("num")eti.MoveNextcont = eti.AbsolutePositionlblcont.Caption = contElseMsgBox "Fim!!"End Iferro:If Err.Number = 3021 Theneti.MoveFirstEnd IfEnd SubPrivate Sub Cmdvoltar_Click()On Error GoTo erroIf Not eti.BOF Theneti.MovePreviouscont = eti.AbsolutePositionlblcont.Caption = contText1.Text = eti("num")'ElseIf eti.BOF ThenMsgBox "Primeira Etiqueta!!"End IfIf eti.EOF Then    MsgBox "Ultimo"End IfEnd Iferro:If Err.Number = 3021 Theneti.MoveFirstlblcont.Caption = contEnd IfEnd Sub
Nilck, era para dar certo o que o Fernando te recomendou.Qual é o erro que está dando??Faz assim, antes da função, passa o cursos da coneção para useCliente cn.CursorLocation = adUseClientcn é o nome de minha variável de conexão com o banco, não sei como chamou a sua.Por padrão, ele abre a conexão como adUseServer, e quando está desse modo, ele não carrega algumas funções para ganhar desempenho. Pode ser que umas das coisas que ele não carregue seja o AbsolutionPosition, mas não tenho certeza, então dá uma tentada para ver se resolve.Uma dica, como eu disse, ele usa o aduseserver para ganhar performace, então depois de sua sub, faça cn.CursorLocation = adUseServer.Abraços.
Então Claudio, oque acontece é o seguinte:Se eu uso o absolutposition depois do movenext ele simplesmente não mostra nada.Se eu troco a posição usando ele primeiro para depois mover o registro ele para no primeiro registro e nao move mais...Tentei usar também a dica que você deu colocando o db.CursorLocation = adUseClient antes da função e o db.CursorLocation = adUseServer depois da funçãoe ele me retornou a mensagem de erro : Only comments may appear after end sub, end function ou end propertyPassei entao os comandos pra dentro da sub e ele nao reconhece =//Será que eu preciso fazer referência a agluguma biblioteca?Mto obrigada pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mto Obrigado por responder!! eu estou mesmo precisando muito resolver este problema...Talvez eu nao esteja sabendo utilizar o AbsolutePosition...Ele dá o erro que não reconhece o objeto, ou então não executa partindo direto para o erro tratado.Poderia olhar novamente? Muito Obrigada!

Private Sub Cmdavancar_Click()On Error GoTo erroIf Not eti.EOF ThenText1.Text = eti("num")eti.MoveNextcont = eti.AbsolutePositionlblcont.Caption = contElseMsgBox "Fim!!"End Iferro:If Err.Number = 3021 Theneti.MoveFirstEnd IfEnd SubPrivate Sub Cmdvoltar_Click()On Error GoTo erroIf Not eti.BOF Theneti.MovePreviouscont = eti.AbsolutePositionlblcont.Caption = contText1.Text = eti("num")'ElseIf eti.BOF ThenMsgBox "Primeira Etiqueta!!"End IfIf eti.EOF Then    MsgBox "Ultimo"End IfEnd Iferro:If Err.Number = 3021 Theneti.MoveFirstlblcont.Caption = contEnd IfEnd Sub
Nilck, era para dar certo o que o Fernando te recomendou.Qual é o erro que está dando??Faz assim, antes da função, passa o cursos da coneção para useCliente cn.CursorLocation = adUseClientcn é o nome de minha variável de conexão com o banco, não sei como chamou a sua.Por padrão, ele abre a conexão como adUseServer, e quando está desse modo, ele não carrega algumas funções para ganhar desempenho. Pode ser que umas das coisas que ele não carregue seja o AbsolutionPosition, mas não tenho certeza, então dá uma tentada para ver se resolve.Uma dica, como eu disse, ele usa o aduseserver para ganhar performace, então depois de sua sub, faça cn.CursorLocation = adUseServer.Abraços.
Então Claudio, oque acontece é o seguinte:Se eu uso o absolutposition depois do movenext ele simplesmente não mostra nada.Se eu troco a posição usando ele primeiro para depois mover o registro ele para no primeiro registro e nao move mais...Tentei usar também a dica que você deu colocando o db.CursorLocation = adUseClient antes da função e o db.CursorLocation = adUseServer depois da funçãoe ele me retornou a mensagem de erro : Only comments may appear after end sub, end function ou end propertyPassei entao os comandos pra dentro da sub e ele nao reconhece =//Será que eu preciso fazer referência a agluguma biblioteca?Mto obrigada pela atenção!
Ele não reconhece?? Mas acontece o que, dá algum erro ou simplesmente não faz nada? Você está colocando antes do movenext? Se não estiver, tente fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele não executa, apenas mostra o primeiro registro sem me mostrar qual ele é (1, 2,3 ).Ele já cai direto no erro 3021 q estou interceptando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele não executa, apenas mostra o primeiro registro sem me mostrar qual ele é (1, 2,3 ).Ele já cai direto no erro 3021 q estou interceptando.

Nilck, está difícil saber o que está havendo ai.Montei um negocinho bem simplesinho para testar e funcionou, fiz o seguinte:
Private Sub Form_Load()Set cn = New ADODB.Connectioncn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator.DBSERVER01\Desktop\teste.mdb;Persist Security Info=False"cn.OpenSet rs = New ADODB.Recordsetrs.Open "select * from teste", cn, adOpenKeyset, adLockReadOnlyLabel1.Caption = rs("nome")Label2.Caption = rs("cod")Label3.Caption = rs.AbsolutePositionEnd SubPrivate Sub Command1_Click()rs.MoveNextLabel1.Caption = rs("nome")Label2.Caption = rs("cod")Label3.Caption = rs.AbsolutePositionEnd Sub
Nem seque o adUserClient precisei usar.Tire o tratamento do erro 3021, e poste aqui sobre o que é o erro por favor.Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resiolver!!mudei o acesso ao banco e deu certo! funcionou o absoluteposition!mto obrigada pela atenção!!!! ateh mais!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.