BOTOES DE NAVEGA?ÃO, ANTERIOR, PRÓXIMO, ULTIMO

JOYYY 23/12/2016 14:39:33
#470006
Ola Pessoal,

Eu vi que existem alguns tópicos sobre este tema aqui, mas infelizmente não consegui adaptar nenhum deles, então espero que alguém possa me dar uma luz.

Enfim, o botão para mover para o próximo registro eu até consegui, embora eu ache que a rotina ficou muito grande, vi aqui mesmo algumas bem mais enxutas, mas o anterior, último e primeiro com a mesma lógica postada abaixo dá erro. Estou utilizando conexão DAO em banco ACCESS.



  Sub BNEXT 

Dim ComandoSQL As String
ComandoSQL = [Ô]select * from tb_cad[Ô]
Call Conecta
Set consulta = banco.OpenRecordset(ComandoSQL)
With consulta
.MoveNext

txtcod = consulta(1)
txtnome = consulta(2)
txtmae = consulta(3)
txtpai = consulta(4)
txtnasc = consulta(5)
txtRG = consulta(6)
txtCPF = consulta(7)
txtend = consulta(8)
txttel = consulta(9)
txtcel = consulta(10)
txtcracha = consulta(11)
txtparent = consulta(12)
txtsala = consulta(13)
txtandar = consulta(14)
txtpront = consulta(15)

txttipo = consulta(16)
txtobs = consulta(17)
End With
OMAR2011 23/12/2016 19:05:11
#470016
+ ou - assim.
Private Sub CmdPrimeiro_Click()
tb.MoveFirst [ô]vai o primeiro(first) registro na tabela
Call Mostrar_Dados [ô]chama(call) a rotina que mostra os dados
MsgBox [Ô]Este é o Primeiro Registro![Ô], vbInformation, [Ô]Aviso[Ô]
End Sub

Private Sub CmdUltimo_Click()
tb.MoveLast [ô]vai para o ultimo(last) registro na tabela
Call Mostrar_Dados [ô]chama(call) a rotina que mostra os dados
MsgBox [Ô]Este é o Último Registro![Ô], vbInformation, [Ô]Aviso[Ô]

End Sub

Private Sub CmdAnterior_Click()
tb.MovePrevious [ô]vai para o registro anterior (previous) da tabela
If tb.BOF Then [ô]pergunta se chegou no inicio da tabela(BOF)[Ô]BEGIN OF FILE[Ô]
MsgBox [Ô]Este é o primeiro registro![Ô], vbInformation, [Ô]Aviso[Ô] [ô]msgbox dizendo que chegou no inicio da tabela
tb.MoveFirst [ô]fica no primeiro caso tenha chegado no inicio
End If [ô]fecha o if
Call Mostrar_Dados [ô]chama(call) mostra os dados
End Sub

Private Sub CmdProximo_Click()
tb.MoveNext [ô]vai para o proximo(next) registro na tabela
If tb.EOF Then [ô]pergunta se chegou no fim do arquivo(EOF) [Ô]END OF FILE[Ô]
MsgBox [Ô]Não há mais registros![Ô], vbInformation, [Ô]Aviso[Ô] [ô]mostra msgbox avisando que chegou no fim
tb.MoveLast [ô]fica posicionado no ultimo registro
End If [ô]fecha o if
Call Mostrar_Dados [ô]chama (call) a rotina que mostra os dados
End Sub
OMAR2011 23/12/2016 19:10:58
#470017
Acho essa bem melhor.Veiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiinha.

Título da Dica: Conexão ADO um pouco mais profissional e usando Command

Postada em 22/4/2003 por ®ogerVB
--------------------------------------------------------------------------------
Neste exemplo de conexão estou usando o ADO 2.7, e 3 TextBox, com os nomes TxtCodigo, TxtNome e TxtObs,
e 4 CommandButton com os nome CmdPrimeiro, CmdAnterior, CmdProximo e CmdUltimo para a movimentação no banco!
Depois de adicionado esse objetos pode e a referencia pode copiar o seguinte código:

Public Conexao As ADODB.Connection
Private RsTabela As ADODB.Recordset
Private Cmd As ADODB.Command
_______________________________________________________________________

Private Sub Atualizar()
TxtCodigo.Text = RsTabela([Ô]codigo[Ô])
TxtNome.Text = RsTabela([Ô]nome[Ô])
TxtObs.Text = RsTabela([Ô]obs[Ô])
End Sub
_______________________________________________________________________

Private Sub CmdAnterior_Click()
Set Cmd = New ADODB.Command
Set Cmd.ActiveConnection = Conexao
Cmd.CommandType = adCmdText
Cmd.CommandText = [Ô]select * from tabela where codigo=(select max(codigo) from tabela where codigo < ?)[Ô]
Cmd.Parameters(0).Value = TxtCodigo.Text
Set RsTabela = Cmd.Execute

If Not RsTabela.EOF Then
Atualizar
End If
RsTabela.Close
Set RsTabela = Nothing
Set Cmd = Nothing
End Sub
_______________________________________________________________________

Private Sub CmdPrimeiro_Click()
Set RsTabela = New ADODB.Recordset
RsTabela.Open [Ô]Select * From Tabela where codigo=(select min(codigo) from tabela)[Ô], Conexao, adOpenDynamic

If Not RsTabela.EOF Then
Atualizar
End If
RsTabela.Close
Set RsTabela = Nothing
End Sub
_______________________________________________________________________

Private Sub CmdProximo_Click()
Set Cmd = New ADODB.Command
Set Cmd.ActiveConnection = Conexao
Cmd.CommandType = adCmdText
Cmd.CommandText = [Ô]select * from tabela where codigo=(select min(codigo) from tabela where codigo > ?)[Ô]
Cmd.Parameters(0).Value = TxtCodigo.Text
Set RsTabela = Cmd.Execute

If Not RsTabela.EOF Then
Atualizar
End If
RsTabela.Close
Set RsTabela = Nothing
Set Cmd = Nothing
End Sub
_______________________________________________________________________

Private Sub CmdUltimo_Click()

Set RsTabela = New ADODB.Recordset
RsTabela.ActiveConnection = Conexao
RsTabela.CursorLocation = adUseClient
RsTabela.CursorType = adOpenDynamic
RsTabela.Open [Ô]Select * From Tabela where codigo=(select max(codigo) from tabela)[Ô]

If Not RsTabela.EOF Then
Atualizar
End If
RsTabela.Close
Set RsTabela = Nothing
End Sub
_______________________________________________________________________

Private Sub Form_Load()
[ô]abre banco
Set Conexao = New ADODB.Connection
Conexao.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0; Data Source= [Ô] & App.Path & [Ô]\banco.mdb[Ô]
Frame1.Enabled = False
CmdPrimeiro_Click
End Sub
JOYYY 23/12/2016 19:18:15
#470018
Essa última é bacana mesmo e mais simples pra mim que sou iniciante, mas ela é ADO......
KERPLUNK 23/12/2016 23:41:13
#470025
Amigo, dica quente pra você: Se está começando, nem passe pelo DAO, vá direto para o ADO. DAO é tecnologia morta, e não tem nenhum remanescente hoje.
JOYYY 23/12/2016 23:57:37
#470027
Obrigada por sua sugestão, para te falar a verdade eu estou com essa dúvida mesmo, e quanto mais procuro, mais em duvida eu fico. Cada lugar fala uma coisa, e também dizem que DAO é mais simples e melhor para aplicações pequenas...... CADA VEZ MAIS EM DUVIDA.... Enfim, sobre estar morta, não parece estar tão morta assim, veja abaixo alguns exemplos de pessoas renomadas na área:

http://www.macoratti.net/d040901.htm

http://www.maximoaccess.com/t14471-escolher-entre-dao-e-ado

https://accessexperts.com/blog/2013/04/09/dao-or-adodb-which-one-should-you-use-and-when/ ( ESTE AQUI DIZ QUE ADO é QUE TA OBSOLETO)

http://www.maximoaccess.com/t12682-dao-ou-adodb-qual-deles-voce-deve-usar-e-quando

http://www.maximoaccess.com/t5402-consideracoes-sobre-dao-e-ado


MARCOSLING 24/12/2016 01:50:40
#470028
Bom, eu não queria criar polêmica, mas em se tratando de Access, o DAO tem uma performance melhor do que ADO.

Em se tratando de VB6, acho que não há outra opção além do ADO.

Mas se vc está começando, porque vc já não parte para o .Net?
JOYYY 24/12/2016 11:19:12
#470034
Pois é MARCOSLING, pelo visto essa discussão parece ser muito frequente, não quero também me aprofundar nisso,e nem tenho conhecimento para tanto.

Respondendo sua pergunta, eu preferi ACCESS pela facilidade, meu projeto é pequeno, e DAO pelo o que li suporta bem, além disso, ela também parece ser mais fácil. O .NET seria dar um passo maior que minhas pernas, e também maior do que preciso para este projeto. Enfim, acho que respondi sua pergunta, agora preciso que alguém responda a minha, pois ainda não consegui fazer os botões de navegação funcionarem a contento.

MARCOSLING 24/12/2016 14:41:16
#470036
Citação:

:
Pois é MARCOSLING, pelo visto essa discussão parece ser muito frequente, não quero também me aprofundar nisso,e nem tenho conhecimento para tanto.

Respondendo sua pergunta, eu preferi ACCESS pela facilidade, meu projeto é pequeno, e DAO pelo o que li suporta bem, além disso, ela também parece ser mais fácil. O .NET seria dar um passo maior que minhas pernas, e também maior do que preciso para este projeto. Enfim, acho que respondi sua pergunta, agora preciso que alguém responda a minha, pois ainda não consegui fazer os botões de navegação funcionarem a contento.



Dê uma olhada nesses links:
http://www.macoratti.net/07/05/vb_prgs.htm
http://www.macoratti.net/dao.htm

Acho que vai ajudar.
OMAR2011 24/12/2016 14:52:20
#470037
Verifica.
JOYYY 26/12/2016 13:08:33
#470056
Graças ao seu exemplo OMAR2011 me clareou as ideias.... ufa...rs

Eu até cheguei a fazer assim, mas acho que o problema estava na conexao, toda vez que exutava a rotina para carregar os text, eu também abria a conexão. Foi retirar isso e funcionou igual perfeitamente.

Mas agora fiquei sem saber, quando devo abrir e fechar a conexao?

Obrigada desde já pela boa vontade de todos em me ajudar.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas