ACCESS - CONSULTA
Olá estou fazendo um sistema em ACCESS2016/VBA, e, em um form (frmBoletim) tenho um botão CONSULTA que NÃO esta trazendo os dados do bd. Tenho outro form com o mesmo botão e código e FUNCIONA. A diferença que posso ver a princÃpio é a quantidade de campos a ser preenchida com a consulta. No segundo form que funciona são apenas três campos, já no primeiro que ,não funciona, são vinte e dois campos da tabela. Essa quantidade de campos tem alguma influência no funcionamento do SELECT, pois já tentei consultar direto na tabela (select * from tbFormulario ) e com CONSULTA (select * from ConsultaBoletim) e não carrega os textbox. Segue o que tenho até agora...
MODULO DE CONEXÃO
Option Compare Database
Public Comando As String [ô]variavel ondem serão colocados os comandos SQL, como Insert, Update e Select
Public Banco As Database [ô]variavel que irá fazer a conexao entre a aplicação e o banco de dados, atraves dele poderemo fazer a execução de comandos sql como o insert e update
Public dataset As Recordset [ô]variavel ondem serão passados comandos SQl do tipo select que vão preenche-lo e colocarão os dados em uma especia de tabela virtual na memória RAM
Function Conecta()
Set Banco = CurrentDb [ô]incializa a variavel banco com o valor de CurrentDB, oq seria currentDB?! CurrentDB significa que o banco a ser usado é o banco local
End Function
Function valida_selecao()
Set dataset = Banco.OpenRecordset(Comando, dbOpenDynaset) [ô]inicializa o dataset, executa o comando sql passado através da variavél Comando e preenche o dataset na memória
End Function
FORMULARIO
Private Sub Form_Activate()
Conecta
[ô]GerarCodigoNOVO
Me.txtCodBoletim.SetFocus
End Sub
Private Sub cmdConsultar_Click()
If txtCodBoletim <> [Ô][Ô] Then
[ô]Comando = [Ô]Select * from tbFormulario where codFormulario=[Ô] & txtCodBoletim [ô]seleciona todos os dados pertencentes ao código informado
Comando = [Ô]Select * from ConsultaBoletim where codFormulario=[Ô] & txtCodBoletim
valida_selecao
[ô]Banco.Execute (Comando)
If dataset.RecordCount <> 0 Then [ô] se houver ao menos 1 registro, que dizer, recordcount<>0 significa que foi achado, se não, não!
Me.txtDe = dataset([Ô]dtDe[Ô])
Me.txtAte = dataset([Ô]dtAte[Ô])
Me.txtMatricula = dataset([Ô]MatriculaFunc[Ô])
Me.txtMatriculaChefe = dataset([Ô]MatriculaChefe[Ô])
Me.txtTrabalho = dataset([Ô]NroTotal[Ô])
Me.txtAfastamento = dataset([Ô]NroPontosAfasta[Ô])
Me.txtFNJ = dataset([Ô]NroPontosFNJ[Ô])
Me.txtOrdem = dataset([Ô]NroPontosOrdens[Ô])
Me.txtZelo = dataset([Ô]NroPontosZelo[Ô])
Me.txtUrbanidade = dataset([Ô]NroPontosUrbanidade[Ô])
Me.txtCooperacao = dataset([Ô]NroPontosCooperacao[Ô])
Me.txtEconomia = dataset([Ô]NroPontosEconomia[Ô])
Me.txtPAD = dataset([Ô]NroPontosDestituiPAD[Ô])
Me.txtMeta = dataset([Ô]NroPontosTrabalho[Ô])
Me.txtCurso = dataset([Ô]NroPontosAperfeicoamento[Ô])
Me.txtEnsinoMedio = dataset([Ô]NroPontosEnsMedio[Ô])
Me.txtTecnico = dataset([Ô]NroPontosTecProfi[Ô])
Me.txtGraduacao = dataset([Ô]NroPontosGradSup[Ô])
Me.txtPosGraduacao = dataset([Ô]NroPontosPosGrad[Ô])
Me.txtMestrado = dataset([Ô]NroPontosMestrado[Ô])
Me.txtDoutorado = dataset([Ô]NroPontosDoutorado[Ô])
txtMatricula.SetFocus
txtMatricula_LostFocus
cmdAlterar.Enabled = True
cmdExcluir.Enabled = True
cmdGravar.Enabled = False
cmdConsultar.Enabled = False
txtCodBoletim.Enabled = False [ô] o código não poderá ser alterado pelo usuário
Else [ô]caso não tenha sido achado nenhum registro
MsgBox ([Ô]Não foi achado nenhum registro com o código informado![Ô]), vbInformation + vbOKOnly, [Ô]Nenhum Registro[Ô]
End If
Else
MsgBox ([Ô]Necessário informar um código para efetuar a consulta![Ô]), vbInformation + vbOKOnly, [Ô]Codigo Necessário![Ô]
End If
End Sub
é isso ai...
ALAN
MODULO DE CONEXÃO
Option Compare Database
Public Comando As String [ô]variavel ondem serão colocados os comandos SQL, como Insert, Update e Select
Public Banco As Database [ô]variavel que irá fazer a conexao entre a aplicação e o banco de dados, atraves dele poderemo fazer a execução de comandos sql como o insert e update
Public dataset As Recordset [ô]variavel ondem serão passados comandos SQl do tipo select que vão preenche-lo e colocarão os dados em uma especia de tabela virtual na memória RAM
Function Conecta()
Set Banco = CurrentDb [ô]incializa a variavel banco com o valor de CurrentDB, oq seria currentDB?! CurrentDB significa que o banco a ser usado é o banco local
End Function
Function valida_selecao()
Set dataset = Banco.OpenRecordset(Comando, dbOpenDynaset) [ô]inicializa o dataset, executa o comando sql passado através da variavél Comando e preenche o dataset na memória
End Function
FORMULARIO
Private Sub Form_Activate()
Conecta
[ô]GerarCodigoNOVO
Me.txtCodBoletim.SetFocus
End Sub
Private Sub cmdConsultar_Click()
If txtCodBoletim <> [Ô][Ô] Then
[ô]Comando = [Ô]Select * from tbFormulario where codFormulario=[Ô] & txtCodBoletim [ô]seleciona todos os dados pertencentes ao código informado
Comando = [Ô]Select * from ConsultaBoletim where codFormulario=[Ô] & txtCodBoletim
valida_selecao
[ô]Banco.Execute (Comando)
If dataset.RecordCount <> 0 Then [ô] se houver ao menos 1 registro, que dizer, recordcount<>0 significa que foi achado, se não, não!
Me.txtDe = dataset([Ô]dtDe[Ô])
Me.txtAte = dataset([Ô]dtAte[Ô])
Me.txtMatricula = dataset([Ô]MatriculaFunc[Ô])
Me.txtMatriculaChefe = dataset([Ô]MatriculaChefe[Ô])
Me.txtTrabalho = dataset([Ô]NroTotal[Ô])
Me.txtAfastamento = dataset([Ô]NroPontosAfasta[Ô])
Me.txtFNJ = dataset([Ô]NroPontosFNJ[Ô])
Me.txtOrdem = dataset([Ô]NroPontosOrdens[Ô])
Me.txtZelo = dataset([Ô]NroPontosZelo[Ô])
Me.txtUrbanidade = dataset([Ô]NroPontosUrbanidade[Ô])
Me.txtCooperacao = dataset([Ô]NroPontosCooperacao[Ô])
Me.txtEconomia = dataset([Ô]NroPontosEconomia[Ô])
Me.txtPAD = dataset([Ô]NroPontosDestituiPAD[Ô])
Me.txtMeta = dataset([Ô]NroPontosTrabalho[Ô])
Me.txtCurso = dataset([Ô]NroPontosAperfeicoamento[Ô])
Me.txtEnsinoMedio = dataset([Ô]NroPontosEnsMedio[Ô])
Me.txtTecnico = dataset([Ô]NroPontosTecProfi[Ô])
Me.txtGraduacao = dataset([Ô]NroPontosGradSup[Ô])
Me.txtPosGraduacao = dataset([Ô]NroPontosPosGrad[Ô])
Me.txtMestrado = dataset([Ô]NroPontosMestrado[Ô])
Me.txtDoutorado = dataset([Ô]NroPontosDoutorado[Ô])
txtMatricula.SetFocus
txtMatricula_LostFocus
cmdAlterar.Enabled = True
cmdExcluir.Enabled = True
cmdGravar.Enabled = False
cmdConsultar.Enabled = False
txtCodBoletim.Enabled = False [ô] o código não poderá ser alterado pelo usuário
Else [ô]caso não tenha sido achado nenhum registro
MsgBox ([Ô]Não foi achado nenhum registro com o código informado![Ô]), vbInformation + vbOKOnly, [Ô]Nenhum Registro[Ô]
End If
Else
MsgBox ([Ô]Necessário informar um código para efetuar a consulta![Ô]), vbInformation + vbOKOnly, [Ô]Codigo Necessário![Ô]
End If
End Sub
é isso ai...
ALAN
Se recordcout estiver zerado não vai fazer nada mesmo. Tem registros correspondentes ao critério informado na tabela?
KERPLUNK, na tabela há registros...
E algum que bata com o critério de pesquisa? Ou seja, algum registro onde o campo [Ô]codFormulario[Ô] seja igual ao que estiver em txtCodBoletim?
KERPLUNK, sim , criei a tabela e inseri 3 registros para teste...
ALAN
ALAN
Para agilizar o entendimento, segue o projeto em anexo. Para teste : abrir o formulário frmBoletim----> digitar 1, 2 ou 3 no campo BOLETIM Nº e clicar no botão CONSULTA.
Para facilitar desmembrei em duas tabelas. Acho que dessa forma facilita..Obrigado pela atenção. estou encerrando.
Tópico encerrado , respostas não são mais permitidas