Perguntas PE - MT103FIM - Set Filter na programação

Mais
8 anos 11 meses atrás #28201 por Mjuniorfacic
Boa tarde Galera,

Fiz uma persona para incluir na SA5( Amarração Produto x Fornecedor ) automaticamente que o funcionario der entrada na uma NF-e.
Porem quando chega do Set Filter da uma garrada legal (para por 1 minuto).
Sera que tem algo melhor para ser feito neste pequeno fonte para ajudar no desempenho?

User Function MT103FIM()

Local aArea := GetArea()
Local _Opcao := Paramixb[1]
Local nConfirma := Paramixb[2] // Se o usuario confirmou a operação de gravação da NFE

if nConfirma == 1 .and. _Opcao == 3
lMT100TOK := .F.
If SF1->F1_TIPO == 'N' .AND. ("SD1")->D1_DOC <> ""
dbSelectArea("SD1")
SET FILTER TO ("SD1")->D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA == SF1->F1_DOC+SF1->F1_SERIE+SF1->F1_FORNECE+SF1->F1_LOJA
dbGoTop()
While ("SD1")->(!EOF())
dbSelectArea("SA5")
dbSetOrder(02)
If !found(dbSeek(xFilial("SA5")+SD1->D1_COD+SA2->A2_COD+SA2->A2_LOJA))
RecLock("SA5",.T.)
REPLACE A5_FILIAL WITH xFilial("SA5")
REPLACE A5_FORNECE WITH AllTrim(SF1->F1_FORNECE)
REPLACE A5_LOJA WITH AllTrim(SF1->F1_LOJA)
REPLACE A5_NOMEFOR WITH AllTrim(POSICIONE("SA2",1,XFILIAL("SA2")+SA2->A2_COD+SA2->A2_LOJA,"A2_NOME"))
REPLACE A5_PRODUTO WITH AllTrim(SD1->D1_COD)
REPLACE A5_NOMPROD WITH AllTrim(POSICIONE("SB1",1,XFILIAL("SB1")+SD1->D1_COD,"B1_DESC"))
REPLACE A5_XULTPRC WITH SD1->D1_VUNIT
REPLACE A5_XDTULCO WITH SF1->F1_DTDIGIT
MsUnlock()
Else
RecLock("SA5",.F.)
REPLACE A5_XULTPRC WITH SD1->D1_VUNIT
REPLACE A5_XDTULCO WITH SF1->F1_DTDIGIT
MsUnlock()
EndIf
("SD1")->(DBSKIP())
ENDDO
EndIf
EndIf
RestArea(aArea)
Return()

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 11 meses atrás #28232 por kanaamlrr
Em vez de usar o set filter já pensou em utilizar um dbseek e adicionar a sua condição de filtro na cláusula do while?
Pode ser que resolva...

Por favor Acessar ou Registrar para participar da conversa.

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