Boa tarde pessoal, Gostaria de saber se existe no progress a possibilidade de se criar um Browse abrindo a query com um comando SQL, e não com um for each. ex: Progress: OPEN QUERY Browse-1 FOR EACH ITEM WHERE ITEM.ge-codigo = 5. SQL - Algo como: OPEM QUERY Browse-1 SELECT item.it-codigo FROM ITEM WHERE ge-codigo =5. Qual é o obejetivo disso? No comando progress, todos os campos da tabela item são carregados no buffer, já no comando SQL, apenas as informações desejadas seriam carregadas, nesse caso a informação apenas do item.it-codigo, tentando assim melhorar a performace qnd se tratar de um branco com milhares de registros. Desde já fico grato pela atenção de todos.
Capucho, Eu não conheço nada de OPEN QUERY, mas o FOR EACH tem uma cláusula FIELDS, para dizer quais campos serão lidos para o client: Código: FOR EACH item FIELDS (it-codigo) WHERE item.ge-codigo = 5: END. Isso não resolve?
Kirchner, Com a sua ajuda e mais uma fuçada aqui, consegui fazer o que eu queria, carregar a query de um browse apenas com os campos que serão dados os displays. Muito obrigado.
Conseguiu faze a partir de comando SQL? Pois preciso faze o seguinte comando em progress e não estou conseguindo: Código: SELECt nr-embarque from embarque where nr-embarque > 114700 AND (nr-embarque in (select nr-embarque from pre-fatur where cod-sit-pre = 1 AND nr-embarque > 114700) OR nr-embarque NOT IN (select nr-embarque from pre-fatur where nr-embarque > 114700))
Bom dia, não cara, com o SQL eu não consegui, acabei conseguindo resolver com o progress mesmo, fazendo a mesma coisa q o SQL faria... no Definitios do browse coloquei a query com a clausula fields, e então ao abrir a query, apenas os campos selecionados são buscados. Com o SQL não deu certo não... mas o seu TEM q ser Sql?
Na verdade não tem que ser, mais não consegui faze a lógica pro progress, pois não da pra utiliza find first, somente o first. Tentei faze dessa forma, mais não funciono. Código: FOR EACH embarque NO-LOCK WHERE embarque.cod-estabel = "101" AND embarque.nr-embarque >= 114700, FIRST pre-fatur OF embarque NO-LOCK WHERE pre-fatur.cod-sit-pre = 1 OR NOT AVAIL pre-fatur. DISP embarque.nr-embarque. END. Dessa forma funciona: Código: FOR EACH embarque NO-LOCK WHERE embarque.nr-embarque >= 114700 AND embarque.cod-estabel = "101". FIND FIRST pre-fatur NO-LOCK WHERE pre-fatur.nr-embarque = embarque.nr-embarque AND pre-fatur.cod-estabel = embarque.cod-estabel NO-ERROR. IF NOT AVAIL pre-fatur OR AVAIL pre-fatur AND cod-sit-pre = 1 THEN DISP embarque.nr-embarque. END.