× Linguagem de Programação ADVPL

Perguntas Markbrow

Mais
10 anos 8 meses atrás #16157 por mbrigagao
Respondido por mbrigagao no tópico Markbrow
Guilherme, bom dia.

Segue a mesma rotina, porém atualizada, onde estou usando uma query para montar uma tabela temporaria.
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa  ³VK904Slp  ³ Autor ³   Marcelo Brigagao    ³ Data ³ 11/11/10 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³Seleciona pedido para controle de projetos                  ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function VK904Slp()
Local cQryTRB   := ""
Local aCpos     := {}
Local aBkRotina := Aclone(aRotina)
Local cTitBrow  := OemToAnsi("Controle de Projeto")
Local _cArq     := "T_"+Criatrab(,.F.)

Private cAliasTRB := GetNextAlias()
Private cAliasTMP := GetNextAlias()
Private aRotina := {{"Processa","U_VK904CPR", 0,4}}

cQryTRB := "SELECT SC6.*,SC6.R_E_C_N_O_ AS C6RECNO FROM "
cQryTRB += RetSqlName("SC6") + " SC6 WHERE "
cQryTRB += "SC6.D_E_L_E_T_ = ' ' AND "

If _lEnvia
	cQryTRB += "SC6.C6_FILIAL='"+cSC6Filial+"' And SC6.C6_XDTENV = ' ' And ( SC6.C6_BLQ = ' ' Or SC6.C6_BLQ = 'N' )" 
Else
	cQryTRB += "SC6.C6_FILIAL='"+cSC6Filial+"' And SC6.C6_XDTENV <> ' ' And SC6.C6_XDTRET = ' ' And ( SC6.C6_BLQ = ' ' Or SC6.C6_BLQ = 'N' )" 
EndIf

cQryTRB += " And SC6.C6_NUM>='"+_cPedIni+"' And SC6.C6_NUM<='"+_cPedFim+"'"  
cQryTRB += " ORDER BY "+SqlOrder(SC6->(IndexKey()))
cQryTRB := ChangeQuery(cQryTRB) 

dbUseArea( .T.,"TOPCONN", TcGenQry( ,,cQryTRB ), cAliasTMP, .T., .F. )

aStruSC6  := dbStruct("SC6")
For nX := 1 To Len(aStruSC6)
	If ( aStruSC6[nX][2] <> "C" )
		TcSetField(cAliasTMP,aStruSC6[nX][1],aStruSC6[nX][2],aStruSC6[nX][3],aStruSC6[nX][4])
	EndIf
Next nX                                  
TcSetField(cAliasTMP,"C6_XDTENV","D",8,0)
TcSetField(cAliasTMP,"C6_XDTRET","D",8,0)
TcSetField(cAliasTMP,"C6_ENTREG","D",8,0)
TcSetField(cAliasTMP,"C6_DATFAT","D",8,0)

dbSelectArea(cAliasTMP)
copy to &_carq
dbUseArea( .T.,__LOCALDRIVER, _cArq,cAliasTRB, .T. , .F. )
dbSelectArea(cALiasTRB)
dbGoTop()

aCpos := {}
aAdd(aCpos,{"C6_XDTENV"		,,"Dt.Env.Projeto"	,PesqPict("SC6","C6_XDTENV")})
aAdd(aCpos,{"C6_XDTRET"		,,"Dt.Ret.Projeto"	,PesqPict("SC6","C6_XDTRET")})
aAdd(aCpos,{"C6_XPROG"		,,"Prog.Produção"	,PesqPict("SC6","C6_XPROG")})
aAdd(aCpos,{"C6_NUM"		,,"Nr.Pedido"		,PesqPict("SC6","C6_NUM")})
aAdd(aCpos,{"C6_ITEM"		,,"It.Pedido"		,PesqPict("SC6","C6_ITEM")})
aAdd(aCpos,{"C6_PRODUTO"	,,"Produto"			,PesqPict("SC6","C6_PRODUTO")})
aAdd(aCpos,{"C6_DESCRI"		,,"Descrição"		,PesqPict("SC6","C6_DESCRI")})
aAdd(aCpos,{"C6_QTDVEN"		,,"Qtd.Vendida"		,PesqPict("SC6","C6_QTDVEN")})
aAdd(aCpos,{"C6_OPC"		,,"Opcionais"		,PesqPict("SC6","C6_OPC")})
aAdd(aCpos,{"C6_MEDIDA"		,,"Med./Formação"	,PesqPict("SC6","C6_MEDIDA")})
aAdd(aCpos,{"C6_ENTREG"		,,"Entrega	"		,PesqPict("SC6","C6_ENTREG")})
aAdd(aCpos,{"C6_NUMOP"		,,"Nr. OP"			,PesqPict("SC6","C6_NUMOP")	})
aAdd(aCpos,{"C6_ITEMOP"		,,"Item OP"			,PesqPict("SC6","C6_ITEMOP")})
aAdd(aCpos,{"C6_QTDENT"		,,"Qtd.Entregue"	,PesqPict("SC6","C6_QTDENT")})
aAdd(aCpos,{"C6_CLI"		,,"Cod.Cliente"		,PesqPict("SC6","C6_CLI")})
aAdd(aCpos,{"C6_NOTA"		,,"Nr.N Fiscal"		,PesqPict("SC6","C6_NOTA")})
aAdd(aCpos,{"C6_SERIE"		,,"Serie NF"		,PesqPict("SC6","C6_SERIE")})
aAdd(aCpos,{"C6_DATFAT"		,,"Data NF"			,PesqPict("SC6","C6_DATFAT")})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Construcao do MarkBrowse                             ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oMark:=FWMarkBrowse():NEW()	// Cria o objeto oMark - MarkBrowse
oMark:SetAlias(cAliasTRB)		// Define a tabela do MarkBrowse
oMark:SetDescription(cTitBrow)	// Define o titulo do MarkBrowse
oMark:SetFieldMark("C6_OK")		// Define o campo utilizado para a marcacao
oMark:SetFilterDefault()		// Define o filtro a ser aplicado no MarkBrowse
oMark:SetFields(aCpos)			// Define os campos a serem mostrados no MarkBrowse
oMark:SetSemaphore(.F.)			// Define se utiliza marcacao exclusiva 
//oMark:DisableDetails()         // Desabilita a exibicao dos detalhes do MarkBrowse
//oMark:DisableConfig()          // Desabilita a opcao de configuracao do MarkBrowse
//oMark:DisableReport()          // Desabilita a opcao de imprimir do MarkBrowse
oMark:Activate()               // Ativa o MarkBrowse

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Restaura condicao original                                              ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea(cAliasTRB)
dbCloseArea(cAliasTRB)
dbSelectArea(cAliasTMP)
dbCloseArea(cAliasTMP)
fErase(_cArq+".DBF")

dbSelectArea("SC6")
RetIndex("SC6")
dbClearFilter()

aRotina := ACLONE(aBkRotina)

Return()

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 8 meses atrás #16163 por titosca
Respondido por titosca no tópico Markbrow
Abusando um pouco da sua boa vontade Marcelo,

É o primeiro contato meu com esse objeto e com esse tipo de interface no MP11, precisava saber, como funciona isso. Digo, como passo pra um função de processamento os registros marcados por exemplo? Não entendi como funciona isso. Você tem um tempo para me demonstrar de forma simples? Valeu!

marcelo brigagao escreveu: Guilherme, bom dia.

Segue a mesma rotina, porém atualizada, onde estou usando uma query para montar uma tabela temporaria.

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa  ³VK904Slp  ³ Autor ³   Marcelo Brigagao    ³ Data ³ 11/11/10 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡…o ³Seleciona pedido para controle de projetos                  ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function VK904Slp()
Local cQryTRB   := ""
Local aCpos     := {}
Local aBkRotina := Aclone(aRotina)
Local cTitBrow  := OemToAnsi("Controle de Projeto")
Local _cArq     := "T_"+Criatrab(,.F.)

Private cAliasTRB := GetNextAlias()
Private cAliasTMP := GetNextAlias()
Private aRotina := {{"Processa","U_VK904CPR", 0,4}}

cQryTRB := "SELECT SC6.*,SC6.R_E_C_N_O_ AS C6RECNO FROM "
cQryTRB += RetSqlName("SC6") + " SC6 WHERE "
cQryTRB += "SC6.D_E_L_E_T_ = ' ' AND "

If _lEnvia
	cQryTRB += "SC6.C6_FILIAL='"+cSC6Filial+"' And SC6.C6_XDTENV = ' ' And ( SC6.C6_BLQ = ' ' Or SC6.C6_BLQ = 'N' )" 
Else
	cQryTRB += "SC6.C6_FILIAL='"+cSC6Filial+"' And SC6.C6_XDTENV <> ' ' And SC6.C6_XDTRET = ' ' And ( SC6.C6_BLQ = ' ' Or SC6.C6_BLQ = 'N' )" 
EndIf

cQryTRB += " And SC6.C6_NUM>='"+_cPedIni+"' And SC6.C6_NUM<='"+_cPedFim+"'"  
cQryTRB += " ORDER BY "+SqlOrder(SC6->(IndexKey()))
cQryTRB := ChangeQuery(cQryTRB) 

dbUseArea( .T.,"TOPCONN", TcGenQry( ,,cQryTRB ), cAliasTMP, .T., .F. )

aStruSC6  := dbStruct("SC6")
For nX := 1 To Len(aStruSC6)
	If ( aStruSC6[nX][2] <> "C" )
		TcSetField(cAliasTMP,aStruSC6[nX][1],aStruSC6[nX][2],aStruSC6[nX][3],aStruSC6[nX][4])
	EndIf
Next nX                                  
TcSetField(cAliasTMP,"C6_XDTENV","D",8,0)
TcSetField(cAliasTMP,"C6_XDTRET","D",8,0)
TcSetField(cAliasTMP,"C6_ENTREG","D",8,0)
TcSetField(cAliasTMP,"C6_DATFAT","D",8,0)

dbSelectArea(cAliasTMP)
copy to &_carq
dbUseArea( .T.,__LOCALDRIVER, _cArq,cAliasTRB, .T. , .F. )
dbSelectArea(cALiasTRB)
dbGoTop()

aCpos := {}
aAdd(aCpos,{"C6_XDTENV"		,,"Dt.Env.Projeto"	,PesqPict("SC6","C6_XDTENV")})
aAdd(aCpos,{"C6_XDTRET"		,,"Dt.Ret.Projeto"	,PesqPict("SC6","C6_XDTRET")})
aAdd(aCpos,{"C6_XPROG"		,,"Prog.Produção"	,PesqPict("SC6","C6_XPROG")})
aAdd(aCpos,{"C6_NUM"		,,"Nr.Pedido"		,PesqPict("SC6","C6_NUM")})
aAdd(aCpos,{"C6_ITEM"		,,"It.Pedido"		,PesqPict("SC6","C6_ITEM")})
aAdd(aCpos,{"C6_PRODUTO"	,,"Produto"			,PesqPict("SC6","C6_PRODUTO")})
aAdd(aCpos,{"C6_DESCRI"		,,"Descrição"		,PesqPict("SC6","C6_DESCRI")})
aAdd(aCpos,{"C6_QTDVEN"		,,"Qtd.Vendida"		,PesqPict("SC6","C6_QTDVEN")})
aAdd(aCpos,{"C6_OPC"		,,"Opcionais"		,PesqPict("SC6","C6_OPC")})
aAdd(aCpos,{"C6_MEDIDA"		,,"Med./Formação"	,PesqPict("SC6","C6_MEDIDA")})
aAdd(aCpos,{"C6_ENTREG"		,,"Entrega	"		,PesqPict("SC6","C6_ENTREG")})
aAdd(aCpos,{"C6_NUMOP"		,,"Nr. OP"			,PesqPict("SC6","C6_NUMOP")	})
aAdd(aCpos,{"C6_ITEMOP"		,,"Item OP"			,PesqPict("SC6","C6_ITEMOP")})
aAdd(aCpos,{"C6_QTDENT"		,,"Qtd.Entregue"	,PesqPict("SC6","C6_QTDENT")})
aAdd(aCpos,{"C6_CLI"		,,"Cod.Cliente"		,PesqPict("SC6","C6_CLI")})
aAdd(aCpos,{"C6_NOTA"		,,"Nr.N Fiscal"		,PesqPict("SC6","C6_NOTA")})
aAdd(aCpos,{"C6_SERIE"		,,"Serie NF"		,PesqPict("SC6","C6_SERIE")})
aAdd(aCpos,{"C6_DATFAT"		,,"Data NF"			,PesqPict("SC6","C6_DATFAT")})

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Construcao do MarkBrowse                             ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
oMark:=FWMarkBrowse():NEW()	// Cria o objeto oMark - MarkBrowse
oMark:SetAlias(cAliasTRB)		// Define a tabela do MarkBrowse
oMark:SetDescription(cTitBrow)	// Define o titulo do MarkBrowse
oMark:SetFieldMark("C6_OK")		// Define o campo utilizado para a marcacao
oMark:SetFilterDefault()		// Define o filtro a ser aplicado no MarkBrowse
oMark:SetFields(aCpos)			// Define os campos a serem mostrados no MarkBrowse
oMark:SetSemaphore(.F.)			// Define se utiliza marcacao exclusiva 
//oMark:DisableDetails()         // Desabilita a exibicao dos detalhes do MarkBrowse
//oMark:DisableConfig()          // Desabilita a opcao de configuracao do MarkBrowse
//oMark:DisableReport()          // Desabilita a opcao de imprimir do MarkBrowse
oMark:Activate()               // Ativa o MarkBrowse

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³Restaura condicao original                                              ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea(cAliasTRB)
dbCloseArea(cAliasTRB)
dbSelectArea(cAliasTMP)
dbCloseArea(cAliasTMP)
fErase(_cArq+".DBF")

dbSelectArea("SC6")
RetIndex("SC6")
dbClearFilter()

aRotina := ACLONE(aBkRotina)

Return()

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 8 meses atrás #16164 por mbrigagao
Respondido por mbrigagao no tópico Markbrow
Guilherme,

Segue um fonte como exemplo.

Arquivo Anexo:

Nome do Arquivo: VOKA0905.zip
Tamanho do Arquivo:5 KB



At.
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

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