Eu estou fazendo um filtro para uma SDO como segue: DO: ASSIGN C-operador Where-Field. IF Where-Field NE '' THEN DO: iOperador = LOOKUP(C-operador, C-operador:LIST-ITEM-PAIRS). cOperador = ENTRY(iOperador, C-operador:LIST-ITEM-PAIRS). Name-Field = ENTRY(LOOKUP(wWhere-By:SCREEN-VALUE, wWhere-By:LIST-ITEMS), fName) + " ". Name-Field = Name-Field + cOperador + " " + Where-Field. DYNAMIC-FUNCTION('addQueryWhere' IN hData, Name-Field, '',''). DYNAMIC-FUNCTION('openQuery' IN hData). END. END. Mas isso vem com um filtro SDO é a chave entre o pai eo filho, o filtro que estou fazendo é para SDO filho ... A minha pergunta é: como é que eu restuarar o filtro que vem com o filtro original. Eu fiz um procedimento que restaurou o filtro original, mas isto só funciona para mim e quando vou para o filtro BROWSE PAI e mudar para outro registo e vá para BROWSE teen me mostra que nada se mantém acima do filtro carregado. DO: Where-Field:SCREEN-VALUE = "". B-query:SENSITIVE = FALSE. DYNAMIC-FUNCTION('setQueryWhere' IN hData, ''). /*DYNAMIC-FUNCTION('closeQuery' IN hData).*/ DYNAMIC-FUNCTION('addQueryWhere' IN hData, cSourceFields, '',''). /* Cobrado com esta função novamente Filtro origne pai e filho, cSourceFields esta variável quando eu carregar o filtro */ DYNAMIC-FUNCTION('openQuery' IN hData). mNameItem = "". mOperador = "". END. Espero ter a sua ajuda. Carlos