[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