FillGetDados usando query

Boa noite!

Prezados, gostaria de saber se algum de vocês já utilizou a função FillGetDados usando query.

Estou montando uma grid onde estarei usando mais de duas tabelas para exibição dos resultados, então acredito que usando FillGetDados com query ficaria mais fácil o preenchimento dos dados, pois o grid é de apenas visualização.

Sim, se você olhar no TDN, verá que o filtro que eles usam no padrão é utilizando query:

http://tdn.totvs.com/display/public/PROT/FillGetDados

Vê esse pedaço do código:


**lQuery** := .T. 

 cQuery := "SELECT * "         
 cQuery += "FROM " + RetSQLName("SC6") + " SC6"         
 cQuery += "WHERE SC6.C6_FILIAL = '" + FwXFilial("SC6") + "' AND "    
 cQuery += "SC6.C6_NUM = '" + SC5->C5_NUM + "' AND "         
 cQuery += "SC6.D_E_L_E_T_ <> '*' "         
 cQuery += "ORDER BY " + SQLOrder(SC6->(IndexKey()))    

 DbSelectArea("SC6")         
 DbCloseArea()

 cSeek := FwXFilial("SC6") + SC5->C5_NUM  bWhile := {|| C6_FILIAL + C6_NUM }

 FillGetDados(nOPc, "SC6", 1, cSeek, bWhile, {{bCond, bAction1, bAction2}}, aNoFields, /*aYesFields*/, /*lOnlyYes*/, **cQuery**, /*bMontCols*/, .F., /*aHeaderAux*/, /*aColsAux*/, /*bAfterCols*/, /*bBeforeCols*/, /*bAfterHeader*/, "SC6")

Boa tarde, Guilherme! Entendi, mas se caso eu precisar usar campos de outra tabela para montar a query (utilizando Inner/Left Join)? É possível utilizar o FillGetDados? Devo criar uma tabela temporária? Ele suporta tabelas temporárias?

Eu recomendaria criar uma tabela temporária com FwTemporaryTable() utilizando a query com JOIN, assim você pode informar o apelido (alias) da tabela no lugar do SC6 do exemplo.