Ir para conteúdo
Fórum Script Brasil
  • 0

Botao Proximo VB HELP PLIZ (RESOLVIDO)


Fabin

Pergunta

GALERA É O SEGUINTE SOU INICANTE EM VB TO LENDO ALGUNS TUTORIAIS PARA APRENDER.... ESTOU FAZENDO UM PROGRAMA SIMPLES DE CADASTRO DE USUARIOS JUNTO COM BANCO DE DADOS SO QUE TO COM DUVIDA NO BOTAO PROXIMO.... não TO CONSEGUINDO FAZER ELE MOSTRAR O PROXIMO REGISTRO QUANO EU CLICO NELE ELE APARCE O SEGUNDO REGISTRO E DPOIS MAIS NADA AI SO FICA NO SEGUNDO REGISTRO.... vocês PODEM ME AJUDAR DESDE já AGRADEÇO... VLWS AHHHHH... TA AI O CODIGO DO BOTAO......

GENRAL DECLARATIONS
Dim vInclusao As Boolean
Public cnnAgenda As New ADODB.Connection
______________________________________________
Private Sub cmdProximo_Click()
    Dim cnnComando As New ADODB.Command
    Dim rsSeleçao As New ADODB.Recordset
    Dim i As Integer
    Screen.MousePointer = vbHourglass
    With cnnComando
        .ActiveConnection = cnnAgenda
        .CommandType = adCmdText
        .CommandText = "SELECT * FROM Agenda"
        Set rsSeleçao = .Execute
    End With
    With rsSeleçao
        .MoveNext
        If .EOF = True Then .MoveLast
            txtCodPessoa.Text = rsSeleçao("CodPessoa")
            txtNome.Text = rsSeleçao("Nome")
            txtNasc.Text = rsSeleçao("DataNasci")
            txtTelefone.Text = rsSeleçao("Telefone")
            txtFax.Text = rsSeleçao("Fax")
            txtEndereço.Text = rsSeleçao("Endereço")
            txtCidade.Text = rsSeleçao("Cidade")
            txtEstado.Text = rsSeleçao("Estado")
            txtCep.Text = rsSeleçao("Cep")
            txtEmail.Text = rsSeleçao("Email")
    End With
Saida:
        Set cnnComando = Nothing
        Set rsSeleçao = Nothing
        Screen.MousePointer = vbDefault
        Exit Sub
End Sub

Editado por Fabin
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

não é pra executar o select toda hora (metodo execute q você ta usando). delcare o recordset no generals e execute o select no form load por exemplo (e não feche o recordset, so feche no unload do formulario).

ai, ponha no clique do botao, a unica linha rsSeleçao.MoveNext e pronto.

bom, pra dizer a verdade, melhor dexar o codigo assim:

Private Sub cmdProximo_Click()
    If rsSeleçao.EOF Then Exit Sub

    rsSeleçao.MoveNext
    If rsSeleçao.EOF Then
        rsSeleçao.MovePrevious
    End Sub
End Sub[/code]

assim não vai acontecer erro de você passar do final dos registros.

Link para o comentário
Compartilhar em outros sites

  • 0

ACHU Q SERIA ABRIR OUTRO tópico MAS ACHU Q DA PRA RESOLVER TUDO AQUI

É O SEGUINTE KUROI

TO PRECISANDO FAZER COM QUE O SISTEMA QUANDO A PESSOA DIGITAR O CPF VERFIQUE SE ELE É REPETIDO

VALIDAÇAO EU já ATE CONSEGUI MAS não TO CONSEGUINDO VERIFICAR SE ELE É REPETIDO ESTOU TENTANDO DESTE MODO

Public rsSeleçao as new adodb.recordset

Public cnnCadastro as new adodb.connection

Private Sub txtCpf_LostFocus()

Set rsSeleçao = New ADODB.Recordset

rsSeleçao.Open "SELECT * FROM Clientes WHERE CPF"

If rsSeleçao.RecordCount <> 0 Then

MsgBox "CPF existente", vbInformation + vbOKOnly + vbApplicationModal, "Aviso"

End If

VALEWS KUROI

ABRAÇO

T+ :D

Link para o comentário
Compartilhar em outros sites

  • 0
ACHU Q SERIA ABRIR OUTRO tópico MAS ACHU Q DA PRA RESOLVER TUDO AQUI

É O SEGUINTE KUROI

TO PRECISANDO FAZER COM QUE O SISTEMA QUANDO A PESSOA DIGITAR O CPF VERFIQUE SE ELE É REPETIDO

VALIDAÇAO EU já ATE CONSEGUI MAS não TO CONSEGUINDO VERIFICAR SE ELE É REPETIDO ESTOU TENTANDO DESTE MODO

Public rsSeleçao as new adodb.recordset

Public cnnCadastro as new adodb.connection

Private Sub txtCpf_LostFocus()

Set rsSeleçao = New ADODB.Recordset

rsSeleçao.Open "SELECT * FROM Clientes WHERE CPF"

If rsSeleçao.RecordCount <> 0 Then

MsgBox "CPF existente", vbInformation + vbOKOnly + vbApplicationModal, "Aviso"

End If

VALEWS KUROI

ABRAÇO

T+ :D

o erro é na query, pois você não está informando o valor que deseja filtrar..

Private Sub txtCpf_LostFocus()
     Set rsSeleçao = New ADODB.Recordset
        rsSeleçao.Open "SELECT * FROM Clientes WHERE CPF = txtCpf.text"
        If rsSeleçao.RecordCount <> 0 Then
            MsgBox "CPF existente", vbInformation + vbOKOnly + vbApplicationModal, "Aviso"
        End If

caso o valor de txt seja string tem que colocar as aspas simples

Link para o comentário
Compartilhar em outros sites

  • 0

raphael é o seguinte arrumei a linha que você tinha me falado e executei o aplicativo mas esta acontecendo o seguinte erro

"a conexao não pode ser usada para ser usada para realizar essa operaçao.Ela esta fechada ou invalida neste contexto.

ta ai o codigo:

Private Sub txtCpf_LostFocus()

Set rsSeleçao = New ADODB.Recordset

rsSeleçao.Open "SELECT * FROM Clientes WHERE CPF = txtCpf.text"

If rsSeleçao.RecordCount <> 0 Then

MsgBox "CPF Existente", vbInformation + vbOKOnly + vbApplicationModal, "Aviso"

End If

If txtCpf.Text <> Empty Then

MsgBox "Clique no botão Validar CPF para continuar com o cadastro.", vbInformation, "Aviso"

End If

cmdValida.Enabled = True

txtIdentidade.Enabled = False

txtEndereço.Enabled = False

txtNumero.Enabled = False

txtBairro.Enabled = False

txtCidade.Enabled = False

txtEstado.Enabled = False

txtResidencial.Enabled = False

txtCelular.Enabled = False

End Sub

e aqui rapahel tem como você me ajudar no botao proximo q postei ai emcima to quebrando a cabeça e não to conseguindo...

valews

t+

Link para o comentário
Compartilhar em outros sites

  • 0

raphael as variaveis que fazem a conexao estao como publicas entaum não precisa eu declarar elas d novo não é??? ou precisa???

e continua dando o mesmo erro, essa conexao que você falo é com o banco de dados???

desde já agradeço

vales

t+

Link para o comentário
Compartilhar em outros sites

  • 0

quanto aquela parte do form_load, tente por o codigo tipo assim:

Private Sub Form_Load
    'As duas linhas debaxo são pra abrir a conexao, se você usa otro codigo pra abrir, substitua as duas linhas
    cnnAgenda.ConnectionString = " - ponha aqui a connection string - "
    cnnAgenda.Open

    Set rsSeleçao = New ADODB.RecordSet
    Set rsSeleçao = cnnAgenda.Execute("Select * From Agenda")
End Sub[/code]

mas antes declar o rsSeleçao la em cima no generals.

e ai não feche mais a conexao e nem o recordset.

e quando ao codigo do raphael no lost focus, acho melhor você usar um segundo recordset pra não dar conflito com o rsSeleçao. e dexando a conexao aberta, o codigo deve funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0
quanto aquela parte do form_load, tente por o codigo tipo assim:

Private Sub Form_Load
    'As duas linhas debaxo são pra abrir a conexao, se você usa otro codigo pra abrir, substitua as duas linhas
    cnnAgenda.ConnectionString = " - ponha aqui a connection string - "
    cnnAgenda.Open

    Set rsSeleçao = New ADODB.RecordSet
    Set rsSeleçao = cnnAgenda.Execute("Select * From Agenda")
End Sub

mas antes declar o rsSeleçao la em cima no generals.

e ai não feche mais a conexao e nem o recordset.

e quando ao codigo do raphael no lost focus, acho melhor você usar um segundo recordset pra não dar conflito com o rsSeleçao. e dexando a conexao aberta, o codigo deve funcionar.

kuroi estava lendo sobre modulo, posso declara entaum tudo no modulo, pois pelo o que entendi abrindo um form module se eu declara variaveis nele ele vai usar para todos os formularios não é isso?? ou é melhor pelo generals mesmo???

vlews

t+ :D

Link para o comentário
Compartilhar em outros sites

  • 0
quanto aquela parte do form_load, tente por o codigo tipo assim:

Private Sub Form_Load
    'As duas linhas debaxo são pra abrir a conexao, se você usa otro codigo pra abrir, substitua as duas linhas
    cnnAgenda.ConnectionString = " - ponha aqui a connection string - "
    cnnAgenda.Open

    Set rsSeleçao = New ADODB.RecordSet
    Set rsSeleçao = cnnAgenda.Execute("Select * From Agenda")
End Sub
mas antes declar o rsSeleçao la em cima no generals. e ai não feche mais a conexao e nem o recordset. e quando ao codigo do raphael no lost focus, acho melhor você usar um segundo recordset pra não dar conflito com o rsSeleçao. e dexando a conexao aberta, o codigo deve funcionar.
kuroi estava lendo sobre modulo, posso declara entaum tudo no modulo, pois pelo o que entendi abrindo um form module se eu declara variaveis nele ele vai usar para todos os formularios não é isso?? ou é melhor pelo generals mesmo??? vlews t+ :D
e aew kuroi beleza?? estive fora por uns tempos e não tive como postar mais duvidas... mas é o seguinte to começando a entender o funcionamento do recordset, reformulei meu código e meu form_load está assim agora:
Private Sub Form_Load()
    cmdSalvar.Enabled = False
    txtCodCliente.Enabled = False
    On Error GoTo errConexao
    conexao.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & " Data Source =G:\Meus Documentos\Fábio\Projetos\Sistema Simples\Sistema.mdb; "
    conexao.Open
errConexao:
        With Err
            If .Number <> o Then
                MsgBox "Houve um erro durante a conexão com o Banco de Dados." & _
                        vbCrLf & "O sistema será encerrado.", vbCritical + vbOKOnly + vbApplicationModal, "Erro"
                .Number = 0
                Set conexao = Nothing
                End
            End If
        End With
        rsSeleçao.Open "SELECT * FROM Cadastro ORDER bY CodCliente", conexao, adOpenForwardOnly, adLockReadOnly
        txtCodCliente.Text = rsSeleçao.Fields("CodCliente")
        txtNome.Text = rsSeleçao.Fields("Nome")
        txtCPF.Text = rsSeleçao.Fields("CPF")
        txtNasc.Text = rsSeleçao.Fields("DataNasc")
        txtEndereço.Text = rsSeleçao.Fields("Endereço")
        txtCidade.Text = rsSeleçao.Fields("Cidade")
        txtUF.Text = rsSeleçao.Fields("UF")
        txtTelefone.Text = rsSeleçao.Fields("Telefone")
        txtEmail.Text = rsSeleçao.Fields("Email")
End Sub

sendo que criei um modulo e coloquei como public o connection e o recordset

e agora como faço o botão proximo já tentei de todas as formas inclusive a que você me passou mas não consegui

será que é por causa que eu to usando fieldset no form?? e é outro tipo de código para o botao proximo??

valews pelo ajuda galera

abraço

t+ :rolleyes:

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

  • 0
kuroi estava lendo sobre modulo, posso declara entaum tudo no modulo, pois pelo o que entendi abrindo um form module se eu declara variaveis nele ele vai usar para todos os formularios não é isso?? ou é melhor pelo generals mesmo???

isso, se você declarar a varaiavel ou objeto como public no module ele vale pra todos os formularios.

agora se você so vai usar o recordset em um form, o melhor é declarar so no generals.

e agora como faço o botão proximo já tentei de todas as formas inclusive a que você me passou mas não consegui

será que é por causa que eu to usando fieldset no form?? e é outro tipo de código para o botao proximo??

hum o q é fieldsets??

então, esse codigo aqui q eu passei devia funcionar certinho, qual o problema q ta ocorrendo??

Private Sub cmdProximo_Click()
    If rsSeleçao.EOF Then Exit Sub

    rsSeleçao.MoveNext
    If rsSeleçao.EOF Then
        rsSeleçao.MovePrevious
    End Sub
End Sub[/code] olhando aqui acho q deve ser porque você abriu como adOpenForwardOnly. faz o seguinte, antes da linha
[code]conexao.Open
adicione a linha
conexao.CursorLocation = adUseClient
e troque a linha:
rsSeleçao.Open "SELECT * FROM Cadastro ORDER bY CodCliente", conexao, adOpenForwardOnly, adLockReadOnly
por:
Set rsSeleçao = conexao.Open("SELECT * FROM Cadastro ORDER bY CodCliente")

e veja se não resolve.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...