Pessoal, bom dia. Segue uma dica de como utilizar os pré-processador para consulta dinâmica ao nosso favor. Código: /* Arquvo pre-ems2.p */ def input parameter pi-condicao01 as char. for each {1}.{2} where {1}.{2}.{3} = pi-condicao01 no-lock: display {1}.{2}.{3} {1}.{2}.{4} . end. Segue o outro arquivo. o que chama a consulta. Código: /* Arquvo Preprocessador-ems2.p */ def var c-campo01 as char format 'x(40)' init 'it-codigo'. def var c-campo02 as char format 'x(12)' init 'desc-item'. def var c-condicao01 as char no-undo. def var c-banco as char init 'mgemp'. def var c-tabela as char init 'item'. assign c-banco = 'mgemp' c-tabela = 'item' c-condicao01 = '132.3' . run pre-ems2.p ( input c-condicao01 ) c-banco c-tabela c-campo01 c-campo02 /* c-banco c-tabela c-campo01 c-campo02 c-condicao01 */ Obrigado.
mas tem um detalhe meu caro, ha não ser que tenham resolvido isso recentemente, esses seus programinhas, principalmente o pre-ems2.p não pode ser compilado. Agora se vc usar query dinamica, dai fica legal.
Boa tarde Srs. Não achei um exemplo aqui então fiz um modelinho para quem precisar realizar uma consulta dinâmica. Eu desenvolvi essa rotina para validar se a tabela existe no cadastro de um de-para que estou desenvolvendo, segue abaixo rotina... Código: DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE l-tab-ok AS LOGICAL INIT NO NO-UNDO. DEFINE VARIABLE qh AS HANDLE NO-UNDO. DEFINE VARIABLE qh-prepare AS CHARACTER NO-UNDO. DEFINE VARIABLE bh AS HANDLE NO-UNDO. REPEAT ix = 1 TO NUM-DBS: ASSIGN qh-prepare = "FOR EACH " + STRING(LDBNAME(ix)) + "._File WHERE " + STRING(LDBNAME(ix)) + "._File._File-Name = " + "'item'" + " NO-LOCK". CREATE BUFFER bh FOR TABLE STRING(LDBNAME(ix)) + "._File". CREATE QUERY qh. qh:SET-BUFFERS(bh). qh:QUERY-PREPARE(qh-prepare). qh:QUERY-OPEN(). qh:GET-FIRST(). IF qh:NUM-RESULTS > 0 THEN ASSIGN l-tab-ok = YES. qh:QUERY-CLOSE(). bh:BUFFER-RELEASE(). DELETE OBJECT bh. DELETE OBJECT qh. END. IF l-tab-ok = NO THEN DO : MESSAGE "TABELA INEXISTENTE!" VIEW-AS ALERT-BOX INFO BUTTONS OK. return 'ADM-ERROR':U. END. ELSE MESSAGE "OK" VIEW-AS ALERT-BOX INFO BUTTONS OK.