Perguntas Gravação com Msselect

Mais
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

Por favor Acessar ou Registrar para participar da conversa.

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