USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  movenext (ADO) Fácil para uns dificil para mim
flecha
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 13/04/2010 15:41 hs            
Tô querendo aprender, já criei um projetinho básico, quero apresentar os registros no form, botão para incluir, excluir, alterar localizar e salvar, mais os de navegação.
Abaixo meu código:
Já consegui abrir e mostrar os registros o botão next (movenext) criado nãodá erro mas também não vai para o próximo. Porque?
Private Sub CmdNext_Click()
Set Con = New ADODB.Connection
Con.Open " Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & App.Path & "Cadastro.mdb"
Set Rs = New ADODB.Recordset
Rs.Open " SELECT * FROM Pessoal", Con, adOpenKeyset, adLockReadOnly
Rs.MoveNext
End Sub
Private Sub CmdSair_Click()
Unload Me
End Sub
Private Sub Form_Load()
'Instanciando os objetos de acesso aos dados
Set Con = New ADODB.Connection
Set Rs = New ADODB.Recordset
'Provedor de acesso ao Banco de dados
'Con.Open " Provider = Microsoft.Jet.OLEDB.4.0; Data Source =  c:Cadastro.mdb"
Con.Open " Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & App.Path & "Cadastro.mdb"
'Abrindo uma tabela do banco de dados Cadastro
'Rs.Open " SELECT COUNT (*) FROM Pessoal", Con, adOpenKeyset, adLockReadOnly
Rs.Open " SELECT * FROM Pessoal", Con, adOpenKeyset, adLockReadOnly
'Exibindo a quantidade de registros da tabela
MsgBox Rs.Fields(0)
MsgBox Rs.Fields(1)
MsgBox Rs.Fields(2)
MsgBox Rs.Fields(3)
Atualiza
Rs.MoveNext
 'Fechando a tabela juntamente com as conexões
Rs.Close
Con.Close
Set Rs = Nothing
Set Con = Nothing
End Sub
Private Sub Atualiza()
TxtId = Rs("codigo")
TxtNome = Rs("nome")
TxtRg = Rs("rg")
TxTCpf = Rs("cpf")
End Sub
 
Num Módulo:
 
Option Explicit
Global Con As ADODB.Connection
Global Rs As ADODB.Recordset
Global Cmd As ADODB.Command
Public Function GetAppPath() As String
'-----------------------------------------------------------------------------
    Dim strAppPath As String
   
    strAppPath = App.Path
   
    If Right$(strAppPath, 1) <> "" Then
        strAppPath = strAppPath & ""
    End If
   
    GetAppPath = strAppPath
End Function
 
Preciso criar os botões de navegação para depois partir para os outros.
 
Conto com os colaboradores.
 
Flecha
   
Fausto
não registrado
ENUNCIADA !
Postada em 13/04/2010 18:40 hs   
Não é difícil cara,basta pensar no que esta fazendo.Não feche a tabela nem o banco.Se o seu
formulário tem somente caixa de texto, para que fechar a tabela e a conexão.
Olha
'Fechando a tabela juntamente com as conexões
Rs.Close
Con.Close
Set Rs = Nothing
Set Con = Nothing
Movimenta sem fechar a tablea e a conexão.
Vai ai um codigo simples.
Private CmdProximo_Click()
rs.MoveNext
If  rs.Eof then
rs.MoveMax
Msgbox"Este é o último registro","0","Aviso"
End if
Atualiza
End Sub
Vai também uma dica que tirei do site que é muito boa
Basta modificar ao seu gosto.
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 & "anco.mdb"
Frame1.Enabled = False
CmdPrimeiro_Click
End Sub
 
  
   
Fausto
não registrado
ENUNCIADA !
Postada em 13/04/2010 18:43 hs   
Ficou errado.É assim
 
Private CmdProximo_Click()
rs.MoveNext
If  rs.Eof then
rs.MoveMax
Msgbox"Este é o último registro","0","Aviso"
End if
Atualiza
End Sub
   
flecha
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 13/04/2010 19:18 hs            
Fausto, acho que tem erro ai, rs.movemax ? é isso mesmo (method not found)
 
Eu peguei esse exemplo do forum mas não entendi a linha abaixo:
Cmd.CommandText = "select * from tabela where codigo=(select min(codigo) from tabela
Se não conseguir criar do zero um projetinho vou tentar esse do exemplo novamente, mas não sei fazer a Inclusão, exlcusão, gravação e procura, quero um simples para ir estudando e aperfeiçoando.
 
Flecha
   
flecha
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 13/04/2010 19:24 hs            
Com a sub assim ele vai para o próximo mas não chega no ultimo OBS: estou com 3 registros para teste: para no 2.
Private Sub CmdNext_Click()
Set Con = New ADODB.Connection
Con.Open " Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & App.Path & "Cadastro.mdb"
Set Rs = New ADODB.Recordset
Rs.Open " SELECT * FROM Pessoal", Con, adOpenKeyset, adLockReadOnly
'Rs.MoveNext
'Rs.Close
'Con.Close
'Set Rs = Nothing
'Set Con = Nothing
Rs.MoveNext
If Rs.EOF Then
Rs.MovePrevious
MsgBox "Este é o último registro", "0", "Aviso"
End If
Atualiza

End Sub
 
Flecha
   
Fausto
não registrado
ENUNCIADA !
Postada em 13/04/2010 20:48 hs   
O correto e mover para o ultimo registro "MoveMax".
   
Página(s): 1/4      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2022   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página