[firebase-br] IBO - Join e filtro não funcionam juntos ("failed to prepare sentence") OU (falha ao preparar sentença)

Gustavo Novaes gutonovaes19 em gmail.com
Ter Abr 14 16:34:20 -03 2020


Criei um projeto pequeno, colocquei IBOQUERY e IB_QUERY (2 DE CADA),
DataSource e Ib_DataSOurce 2 de cada.

Se retido os JOINS que existem na query FILHA, o filtro funciona. Se
mantenho os joins, ocorre o erro.


query1 PAI

object qcadpac: TIB_Query
    IB_Connection = dmMain.IBODatabase
    IB_Transaction = dmMain.IBOTransaction1
    SQL.Strings = (
      'SELECT MOCADPAC.CODPAC, MOCADPAC.DEPENDENTE, MOCADPAC.NOMEPESSOA'
      'FROM '
      'MOCADPAC'
      'WHERE'
      'MOCADPAC.CODPAC = '#39'000000000000018598'#39)
    KeyLinks.Strings = (
      'MOCADPAC.CODPAC')
    KeyLinksAutoDefine = False
    KeyRelation = 'MOCADPAC'
    FetchWholeRows = False
    Left = 332
    Top = 80
  end

query filha

object qhisto: TIB_Query
    IB_Connection = dmMain.IBODatabase
    IB_Transaction = dmMain.IBOTransaction1
    SQL.Strings = (

        'SELECT MO7HISTO.CODPAC, MO7HISTO.DEPENDENTE, MO7HISTO.DATAULTEXA' +
        'ME, MO7HISTO.EXAME, MO7HISTO.DEPENDENTE, MO7HISTO.TIPO_EXAME, '

        'MO7HISTO.TIPO_OCUPA_ASSIS, MO7HISTO.NORMAL_ALTERADO, MO7HISTO.CO' +
        'DPARAMEDICO, MO7HISTO.CUSTO,'

        'MO7HISTO.NIVEL1, MO7HISTO.NIVEL2, MO7HISTO.NIVEL3, MO7HISTO.NIVE' +
        'L4, MO7HISTO.NIVEL5, MO7HISTO.NIVEL6, MO7HISTO.DATAGRAVACAO,'

        'MO7HISTO.CODCATEGORIA, MO7HISTO.CODTURNO, MO7HISTO.CODFUNCAO, MO' +
        '7HISTO.GRAVADOPOR,'

        'MO7HISTO.ALTERADOEM, MO7HISTO.ALTERADOPOR, MO7HISTO.NROATESTADO,' +
        ' MO7HISTO.DATACONVOCACAO, MO7HISTO.COMENTARIO,'
      'MOMEDICO.NOMEPESSOA, '
      'MO7EXAME.NOMEEXAME'
      'FROM MO7HISTO '

        'LEFT JOIN MOMEDICO ON MOMEDICO.CODPARAMEDICO=MO7HISTO.CODPARAMED' +
        'ICO'
      'LEFT JOIN MO7EXAME ON MO7EXAME.EXAME=MO7HISTO.EXAME'
      ''
      '')
    JoinLinks.Strings = (
      'MO7HISTO.CODPARAMEDICO=MOMEDICO.CODPARAMEDICO'
      'MO7HISTO.EXAME=MO7EXAME.EXAME')
    KeyLinks.Strings = (
      'MO7HISTO.CODPAC'
      'MO7HISTO.DEPENDENTE'
      'MO7HISTO.DATAULTEXAME'
      'MO7HISTO.EXAME')
    KeyLinksAutoDefine = False
    KeyRelation = 'MO7HISTO'
    MasterSource = dcadpac
    MasterLinks.Strings = (
      'CODPAC=CODPAC'
      'DEPENDENTE=DEPENDENTE')
    MasterSearch = True
    MasterSearchFlags = [msfOpenMasterOnOpen, msfSearchMasterOnSearch,
msfSearchAppliesToMasterOnly]
    Left = 380
    Top = 80
    ParamValues = (
      'MLNK_CODPAC_0='#39'000000000000018598'#39
      'MLNK_DEPENDENTE_1=')
  end

Abro as querys, Ok! Dados são mostrados e, como já informei um codigo de
paciente, mostra apenas um paciente (pai) e seus exames (filha)
Ao tentar filtrar a filha, ocorre o erro "failed to prepare sentence".

O código do filtro:

     if qhisto.filtered = false then
     begin
          qhisto.filter := 'MO7HISTO.EXAME=5';
          qhisto.Filtered := true;
     end



*Gustavo Novaes *



Mais detalhes sobre a lista de discussão lista