× Linguagem de Programação ADVPL

Perguntas Criação de Índice Tabela SXP

Mais
11 anos 8 meses atrás #11216 por gustavo13
Olá!

Estou desenvolvendo uma tela que exiba os logs de alteração da tabela cliente, e queria adicionar um índice ou filtro na tabela SXP, pois ela tem 1GB de informação e demora muito para posicionar nos registros da SA1. Alguém tem um exemplo ou ideia de como eu posso desenvolver isto?

Agradeço.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 8 meses atrás #11218 por kanaamlrr
Respondido por kanaamlrr no tópico Criação de Índice Tabela SXP
Cara, você pode utilizar o IndRegua para criar um índice temporário em tempo de execução.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 8 meses atrás #11230 por gustavo13
Respondido por gustavo13 no tópico Criação de Índice Tabela SXP
Ajudou muito.

Meu fonte esta assim por enquanto, ainda não fiz a tela só explodi a tabela na tela pra visualizar as informações, mas eu não consigo fechar a tabela TRBPRO, porque?

#include "rwmake.ch"
#include "protheus.ch"

User Function MA030BUT()

Local aButtons := {} // Botoes a adicionar

aadd(aButtons,{'BUDGETY',{|| U_AltCli()},'Consulta Alterações','Alterações'})

Return (aButtons )


User Function AltCli ()

SA1Alias := Alias()

dbselectarea("SXP")

aCampos := {}

AADD(aCampos,{"XP_UNICO" ,"C",20,0}) // Codigo
AADD(aCampos,{"XP_NOVVAL" ,"C",10,0}) // Nome do vendedor
AADD(aCampos,{"XP_ANTVAL" ,"C",10,0}) // Data da emissao
AADD(aCampos,{"XP_CAMPO" ,"C",10,0}) // serie
AADD(aCampos,{"XP_DATA" ,"D",08,2}) // Documento
AADD(aCampos,{"XP_USER" ,"C",15,0}) // Codigo cliente
AADD(aCampos,{"XP_OPER" ,"N",04,0}) // Loja
AADD(aCampos,{"XP_ALIAS" ,"C",03,0}) // Descricao cliente

cAlias := "TRBPRO"
cArqTRB := CriaTrab(aCampos,.T.)
dbUseArea(.T.,,cArqTRB,cAlias,.F.)

IndRegua("SXP",cArqTrb,"XP_ALIAS+XP_UNICO",,"XP_ALIAS=='SA1'")

_coun := 0
DbselectArea("SXP")
do while !EOF() .And. SXP->XP_ALIAS == 'SA1'
If alltrim(SXP->XP_UNICO) == M->A1_COD+M->A1_LOJA
dbselectarea("TRBPRO")
reclock("TRBPRO", .t. )
TRBPRO->XP_UNICO := SXP->XP_UNICO
TRBPRO->XP_NOVVAL := SXP->XP_NOVVAL
TRBPRO->XP_ANTVAL := SXP->XP_ANTVAL
TRBPRO->XP_CAMPO := SXP->XP_CAMPO
TRBPRO->XP_DATA := SXP->XP_DATA
TRBPRO->XP_USER := SXP->XP_USER
TRBPRO->XP_OPER := SXP->XP_OPER
TRBPRO->XP_ALIAS := SXP->XP_ALIAS
_coun++
msunlock()
Endif
dbselectarea("SXP")
dbskip()

ENDDO

U_ShowTrb("TRBPRO")

DbCloseArea(cAlias)

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 8 meses atrás #11234 por gustavo13
Respondido por gustavo13 no tópico Criação de Índice Tabela SXP
Já achei o erro é TRBPRO->( dBCloseArea() ) para fechar.
Alguem sabe como crio a Mbrowser com arquivo de temporário.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 8 meses atrás #11235 por gustavo13
Respondido por gustavo13 no tópico Criação de Índice Tabela SXP
Criei a Mbrowser, mas como retirar os botoes que vieram como padrão, não queria opção de incluir, alterar, só o de sair. Bom eles não funcionam mas não ficou bom deixa-los lá.


aHeadMBrow := HeadBrow()
dbSelectArea("TRBPRO")
dbgotop()
MBrowse(,,,,"TRBPRO",aHeadMBrow,,,,,,"","")

TRBPRO->( dBCloseArea() )

RETURN()

Static Function HeadBrow()
Local aHead := {}
//Campos que aparecerão na MBrowse, como não é baseado no SX3 deve ser criado.
//Sequência do vetor: Título, Campo, Tipo, Tamanho, Decimal, Picture
AAdd( aHead, { "Novo Valor" , {|| TRBPRO->XP_NOVVAL } ,"C", 12 , 0, "" } )
AAdd( aHead, { "Valor Antigo" , {|| TRBPRO->XP_ANTVAL } ,"C", 12 , 0, "" } )
AAdd( aHead, { "Campo Alterado" , {|| TRBPRO->XP_CAMPO } ,"C", 12 , 0, "" } )
AAdd( aHead, { "Data da Alteração", {|| TRBPRO->XP_DATA } ,"D", 08 , 2, "" } )
AAdd( aHead, { "Usuário" , {|| TRBPRO->XP_USER } ,"C", 15 , 0, "" } )
AAdd( aHead, { "Operação" , {|| TRBPRO->XP_OPER } ,"N", 04 , 0, "" } )

Por favor Acessar ou Registrar para participar da conversa.

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