× Linguagem de Programação ADVPL

Perguntas Consulta Padrão Especifica, Retorno de Informação para a Tela

Mais
8 anos 11 meses atrás #28315 por matera
Boa Noite Pessoal.

Estou com um problema com o retorno da informação para a tela.

Ela pesquisa o codigo, armazena na variavel _cod, faço a busca pela SB1 e encontro, porém mesmo setando para retornar o valor, quando o oDLG fecha o campo do codigo do produto fica sem preencher. Não sei para onde correr mais..

Na Pesquisa padrão o retorno esta setado para ser SB1->SB1_COD.

A pesquisa padrão foi modificada para o campo SD3->SD3_COD (Movimentos Internos Modelo II).

Segue o programa abaixo:

#Include "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"
//
/*/{Protheus.doc} TECP008
Description

@param xParam Parameter Description
@return xRet Return Description
@author -
@since 26/05/2015
/*/
//
User Function TECP008()
Local oButton1
Local oButton2
Local oButton3
Local oFont1 := TFont():New("MS Sans Serif",,022,,.T.,,,,,.F.,.F.)
Local oSay1
Local oSay2

Static oDlg
Static _COD := Space(Len(SB1->B1_COD))

Private oComboBo1
Private oComboBo2
nComboBo1 := SPACE(10)
aComboBo1 :={}
nComboBo2 := SPACE(10)
aComboBo2 :={}



//Pesquisa Grupo
cquery := " Select BM_DESC FROM " +RetSQLName("SBM")"
cquery += " WHERE bm_grupo>='0301' and bm_grupo<='0399' AND D_E_L_E_T_ = ' ' "
cquery += " order by bm_desc"
cQuery := ChangeQuery(cQuery)
TCQUERY cQuery NEW ALIAS "ARY1"
//Pesquisa Espessura
cquery := " Select Z1_ESPESS FROM " +RetSQLName("SZ1")"
cquery += " WHERE D_E_L_E_T_ = ' ' "
cquery += " order by Z1_ESPESS"
cQuery := ChangeQuery(cQuery)
TCQUERY cQuery NEW ALIAS "TMP"

DEFINE MSDIALOG oDlg TITLE "Pesquisa de Materiais" FROM 000, 000 TO 520, 1000 COLORS 0, 16777215 PIXEL

@ 007, 011 SAY oSay1 PROMPT "Grupo" SIZE 031, 013 OF oDlg FONT oFont1 COLORS 0, 16777215 PIXEL
@ 007, 182 SAY oSay2 PROMPT "Espessura" SIZE 053, 013 OF oDlg FONT oFont1 COLORS 0, 16777215 PIXEL
@ 008, 044 MSCOMBOBOX oComboBo1 VAR nComboBo1 ITEMS aComboBo1 SIZE 120, 010 OF oDlg COLORS 0, 16777215 PIXEL
@ 008, 236 MSCOMBOBOX oComboBo2 VAR nComboBo2 ITEMS aComboBo2 SIZE 082, 010 OF oDlg COLORS 0, 16777215 PIXEL
TECP008_A()
TECP008_B()
fMSNewGe1()
@ 006, 440 BUTTON oButton3 PROMPT "Pesquisar" SIZE 038, 012 OF oDlg ACTION (TECP008_C()) PIXEL
@ 237, 440 BUTTON oButton1 PROMPT "Selecionar" SIZE 038, 012 OF oDlg ACTION (TECP008_D(),oDlg:End()) PIXEL
@ 237, 390 BUTTON oButton2 PROMPT "Cancelar" SIZE 038, 012 OF oDlg ACTION (oDlg:End()) PIXEL


ACTIVATE MSDIALOG oDlg CENTERED

Return

Static Function TECP008_A()//PREENCHE A ARRAY DA ESPESSURA

dbSelectArea("TMP")
dbgotop()
DO WHILE !EOF()
AADD(aCombobo2 , TMP->Z1_ESPESS )
nCombobo2 := IIF(EMPTY(nCombobo2) , (TMP->Z1_ESPESS) , nCombobo2 )
ObjectMethod(oComboBo2,"SetItems(aComboBo2)")
dbSkip()
ENDDO
TMP->(dbclosearea())

Return

Static Function TECP008_B()//PREENCHE A ARRAY DO GRUPO

dbSelectArea("ARY1")
dbgotop()
DO WHILE !EOF()
AADD(aCombobo1 , ARY1->BM_DESC )
nCombobo1 := IIF(EMPTY(nCombobo1) , (ARY1->BM_DESC) , nCombobo1 )
ObjectMethod(oComboBo1,"SetItems(aComboBo1)")
dbSkip()
ENDDO
ARY1->(dbclosearea())

Return

Static Function TECP008_C()//SELECT FEITO COM OS DADOS PROVENIENTES DOS ARRAYS
//Limpa o aCols para caso de selecao de outros pedidos.
aColsEx := {}
oMSNewGe1:Refresh()

//Seleciona os Codigos do Produtos da pesquisa.
_codespess := POSICIONE("SZ1",3,xFilial("SZ1")+nComboBo2,"Z1_CODIGO")
_codgrupo := POSICIONE("SBM",2,xFilial("SBM")+nComboBo1,"BM_GRUPO")

cquery := " Select a.b1_cod,a.b1_desc,d.b8_lotectl,d.b8_saldo2,a.b1_segum,d.b8_saldo,a.B1_UM,d.b8_local FROM " +RetSQLName("SB1")+ " a inner join " +RetSQLName("SBM")
cquery += " b on a.b1_grupo=b.bm_grupo inner join " +RetSQLName("SZ1")+ " c on a.b1_uesp=c.z1_codigo inner join " +RetSQLName("SB8")+ " d on d.b8_produto=a.b1_cod "
cquery += " WHERE b.bm_grupo= "+_codgrupo+" and c.z1_codigo= "+_codespess+ " and a.D_E_L_E_T_=' ' and d.D_E_L_E_T_=' ' and (d.b8_saldo2>0 or d.b8_saldo>0) order by a.b1_cod "
cQuery := ChangeQuery(cQuery)
TCQUERY cQuery NEW ALIAS "PROD"

DbSelectArea("PROD")
While !EOF()
Aadd(aColsEx, {B1_COD,B1_DESC,B8_LOTECTL,B8_SALDO2,B1_SEGUM,B8_SALDO,B1_UM,B8_LOCAL,.F.} )
dbskip()
Enddo

oMSNewGe1:aCols := aColsEx
oMSNewGe1:Refresh()
PROD->(dbclosearea())

Return

Static Function TECP008_D()

_COD := oMSNewGe1:acols[oMSNewGe1:nAt][1] // AQUI ELE ENCONTRA A INFORMACAO, ARMAZENA E FICA OK.

SB1->(dbSetOrder(1), dbSeek(xFilial("SB1")+_cod)) //PROCURAR O CAMPO E POSICIONAR.

Return(.T.)

//
Static Function fMSNewGe1()
//
Local nX
Local aHeaderEx := {}
Local aColsEx := {}
Local aFieldFill := {}
Local aFields := {"B1_COD","B1_DESC","B8_LOTECTL","B8_SALDO2","B1_SEGUM","B8_SALDO","B1_UM","B8_LOCAL"}
Local aAlterFields := {}
Static oMSNewGe1

// Define field properties
DbSelectArea("SX3")
SX3->(DbSetOrder(2))
For nX := 1 to Len(aFields)
If SX3->(DbSeek(aFields[nX]))
If Alltrim(SX3->X3_CAMPO) = "B1_DESC"
Aadd(aHeaderEx, {AllTrim(X3Titulo()),SX3->X3_CAMPO,SX3->X3_PICTURE,60,SX3->X3_DECIMAL,SX3->X3_VALID,;
SX3->X3_USADO,SX3->X3_TIPO,SX3->X3_F3,SX3->X3_CONTEXT,SX3->X3_CBOX,SX3->X3_RELACAO})
ELSE
Aadd(aHeaderEx, {AllTrim(X3Titulo()),SX3->X3_CAMPO,SX3->X3_PICTURE,SX3->X3_TAMANHO,SX3->X3_DECIMAL,SX3->X3_VALID,;
SX3->X3_USADO,SX3->X3_TIPO,SX3->X3_F3,SX3->X3_CONTEXT,SX3->X3_CBOX,SX3->X3_RELACAO})
Endif
Endif
Next nX

oMSNewGe1 := MsNewGetDados():New( 022, 010, 225, 485, GD_UPDATE, "AllwaysTrue", "AllwaysTrue", "+Field1+Field2", aAlterFields,, 999, "AllwaysTrue", "", "AllwaysTrue", oDlg, aHeaderEx, aColsEx)

Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 11 meses atrás #28318 por haikal
Eu não tenho certeza, mas vamos lá.

Static _COD := Space(Len(SB1->B1_COD))

por se tratar de variável statica ela não mudará seu valor após a primeira atribuição. Não tenho certeza mas verifica isso.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.084 segundos
Joomla templates by a4joomla