PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → Como obter valor de campos de uma query de forma  Parametrizada (através de parâmetros)
Como obter valor de campos de uma query de forma Parametrizada (através de parâmetros)
Débuté par Bastiaan, 12 juil. 2017 01:56 - 4 réponses
Membre enregistré
37 messages
Popularité : +5 (5 votes)
Posté le 12 juillet 2017 - 01:56
Oi pessoal

Estou precisando saber como posso conseguir extrair o conteúdo dos campos de uma query de forma parametrizada.

Ou seja eu estou criando uma query em tempo de execução (gerando a mesma via parametros - isto está funcionando OK, como pode ser visto no código abaixo.

Só que uma vez executada a query ao invés deixar fixo no código o "Nome_do_Campo" (cuja informação quero recuperar), preciso poder passar este nome do campo como um parametro.

Se eu fixar no código o "Nome_do_Campo" como na linha abaixo funciona perfeitamente
Info(Nome_da_query.codigo_advocacia)

Só que eu ao invés de fixar no código o nome_da_query.Nome_do_campo eu preciso passar esta informação como parametro,

para mim eu precisaria poder executar algo como info (Parametro_nom_campo_a_exibir)


Alguém saberia como é possivel fazer isto ? - Grato


Estou usando o código abaixo que funciona OK.


Nome_da_query is Data Source
sQuery_a_executar is string
// criação de uma query através de parametros
sQuery_a_executar="Select * from "+COMBO_Cadastros..DisplayedValue//+" order by "+LIST_nome_de_campos_na_tabela[1]

HExecuteSQLQuery(Nome_da_query,hQueryDefault,sQuery_a_executar)

HReadFirst(Nome_da_query,LIST_nome_de_campos_na_tabela[1])

WHILE HOut(Nome_da_query) = False
// Process the record
Info(Nome_da_query.codigo_advocacia) // Como parametrizar código do campo a ser recuperado da query ?
Info(Nome_da_query.advocacia) // Como parametrizar código do campo a ser recuperado da query ?
HReadNext(Nome_da_query,LIST_nome_de_campos_na_tabela[1],hLockNo)
END
Membre enregistré
206 messages
Popularité : +25 (25 votes)
Posté le 12 juillet 2017 - 13:46
código carrega combo com lista de tabelas da base de dados (fim da inicialização da janela)
FileList is string
FileList = HListFile(hLstAll + hLstSorted)
ListDeleteAll(COMBO_Lista_Tabelas)

// Adds the list of files into COMBO_COMBO1
ListAdd(COMBO_Lista_Tabelas, FileList)

ListDeleteAll(COMBO_Lista_Campos)

COMBO_Lista_Campos..State = Grayed


código carrega combobox com lista de campos da tabela selecionada (ao selecionar tabela na combobox anterior)
ListDeleteAll(COMBO_Lista_Campos)
COMBO_Lista_Campos..State = Active

dsListCITY is Data Source
sListItm is string
sRecContent is string
sQry is string = "SELECT * FROM " + COMBO_Lista_Tabelas..StoredValue

// Run the query
HExecuteSQLQuery(dsListCITY, hQueryDefault, sQry)
// List the items of the query.
sListItm = HListItem(dsListCITY)

// Adds the list of files into COMBO_COMBO1
ListAdd(COMBO_Lista_Campos, sListItm)



Obs.: as combobox estão marcadas com a opção [Return de the value specified in glink] na tab Details

--
André Martini
IS2 Automotive http://www.is2.inf.br/is2automotive/index.html
IS2 Construtive http://www.is2.inf.br/is2construtive/index.html
IS2 Store http://www.is2.inf.br/is2store/index.html
IS2 Gerent http://www.is2.inf.br/is2gerent/index.html
Membre enregistré
37 messages
Popularité : +5 (5 votes)
Posté le 12 juillet 2017 - 14:35
André muito obrigado

Acho que infelizmente não me fiz entender.

Eu já sei como obter os campos de uma tabela.

O que eu preciso é que ao processar uma query eu consiga buscar alguns campos da query (os campos a serem recuperados, precisam ser passados de forma parametrizada).
Como a query a ser executada vai ser diferente a cada processamento, os campos dos registros a serem recuperados, variam conforme a query que esta sendo processada. Nesta hora eu tenho que conseguir buscar (de forma parametrizada) os campos específicos da query

WHILE HOut(Nome_da_query) = False

// Process the record
Info(Nome_da_query.codigo_advocacia) // Como parametrizar código do campo a ser recuperado da query ?
Info(Nome_da_query.advocacia) // Como parametrizar código do campo a ser recuperado da query ?
HReadNext(Nome_da_query,LIST_nome_de_campos_na_tabela[1],hLockNo)

END
Membre enregistré
206 messages
Popularité : +25 (25 votes)
Posté le 12 juillet 2017 - 20:50
acho que é isso


links que usei
https://www.vivaolinux.com.br/dica/Variaveis-variaveis-em-PHP
http://forum.pcsoft.fr/fr-FR/pcsoft.us.windev/15426-windev-equivalent-function-for-common-used-eval-function/read.awp
http://doc.windev.com/en-US/…

clique do botão
Info(ExecutaQuery(COMBO_Lista_Tabelas..StoredValue,COMBO_Lista_Campos..StoredValue))


Procedure ExecutaQuery(sNomeTabela is string, sNomeCampo is string)
sDSCampo is string ="dsListCITY.sNomeCampo"
sDSCampo = Replace(sDSCampo,"sNomeCampo",sNomeCampo)
dsListCITY is Data Source
sQry is string = "SELECT top 1 " + sNomeCampo + " FROM " + sNomeTabela

// Run the query
IF HExecuteSQLQuery(dsListCITY, hQueryDefault, sQry) THEN
RESULT EvaluateExpression(sDSCampo)
ELSE
RESULT "x"
END


--
André Martini
IS2 Automotive http://www.is2.inf.br/is2automotive/index.html
IS2 Construtive http://www.is2.inf.br/is2construtive/index.html
IS2 Store http://www.is2.inf.br/is2store/index.html
IS2 Gerent http://www.is2.inf.br/is2gerent/index.html
Posté le 13 juillet 2017 - 14:26
Andre - muito obrigado agora sim valeu