Erro de compilação ao executar um relatório

27/04/2017

0

VB

Quando vou executar o relatório, me dá essa mensagem:

Não consegui carregar a imagem do erro, então segue os dizeres:

Compile Error:

Method or data member not found


Que mensagem é essa? Como resolvo?

Esse é o código do botão quando eu clico:

Private Sub OKButton_Click()
    If Not ValidarCampos Then

        Exit Sub
    End If

  If optAnexo.Value = True Then
     'anexo
        If optAtivos.Value = True Then
            PortariaAtivos
            ElseIf optinativo.Value = True Then
                    PortariaInativos
        End If
    'listagem
    ElseIf optListagem.Value = True Then
                If optAtivos.Value = True Then
                    PortariaListagemAtivos
                    ElseIf optinativo.Value = True Then
                       PortariaListagemInativos
                End If
  End If
End Sub


Então aparece a mensagem e quando dou OK para prosseguir cai nessas linhas e em destaque essa: optNumeroRegistro.Value. Confesso não tenho nem noção.

Public Function ValidarCampos() As Boolean

        If optTodos.Value = False And optNumeroRegistro.Value = False And optSelecaoRegistro.Value = False Then
            MsgBox "Selecione uma opção para o relatório."
            ValidarCampos = False
            Exit Function
            ElseIf optNumeroRegistro.Value = True Then
                    If txtDe.Text = "" Or txtAte.Text = "" Then
                        MsgBox "Digite a faixa de registros para o relatório."
                        txtDe.SetFocus
                        ValidarCampos = False
                        Exit Function
                    End If
            ElseIf optSelecaoRegistro.Value = True Then
                    If msGrupoFuncionariosSelecionados = "" Then
                        MsgBox "Selecione os registros para o relatório."
                        cmdPesquisa.SetFocus
                        ValidarCampos = False
                        Exit Function
                    End If



         End If

    ValidarCampos = True
End Function
Pjava

Pjava

Responder

Posts

27/04/2017

Daniel Araújo

Boa noite!
A mensagem está dizendo que um método ou atributo não foi encontrado. Qual a linha exata que o compilador está reclamando?

Posta a imagem do erro nesse site:
https://uploaddeimagens.com.br
Aí tu manda só link da imagem pra gente analisar.

Se a resposta for útil não esqueça de dar um like!
Responder

28/04/2017

Fabiano Carvalho

Ultilize breakpoint pra pegar a linha do erro, ou então window immediate para saber o que cada linha retorna!
Responder

28/04/2017

Pjava

Ok pessoal, vou postar a imagem, mas a imagem é apenas um MessageBox com os dizeres que escrevi, pois não estava conseguindo postar a imagem. Vou investigar mais e vejo. Eu nunca em minha vida havia trabalhado com VB e achei que nunca iria acontecer, mas peguei um projeto que a priori era somente Sql Server, aí o gestor pediu uma alteração e essa alteração precisava mexer nos fontes da aplicação, que tem data e hora para morrer, mas até vai-se alterando. Legado é Legado.
Responder

28/04/2017

Pjava

Esse é o código do botão Imprimir

Private Sub OKButton_Click()

    If Not ValidarCampos Then        
        Exit Sub
    End If

  If optAnexo.Value = True Then
     'anexo
        If optAtivos.Value = True Then
            PortariaAtivos
            ElseIf optinativo.Value = True Then
                    PortariaInativos
        End If
    'listagem
    ElseIf optListagem.Value = True Then
                If optAtivos.Value = True Then
                    PortariaListagemAtivos
                    ElseIf optinativo.Value = True Then
                       PortariaListagemInativos
                End If
  End If
End Sub

Coloquei o Breakpoint nessa linha If Not ValidarCampos Then e quando dou um Shift+F8, dá a mensagem do erro. Fui na função ValidarCampos e coloquei o break na primeira linha. Conclusão, nem passa por ele, já explode na tela o erro. Abaixo o código da função:

Public Function ValidarCampos() As Boolean

        If optTodos.Value = False And optNumeroRegistro.Value = False And optSelecaoRegistro.Value = False Then
            MsgBox "Selecione uma opção para o relatório."
            ValidarCampos = False
            Exit Function
            ElseIf optNumeroRegistro.Value = True Then
                    If txtDe.Text = "" Or txtAte.Text = "" Then
                        MsgBox "Digite a faixa de registros para o relatório."
                        txtDe.SetFocus
                        ValidarCampos = False
                        Exit Function
                    End If
            ElseIf optSelecaoRegistro.Value = True Then
                    If msGrupoFuncionariosSelecionados = "" Then
                        MsgBox "Selecione os registros para o relatório."
                        cmdPesquisa.SetFocus
                        ValidarCampos = False
                        Exit Function
                    End If
         End If

    ValidarCampos = True
End Function
Responder

28/04/2017

Pjava

Resolvi alguns erros, mas ainda está sem funcionar.

DT_LAUDO não é uma data, é uma string. Esse parâmetro eu coloquei, que é a minha alteração. Se eu executo a proc no banco, passando esse parâmetro, funciona. me retorna os dados esperados. Mas na aplicação não rola. Por deconhecer o VB, fico perdido no debug, apesar de já conhecer um pouco, mas eu não sei se preciso fazer mais coisas. essa é a declaração da Proc com meus dois parâmetros adicionados e o tal do prm.~

Public Function RelPortariaInativos(ByVal ID_XFC_INICIAL As Long, ByVal ID_XFC_FINAL As Long, ByVal data_periodo As Date, ByVal data_periodo_fim As Date, ByVal ID_EMP As Integer, ByVal ID_UNI_EMP As Integer, Optional ByVal ID_XFC_GRP As String = "", Optional ByVal DT_ADM As Date, Optional ByVal DT_DE_LAUDO As String, Optional ByVal DT_ATE_LAUDO As String) As Recordset
On Error GoTo e_List

        Dim cn As Connection
        Dim cmd As Command
        Dim rs As Recordset
        
        
        Set rs = New Recordset
        ' Prepara conexao com a Base de dados
        Set cn = New Connection
        cn.CursorLocation = adUseClient
        Set cmd = New Command
        Dim prm As Parameter

        cmd.CommandText = "SP_CMO_SEL_PORTARIA_INATIVOS"
        cmd.CommandType = adCmdStoredProc
        
        Set prm = cmd.CreateParameter("@ID_XFC_INICIAL", adInteger, adParamInput, , ID_XFC_INICIAL)
        cmd.Parameters.Append prm
        
        Set prm = cmd.CreateParameter("@ID_XFC_FINAL", adInteger, adParamInput, , ID_XFC_FINAL)
        cmd.Parameters.Append prm
        
        Set prm = cmd.CreateParameter("@data_periodo", adDBTimeStamp, adParamInput, , data_periodo)
        cmd.Parameters.Append prm
        
        Set prm = cmd.CreateParameter("@data_periodo_fim", adDBTimeStamp, adParamInput, , data_periodo_fim)
        cmd.Parameters.Append prm
        
        Set prm = cmd.CreateParameter("@ID_EMP", adInteger, adParamInput, , ID_EMP)
        cmd.Parameters.Append prm
        
        Set prm = cmd.CreateParameter("@ID_UNI_EMP", adInteger, adParamInput, , ID_UNI_EMP)
        cmd.Parameters.Append prm
        
        Set prm = cmd.CreateParameter("@ID_XFC_GRP", adVarChar, adParamInput, 1000, ID_XFC_GRP)
        cmd.Parameters.Append prm
        
        Set prm = cmd.CreateParameter("@DT_ADM", adDBTimeStamp, adParamInput, , DT_ADM)
        cmd.Parameters.Append prm
        
        '-----------Alterado para receber a data de laudo(Paulo Correa)---------------
        Set prm = cmd.CreateParameter("@DT_DE_LAUDO", adVarChar, adParamInput, , DT_DE_LAUDO)
        cmd.Parameters.Append prm
        
        Set prm = cmd.CreateParameter("@DT_ATE_LAUDO", adVarChar, adParamInput, , DT_ATE_LAUDO)
        cmd.Parameters.Append prm
        '-----------------------------------------------------------------------------
        
               
        cn.Open GetConnectionString()
        Set cmd.ActiveConnection = cn

        cmd.CommandTimeout = 0

        'Executa a operacao e retorna um RecordSet
        rs.Open cmd, , adOpenStatic, adLockReadOnly
        Set RelPortariaInativos = rs

        Set cmd = Nothing
        Set cn = Nothing

        Exit Function

e_List:
        
        ' Captura erro
        
        If Not cn Is Nothing Then
            If cn.Errors.Count > 0 Then
                frmErro.txtNroDescricao = cn.Errors(0).NativeError
                frmErro.txtMensagem = cn.Errors(0).Source & "-" & cn.Errors(0).Description
            End If
        Else
            frmErro.txtMensagem = Err.Source & "-" & Err.Description
            frmErro.txtNroDescricao = Err.Number
         End If
         
         frmErro.Show vbModal
                  
         ' Limpa Variaveis
         Set cmd = Nothing
         Set cn = Nothing
        
End Function
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar