MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Erro em um SQL

    Compartilhe

    amorimeleon
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 14/10/2016

    Erro em um SQL

    Mensagem  amorimeleon em Ter 25 Out 2016, 13:03

    Bom dia, segue abaixo o código que está apresentando erro, mas não acho o motivo para tal. Se alguém puder ajudar...




    Private Sub Form_Open(Cancel As Integer)

    Me.nrDiasOS = DateAdd("d", Nz(getParametro("nrDiasFiltroOS"), 0) * -1, Date)
    vLimite = Nz(getParametro("limNrRegistrosInicioConsultas"), 500)

    If vLimite > 0 Then
    If InStr(1, Me.RecordSource, " TOP ") = 0 Then
    vSQLInicial = Left(Me.RecordSource, 7) & "TOP " & vLimite & " " & Right(Me.RecordSource, Len(Me.RecordSource) - 7)
    (linha apontado de erro:) vSQLInicial = Left(vSQLInicial, InStr(1, vSQLInicial, "WHERE ") - 1) & "WHERE nrDocto >0 ORDER BY nrDocto DESC"

    End If
    Me.RecordSource = vSQLInicial
    Else
    vSQLInicial = Me.RecordSource
    End If



    End Sub

    philipp.moreira
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 05/02/2016

    Re: Erro em um SQL

    Mensagem  philipp.moreira em Dom 30 Out 2016, 20:28

    Código:




    Private Sub Form_Open(Cancel As Integer)

       Me.nrDiasOS = DateAdd("d", Nz(getParametro("nrDiasFiltroOS"), 0) * -1, Date)

       vLimite = Nz(getParametro("limNrRegistrosInicioConsultas"), 500)


       If vLimite > 0 Then
          
          If InStr(1, Me.RecordSource, " TOP ") = 0 Then
             
             'Creio que aqui falte o comando sELECT inicialmente para que fique tipo 'Select TOP 200 [campo1], [campo2] .....'
             vSQLInicial = Left(Me.RecordSource, 7) & "TOP " & vLimite & " " & Right(Me.RecordSource, Len(Me.RecordSource) - 7) & " "

             'E nesta parte ele pode não estar localizando o where, logo ele esta tentando fazer 0-1.... voce ja debugou o codigo e conferiu se na linha acima ele pega exatamente até o where?
             'linha apontado de erro:
             vSQLInicial = Left(vSQLInicial, InStr(1, vSQLInicial, "WHERE ") - 1) & "WHERE nrDocto >0 ORDER BY nrDocto DESC"

          End If
          
          Me.RecordSource = vSQLInicial

       Else
          vSQLInicial = Me.RecordSource
       End If

    End Sub

      Data/hora atual: Dom 04 Dez 2016, 01:52