×
Linguagem de Programação ADVPL
Perguntas Consulta Padrao
- barater
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 126
- Obrigados Recebidos: 0
12 anos 2 meses atrás #4667
por barater
Consulta Padrao foi criado por barater
Boa tarde
Estou quebrando a cabeça o dia todo e nao consegui chegar a lugar algum. Estou aqui a pedir socorro.
Preciso criar uma consulta padrao com filtro da seguinte forma:
- Tabela: QDH
- Indice: QDH_DOCTO + QDH_RV
- Colunas retorno : QDH_DOCTO, QDH_RV
- Filtro: #U_TQDOM02()
- Retorno: QDH_DOCTO + QDH_RV
Bem, no meu fonte estou usando a query abaixo, onde aglutino por documento e DEVERÁ mostra somente a ultima revisao:
cQuery += "SELECT QDH_DOCTO, MAX(QDH_RV) AS QDH_DOCTO"
cQuery += "FROM "+RetSqlName("QDH")+" (NOLOCK) "
cQuery += "WHERE QDH_FILIAL = "+xFilial("QDH")+" "
cQuery += "AND D_E_L_E_T_ <> '*' "
cQuery += "GROUP BY QDH_DOCTO "
cQuery += "ORDER BY QDH_DOCTO "
Gostaria de uma ajuda de que forma consigo mostrar na minha consulta o resultado desta query (colunas QDH_DOCTO e QDH_DOCTO)?
Obrigado
Cezar
Estou quebrando a cabeça o dia todo e nao consegui chegar a lugar algum. Estou aqui a pedir socorro.
Preciso criar uma consulta padrao com filtro da seguinte forma:
- Tabela: QDH
- Indice: QDH_DOCTO + QDH_RV
- Colunas retorno : QDH_DOCTO, QDH_RV
- Filtro: #U_TQDOM02()
- Retorno: QDH_DOCTO + QDH_RV
Bem, no meu fonte estou usando a query abaixo, onde aglutino por documento e DEVERÁ mostra somente a ultima revisao:
cQuery += "SELECT QDH_DOCTO, MAX(QDH_RV) AS QDH_DOCTO"
cQuery += "FROM "+RetSqlName("QDH")+" (NOLOCK) "
cQuery += "WHERE QDH_FILIAL = "+xFilial("QDH")+" "
cQuery += "AND D_E_L_E_T_ <> '*' "
cQuery += "GROUP BY QDH_DOCTO "
cQuery += "ORDER BY QDH_DOCTO "
Gostaria de uma ajuda de que forma consigo mostrar na minha consulta o resultado desta query (colunas QDH_DOCTO e QDH_DOCTO)?
Obrigado
Cezar
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
12 anos 2 meses atrás - 10 anos 6 meses atrás #4669
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Re: Consulta Padrao
Cezar boa tarde, neste caso vc vai precisar montar uma consulta padrão especifica, ou seja, ao invés de executar o padrão protheus ela irá executar uma função sua. Segue um exemplo de como vc deverá fazer.
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ BuscaFu Autor ³ Luiz Alberto ³ Data ³ 26/01/10 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Objetivo ³ Tela de Pesquisa Especifica Cadastro de Funcionarios ±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ ³±±
±± ³±±
±± ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
/*/
User Function BUSCAFU()
Local aGetArea := GetArea()
Local oBrowCons
Local aMat:={}
Local lOpc:=.F.
Local aInd:={}
SRA->(DbClearFilter())
Aadd(aMat,{"RA_MAT" , "Matricula" , "@!" , "C", 06, 0})
Aadd(aMat,{"RA_NOME" , "Nome Funcionario" , "@!" , "C", 40, 0})
cCondicao:= "SRA->RA_DEMISSA = CtoD('') "
bFiltraBrw := {|| FilBrowse("SRA",@aInd,@cCondicao) }
Eval(bFiltraBrw)
@ 050, 004 TO 500, 750 DIALOG oDlgPrd TITLE "Consulta Funcionarios"
@ 006, 005 TO 190, 370 BROWSE "SRA" FIELDS aMat OBJECT oBrowCons
@ 200, 120 BUTTON "_Pesq Codigo" SIZE 60, 13 ACTION PesqCodSRA()
@ 200, 190 BUTTON "_Pesq Nome" SIZE 60, 13 ACTION PesqNomSRA()
@ 200, 260 BUTTON "_Ok" SIZE 40, 13 ACTION (Close(oDlgPrd), lOpc:=.T.)
@ 200, 310 BUTTON "_Sair" SIZE 40, 13 ACTION Close(oDlgPrd)
oDlgPrd:lCentered := .t.
oDlgPrd:Activate()
//alert('Produto escolhido: '+SB1->B1_DESC)
SRA->(DbClearFilter())
Return lOpc
Static Function PesqCodSRA()
Local cCondicao:=''
Local cGet:=Space(06)
Local aInd:={}
DEFINE MSDIALOG oDlgPesq FROM 96,42 TO 250,305 TITLE "Pesquisa por Matricula:" PIXEL OF oMainWnd
@ 8,11 TO 71,122
@ 13,15 SAY "Expressão: "
@ 13,50 GET cGet picture "@!" SIZE 60,30
@ 40,55 BMPBUTTON TYPE 01 ACTION oDlgPesq:End()
Activate MsDialog oDlgPesq Centered
If !Empty(cGet)
SRA->(dbSetOrder(1))
SRA->(dbSeek(xFilial("SRA")+cGet))
Endif
return
Static Function PesqNOMSRA()
Local cGet:=Space(40)
DEFINE MSDIALOG oDlgPesq FROM 96,42 TO 250,305 TITLE "Pesquisa por Nome:" PIXEL OF oMainWnd
@ 8,11 TO 71,122
@ 13,15 SAY "Expressão: "
@ 13,50 GET cGet picture "@!" SIZE 60,30
@ 40,55 BMPBUTTON TYPE 01 ACTION oDlgPesq:End()
Activate MsDialog oDlgPesq Centered
If !Empty(cGet)
SRA->(DBSetOrder(3))
SRA->(DBseek(xFilial("SRA")+Rtrim(cGet)))
Endif
return
Na tabela SXB
Vc vai criar sua consulta como tipo RE
Conforme Exemplo da tela a seguir:
No meu exemplo vc vai colocar a tabela SRA, e no lugar da função F3AgCom() vc vai colocar U_BUSCAFU() e no lugar do retorno SRA->RA_NUM por exemplo.
Faz um teste ai.
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ BuscaFu Autor ³ Luiz Alberto ³ Data ³ 26/01/10 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Objetivo ³ Tela de Pesquisa Especifica Cadastro de Funcionarios ±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso ³ ³±±
±± ³±±
±± ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
/*/
User Function BUSCAFU()
Local aGetArea := GetArea()
Local oBrowCons
Local aMat:={}
Local lOpc:=.F.
Local aInd:={}
SRA->(DbClearFilter())
Aadd(aMat,{"RA_MAT" , "Matricula" , "@!" , "C", 06, 0})
Aadd(aMat,{"RA_NOME" , "Nome Funcionario" , "@!" , "C", 40, 0})
cCondicao:= "SRA->RA_DEMISSA = CtoD('') "
bFiltraBrw := {|| FilBrowse("SRA",@aInd,@cCondicao) }
Eval(bFiltraBrw)
@ 050, 004 TO 500, 750 DIALOG oDlgPrd TITLE "Consulta Funcionarios"
@ 006, 005 TO 190, 370 BROWSE "SRA" FIELDS aMat OBJECT oBrowCons
@ 200, 120 BUTTON "_Pesq Codigo" SIZE 60, 13 ACTION PesqCodSRA()
@ 200, 190 BUTTON "_Pesq Nome" SIZE 60, 13 ACTION PesqNomSRA()
@ 200, 260 BUTTON "_Ok" SIZE 40, 13 ACTION (Close(oDlgPrd), lOpc:=.T.)
@ 200, 310 BUTTON "_Sair" SIZE 40, 13 ACTION Close(oDlgPrd)
oDlgPrd:lCentered := .t.
oDlgPrd:Activate()
//alert('Produto escolhido: '+SB1->B1_DESC)
SRA->(DbClearFilter())
Return lOpc
Static Function PesqCodSRA()
Local cCondicao:=''
Local cGet:=Space(06)
Local aInd:={}
DEFINE MSDIALOG oDlgPesq FROM 96,42 TO 250,305 TITLE "Pesquisa por Matricula:" PIXEL OF oMainWnd
@ 8,11 TO 71,122
@ 13,15 SAY "Expressão: "
@ 13,50 GET cGet picture "@!" SIZE 60,30
@ 40,55 BMPBUTTON TYPE 01 ACTION oDlgPesq:End()
Activate MsDialog oDlgPesq Centered
If !Empty(cGet)
SRA->(dbSetOrder(1))
SRA->(dbSeek(xFilial("SRA")+cGet))
Endif
return
Static Function PesqNOMSRA()
Local cGet:=Space(40)
DEFINE MSDIALOG oDlgPesq FROM 96,42 TO 250,305 TITLE "Pesquisa por Nome:" PIXEL OF oMainWnd
@ 8,11 TO 71,122
@ 13,15 SAY "Expressão: "
@ 13,50 GET cGet picture "@!" SIZE 60,30
@ 40,55 BMPBUTTON TYPE 01 ACTION oDlgPesq:End()
Activate MsDialog oDlgPesq Centered
If !Empty(cGet)
SRA->(DBSetOrder(3))
SRA->(DBseek(xFilial("SRA")+Rtrim(cGet)))
Endif
return
Na tabela SXB
Vc vai criar sua consulta como tipo RE
Conforme Exemplo da tela a seguir:
No meu exemplo vc vai colocar a tabela SRA, e no lugar da função F3AgCom() vc vai colocar U_BUSCAFU() e no lugar do retorno SRA->RA_NUM por exemplo.
Faz um teste ai.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Ultima edição: 10 anos 6 meses atrás por lalberto.
Por favor Acessar ou Registrar para participar da conversa.
- Rei da TI
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 81
- Obrigados Recebidos: 0
10 anos 6 meses atrás #22359
por Rei da TI
Respondido por Rei da TI no tópico Re: Consulta Padrao
Bom dia
Luiz,
Eu peguei sua consulta padrão abaixo como exemplo, funcionou sim, só tive um problema na consulta pelo nome.
1-Se consulto pela lista marco o funcionário e clico em ok, blz passa.
2-Se consulto pelo código da matricula e clico em ok, blz, passa.
3-Se consulto pelo nome do funcionário e clico em ok, aparece um erro, registro não encontrado.
A minha duvida é será que quando retorna o valor não fica na memoria o nome do Funcionário ao invés da matricula?
Teria como me ajudar?
Luiz,
Eu peguei sua consulta padrão abaixo como exemplo, funcionou sim, só tive um problema na consulta pelo nome.
1-Se consulto pela lista marco o funcionário e clico em ok, blz passa.
2-Se consulto pelo código da matricula e clico em ok, blz, passa.
3-Se consulto pelo nome do funcionário e clico em ok, aparece um erro, registro não encontrado.
A minha duvida é será que quando retorna o valor não fica na memoria o nome do Funcionário ao invés da matricula?
Teria como me ajudar?
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 6 meses atrás #22372
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Re: Consulta Padrao
Reinaldo que erro esta apresentando ?
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- Rei da TI
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 81
- Obrigados Recebidos: 0
Tempo para a criação da página:0.120 segundos