- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Funções AdvPL
- Gravação com Msselect
Perguntas Gravação com Msselect
- rev
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 2
- Obrigados Recebidos: 0
9 anos 1 mês atrás #29390
por rev
Gravação com Msselect foi criado por rev
Bom dia
Alguém poderia me ajudar com esse fonte:
#include "Protheus.ch"
#include "Rwmake.ch"
#include "Topconn.ch"
//MarkBrow
User Function Solic02()
Local _lRetorno := .F. //Validacao da dialog criada oDlg
Local _nOpca := 0 //Opcao da confirmacao
Local bOk := {|| _nOpca:=1,_lRetorno:=.T.,oDlg:End() } //botao de ok
Local bCancel := {|| _nOpca:=0,oDlg:End() } //botao de cancelamento
Local _cArqEmp := "" //Arquivo temporario com as empresas a serem escolhidas
Local _aStruTrb := {} //estrutura do temporario
Local _aBrowse := {} //array do browse para demonstracao das empresas
Local _aEmpMigr := {} //array de retorno com as empresas escolhidas
Private lInverte := .F. //Variaveis para o MsSelect
Private cMarca := GetMark() //Variaveis para o MsSelect
Private oBrwTrb //objeto do msselect
Private oDlg
Static cCod1 := Space(6)
Static _cCod2 := Space(25)
Static oGet1
Static oGet2
Static oSay1
Static oSay2
Static oSay3
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//?Define campos do TRB ?
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aadd(_aStruTrb,{"COD" ,"C",06,0})
aadd(_aStruTrb,{"CC" ,"C",09,0})
aadd(_aStruTrb,{"USE" ,"C",25,0})
aadd(_aStruTrb,{"OK" ,"C",02,0})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//?Define campos do MsSelect ?
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aadd(_aBrowse,{"OK" ,,"" })
aadd(_aBrowse,{"COD",,"Codigo Solicitação" })
aadd(_aBrowse,{"CC",,"Centro de Custo" })
aadd(_aBrowse,{"USE" ,,"Solicitante" })
If Select("TRB") > 0
TRB->(DbCloseArea())
Endif
_cArqEmp := CriaTrab(_aStruTrb)
dbUseArea(.T.,__LocalDriver,_cArqEmp,"TRB")
//Aqui voc?monta sua query que serve para gravar os dados no arquivo temporario...
cQuery := "SELECT C1_OK, C1_NUM, C1_CC, C1_SOLICIT FROM SC1990 "
cQuery += "WHERE C1_QUJE = 0 AND C1_CODCOMP = '' AND C1_COTACAO = '' AND D_E_L_E_T_ <> '*' "
cQuery += "ORDER BY C1_NUM "
TCQuery cQuery new Alias (cAlias:=GetNextAlias())
While (cAlias)->(!Eof())
RecLock("TRB",.T.)
TRB->OK := (cAlias)->C1_OK //A1_XOK
TRB->COD := (cAlias)->C1_NUM
TRB->CC := (cAlias)->C1_CC
TRB->USE := (cAlias)->C1_SOLICIT
MsUnlock()
(cAlias)->(DbSkip())
Enddo
(cAlias)->(DbCloseArea())
DEFINE MSDIALOG oDlg TITLE "Compradores para solicitacoes pendentes" FROM 000, 000 TO 400, 700 COLORS 0, 16777215 PIXEL
@ 008, 105 SAY oSay1 PROMPT "TESTANDO" SIZE 035, 007 OF oDlg COLORS 0, 16777215 PIXEL
@ 021, 079 SAY oSay2 PROMPT "Cod.Comp" SIZE 025, 007 OF oDlg COLORS 0, 16777215 PIXEL
@ 020, 106 MSGET oGet1 VAR cCod1 SIZE 025, 010 OF oDlg COLORS 0, 16777215 PICTURE "@!" F3 "SY1" PIXEL VALID PrDescr(cCod1)
@ 035, 106 MSGET oGet2 VAR _cCod2 SIZE 060, 010 OF oDlg COLORS 0, 16777215 READONLY PIXEL
@ 036, 077 SAY oSay3 PROMPT "Comprador" SIZE 027, 007 OF oDlg COLORS 0, 16777215 PIXEL
oBrwTrb := MsSelect():New("TRB","OK","",_aBrowse,@lInverte,@cMarca,{50,1,200,400})
oBrwTrb:oBrowse:lCanAllmark := .T.
Eval(oBrwTrb:oBrowse:bGoTop)
oBrwTrb:oBrowse:Refresh()
Activate MsDialog oDlg On Init (EnchoiceBar(oDlg,bOk,bCancel,,)) Centered VALID _lRetorno
TRB->(DbGotop())
If _nOpca == 1
Do While TRB->(!Eof())
If !Empty(TRB->OK) //se usuario marcou o registro
// aAdd(_aEmpMigr,{TRB->A1COD})
DbSelectArea("SC1")
SC1->(DbSetOrder(1))
RecLock("SC1",.F.)
SC1->C1_CODCOMP := cCod1
SC1->(MsUnlock())
DbCloseArea("SC1")
EndIf
TRB->(DbSkip())
If !Empty(TRB->OK)
MsgAlert("Gravado")
EndIf
EndDo
Endif
//fecha area de trabalho e arquivo tempor?io criados
If Select("TRB") > 0
DbSelectArea("TRB")
DbCloseArea()
Ferase(_cArqEmp+OrdBagExt())
Endif
Return()
Static Function PrDescr(cCod1)
Local cMot := cCod1
Local cDesc := Posicione("SY1",1,xFilial("SY1")+cMot,"Y1_NOME")
_cCod2 := cDesc
oGet2:Refresh()
Return
É uma tela para marcar e preencher solicitações de compra pendentes com o código do comprador, porém ao confirmar o código é salvo sempre na primeira solicitação, como faço para posicionar nas solicitações que foram marcadas e gravar nas posições delas?
agradeço a ajuda
Alguém poderia me ajudar com esse fonte:
#include "Protheus.ch"
#include "Rwmake.ch"
#include "Topconn.ch"
//MarkBrow
User Function Solic02()
Local _lRetorno := .F. //Validacao da dialog criada oDlg
Local _nOpca := 0 //Opcao da confirmacao
Local bOk := {|| _nOpca:=1,_lRetorno:=.T.,oDlg:End() } //botao de ok
Local bCancel := {|| _nOpca:=0,oDlg:End() } //botao de cancelamento
Local _cArqEmp := "" //Arquivo temporario com as empresas a serem escolhidas
Local _aStruTrb := {} //estrutura do temporario
Local _aBrowse := {} //array do browse para demonstracao das empresas
Local _aEmpMigr := {} //array de retorno com as empresas escolhidas
Private lInverte := .F. //Variaveis para o MsSelect
Private cMarca := GetMark() //Variaveis para o MsSelect
Private oBrwTrb //objeto do msselect
Private oDlg
Static cCod1 := Space(6)
Static _cCod2 := Space(25)
Static oGet1
Static oGet2
Static oSay1
Static oSay2
Static oSay3
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//?Define campos do TRB ?
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aadd(_aStruTrb,{"COD" ,"C",06,0})
aadd(_aStruTrb,{"CC" ,"C",09,0})
aadd(_aStruTrb,{"USE" ,"C",25,0})
aadd(_aStruTrb,{"OK" ,"C",02,0})
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//?Define campos do MsSelect ?
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
aadd(_aBrowse,{"OK" ,,"" })
aadd(_aBrowse,{"COD",,"Codigo Solicitação" })
aadd(_aBrowse,{"CC",,"Centro de Custo" })
aadd(_aBrowse,{"USE" ,,"Solicitante" })
If Select("TRB") > 0
TRB->(DbCloseArea())
Endif
_cArqEmp := CriaTrab(_aStruTrb)
dbUseArea(.T.,__LocalDriver,_cArqEmp,"TRB")
//Aqui voc?monta sua query que serve para gravar os dados no arquivo temporario...
cQuery := "SELECT C1_OK, C1_NUM, C1_CC, C1_SOLICIT FROM SC1990 "
cQuery += "WHERE C1_QUJE = 0 AND C1_CODCOMP = '' AND C1_COTACAO = '' AND D_E_L_E_T_ <> '*' "
cQuery += "ORDER BY C1_NUM "
TCQuery cQuery new Alias (cAlias:=GetNextAlias())
While (cAlias)->(!Eof())
RecLock("TRB",.T.)
TRB->OK := (cAlias)->C1_OK //A1_XOK
TRB->COD := (cAlias)->C1_NUM
TRB->CC := (cAlias)->C1_CC
TRB->USE := (cAlias)->C1_SOLICIT
MsUnlock()
(cAlias)->(DbSkip())
Enddo
(cAlias)->(DbCloseArea())
DEFINE MSDIALOG oDlg TITLE "Compradores para solicitacoes pendentes" FROM 000, 000 TO 400, 700 COLORS 0, 16777215 PIXEL
@ 008, 105 SAY oSay1 PROMPT "TESTANDO" SIZE 035, 007 OF oDlg COLORS 0, 16777215 PIXEL
@ 021, 079 SAY oSay2 PROMPT "Cod.Comp" SIZE 025, 007 OF oDlg COLORS 0, 16777215 PIXEL
@ 020, 106 MSGET oGet1 VAR cCod1 SIZE 025, 010 OF oDlg COLORS 0, 16777215 PICTURE "@!" F3 "SY1" PIXEL VALID PrDescr(cCod1)
@ 035, 106 MSGET oGet2 VAR _cCod2 SIZE 060, 010 OF oDlg COLORS 0, 16777215 READONLY PIXEL
@ 036, 077 SAY oSay3 PROMPT "Comprador" SIZE 027, 007 OF oDlg COLORS 0, 16777215 PIXEL
oBrwTrb := MsSelect():New("TRB","OK","",_aBrowse,@lInverte,@cMarca,{50,1,200,400})
oBrwTrb:oBrowse:lCanAllmark := .T.
Eval(oBrwTrb:oBrowse:bGoTop)
oBrwTrb:oBrowse:Refresh()
Activate MsDialog oDlg On Init (EnchoiceBar(oDlg,bOk,bCancel,,)) Centered VALID _lRetorno
TRB->(DbGotop())
If _nOpca == 1
Do While TRB->(!Eof())
If !Empty(TRB->OK) //se usuario marcou o registro
// aAdd(_aEmpMigr,{TRB->A1COD})
DbSelectArea("SC1")
SC1->(DbSetOrder(1))
RecLock("SC1",.F.)
SC1->C1_CODCOMP := cCod1
SC1->(MsUnlock())
DbCloseArea("SC1")
EndIf
TRB->(DbSkip())
If !Empty(TRB->OK)
MsgAlert("Gravado")
EndIf
EndDo
Endif
//fecha area de trabalho e arquivo tempor?io criados
If Select("TRB") > 0
DbSelectArea("TRB")
DbCloseArea()
Ferase(_cArqEmp+OrdBagExt())
Endif
Return()
Static Function PrDescr(cCod1)
Local cMot := cCod1
Local cDesc := Posicione("SY1",1,xFilial("SY1")+cMot,"Y1_NOME")
_cCod2 := cDesc
oGet2:Refresh()
Return
É uma tela para marcar e preencher solicitações de compra pendentes com o código do comprador, porém ao confirmar o código é salvo sempre na primeira solicitação, como faço para posicionar nas solicitações que foram marcadas e gravar nas posições delas?
agradeço a ajuda
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Funções AdvPL
- Gravação com Msselect
Tempo para a criação da página:0.072 segundos