Executar regra guardada em campo de tabela

Discussão em 'Progress 4GL' iniciado por af.dums, Setembro 22, 2009.

  1. af.dums

    af.dums Membro Ativo

    Bom dia senhores...

    Estou pensando em fazer o seguinte desenvolvimento:

    Quero guardar em um campo de uma tabela trechos de lógica, de validação, que variam de acordo com o tipo do registro da tabela. Só estou com uma pulga atrás da orelha, tem como eu executar esta logica depois?

    Exemplo:
    tabela.tipo = 1
    tabela.logica = "item.ge-codigo <> 3"

    Como faço para criar um IF THEN onde a condição seja o que está no campo tabela.logica?

    Obrigado.

    Att,
    Anderson
  2. mcarril

    mcarril Membro Participativo

    Já vi desenvolverem e funcionar, a criação de tabelas com informações de: Nome de programa, campos, indices... e à partir destas informações fizeram um programa que FAZ PROGRAMA EM CARACTER.

    O único problema que tiveram era sobre o tipo de campo, mas resolveram acessando o _field._data-type (interno do banco de dados).

    If _field._data-type begins "dec" then put unformatted "decimal (campo.tabela)".

    Acredito que você consegue utilizando os comandos cativos do Progress. O Eduardo do Suporte postou alguma coisa à uns tempos atrás.
  3. pitsa

    pitsa Membro Participativo

    se vc for utilizar na consulta vc pode adicionar sua lógica dentro de uma query dinamica...

    /* Se for utilizado dentro de uma consulta monte uma query dinamica.... */

    def var qh-teste as handle.
    def var bh-teste as handle.

    CREATE BUFFER bh-teste FOR TABLE "emitente".

    CREATE QUERY qh-teste.
    qh-teste:SET-BUFFERS(bh-teste).
    qh-teste:QUERY-PREPARE("for each emitente no-lock"). /* clausula WHERE vai aqui */
    qh-teste:QUERY-OPEN().

    REPEAT:

    qh-teste:GET-NEXT().
    IF qh-teste:QUERY-OFF-END THEN LEAVE.

    disp bh-teste:BUFFER-FIELD("nome-abrev"):BUFFER-VALUE.

    END.
  4. af.dums

    af.dums Membro Ativo

    No caso criavam um programa dinamicamente usando as regras das tabelas, isso?

    Acho que vai ser a melhor alternativa...

    A idéia da query é legal, mas não me atende...

    Obrigado a todos.

Compartilhe esta Página