Campo BY do OPEN QUERY

Discussão em 'Progress 4GL' iniciado por eduardory, Outubro 20, 2010.

  1. eduardory

    eduardory Sem Pontuação

    Olá Pessoal!

    Estou tentando passar por parâmetro o valor que deve ser do campo by do OPEN QUERY, mas isso não está dando certo. Alguém sabe se há algum atributo ou alguma outra coisa que devo fazer?
    Segue o meu código para ilustrar.

    Onde chamo a procedure com o OPEN QUERY e passo o valor que deverá ser o do campo BY.
    Código:
    RUN p_openquerybropdia ("te-estoque.te-grpcod").
    Procedure p_openquerybropdia:
    Código:
    DEFINE INPUT PARAMETER ip-campoby AS CHAR NO-UNDO.
    
        IF m-abc = TRUE THEN DO:
            ASSIGN te-estoque.te-resqtbloq:READ-ONLY IN BROWSE br-estoque-2 = TRUE.
            OPEN QUERY br-estoque-2 FOR EACH te-estoque NO-LOCK
                    WHERE te-estoque.te-papelndx  = (IF LOOKUP(STRING(te-estoque.te-papelndx),m-papel_sele) > 0 THEN 
                                                     te-estoque.te-papelndx ELSE "....") 
                      AND te-estoque.te-codcateg  = (IF LOOKUP(STRING(te-estoque.te-codcateg),m-categor_sele) > 0 THEN
                                                     te-estoque.te-codcateg ELSE "....")
                      AND te-estoque.te-respti    = (IF LOOKUP(te-estoque.te-respti,m-carteira_sele) > 0 THEN
                                                   te-estoque.te-respti ELSE "....")  
                      AND te-estoque.te-resvecto  = (IF LOOKUP(STRING(te-estoque.te-resvecto),m-vecto_sele) > 0 THEN 
                                                     te-estoque.te-resvecto ELSE 01/01/70)
                    USE-INDEX te-ndx1 BY ip-campoby .
            
         END.
    
    Obrigado!
  2. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Re: Camo BY do OPEN QUERY

    Tente substituir a linha
    USE-INDEX te-ndx1 BY ip-campoby .
    por
    USE-INDEX te-ndx1 BY VALUE(ip-campoby) .
  3. eduardory

    eduardory Sem Pontuação

    Re: Camo BY do OPEN QUERY

    Já havia tentado isso e não de certo.
    Dá esse erro:

    ** Nao entendi apos: "USE-IDEX te-ndx1 BY". (247)
    ** Nao consegui identificar campo ou expressao apos BY. (411)
  4. kirchner

    kirchner Membro Participativo Moderador

    eduardory,

    Até onde eu conheço, vou você cria várias queries, uma para cada tipo de ordenação, ou você faz com query dinâmica.
    Query dinâmica é um saco quando tem segurança no banco de dados, mas funciona.
  5. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Exatamente, eu dei uma olhada nos programas que tenho aqui, e monto varias queries, uma para cada opção
  6. eduardory

    eduardory Sem Pontuação

    Estava tentando evitar a repetiçao de código, mas pelo visto nao tem jeito a nao ser por query dinamica...

    Blz pessoal, valeu pela ajuda!

Compartilhe esta Página