|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
PROBLEMA COM ALIAS TEMPORARIO |
|
Versão: |
12.1.7 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
DAUGER
em 09/08/2019, 15:57 h
Local: PR Registro: 09/08/2019 Postagens: 8 |
Boa tarde povo, tudo certo?
pra mim não faz sentido nenhum.. mas estou com um problema bem besta!
tenho uma parte de uma customizacao que é a seguinte:
If Select(cAliasTMP) > 0
(cAliasTMP)->( dBCloseArea( ) )
EndIf
cQuery := ""
cQuery += "SELECT D2_ITEM, D2_COD, D2_QUANT "+ CRLF
cQuery += "FROM " + RetSqlName( "SD2" ) + " "+ CRLF
cQuery += "WHERE D_E_L_E_T_ <> ‘*‘ AND D2_FILIAL = ‘" + cFilBkp + "‘ AND D2_DOC = ‘"+ cDoc +"‘ ORDER BY D2_ITEM"
TcQuery cQuery New Alias (cAliasTMP)
DbSelectArea(cAliasTMP)
(cAliasTMP)->(DbGoTop())
//Inclusão no Vetor para futura transferencia
While (cAliasTMP)->(!eof())
aux := (cAliasTMP)->D2_ITEM
aadd(aGrade1, { (cAliasTMP)->D2_COD, (cAliasTMP)->D2_QUANT, POSICIONE("SBZ",1,cFilLoc+(cAliasTMP)->D2_COD,"BZ_RF_CSTD"), "01"})
(cAliasTMP)->(dbSkip())
Enddo
debugando.. pego o valor do cQuery e jogo no sql.. ele me retorna certinho uma tabelinha com o item, codigo do produto e quantidade.. são no total 4 itens..
na parte de baixo para atribuir esse alias no array aGrade1 usei uma variavel auxiliar para ver em qual item do aliasTMP está posicionado antes de fazer a inclusao.. acontece que ele está pulando o item 3!
passa o 1, insere.. 2, insere.. 4, insere.. e cai fora.. deixando o produto do item 3 para tras.. por que isso ocorre?
Grato pela ajuda!!!!
IN CODE WE TRUST |
|
|
Mensagem do
ERPC
em 09/08/2019, 18:47 h
Local: SP Registro: 14/08/2011 Postagens: 316 |
Experimenta rodar a Query no APSDU, e verifica se lá ele traz os 4 registros. Se ele trouxe os registros, pode ser que a Posicione() está "desposicionando"... Neste caso, eu acho que voce nem precisaria usar a posicione, mas já colocar na Query os campos que voce quer da SBZ com um JOIN. :D
|
|
|
Mensagem do
DAUGER
em 12/08/2019, 14:46 h
Local: PR Registro: 09/08/2019 Postagens: 8 |
Boa tarde!
executando o select no query analyzer do apsdu, o resultado tambem consta 4 itens..
porem quando debugo o fonte.. apenas na montagem do meu alias temporario ja da problema.. re-executando o sql no apdsu ele pula o item 3! sem mudar nada.. cancelando o debug.. o sql volta a trazer os 4 itens..
ja viram algo parecido?
|
|
|
Mensagem do
DAUGER
em 12/08/2019, 15:12 h
Local: PR Registro: 09/08/2019 Postagens: 8 |
Respondendo a minha propria duvida..
o item 3 some por que a rotina ja comecou a executar.. no meu select eu removo os itens deletados e a rotina é exclusao de documento de saida.. sendo assim ele ja exclui o primeiro do indice doc + produto.. que o menor codigo é o do item 3.. removendo o d_e_l_e_t_ da d2, ele retorna certo.. porem com o item ja deletado..
descobri o por que some.. mas ainda assim nao tenho uma solucao para meu problema.. |
|
|
Mensagem do
DAUGER
em 12/08/2019, 16:14 h
Local: PR Registro: 09/08/2019 Postagens: 8 |
E resolvendo meu proprio problema...
estava usando o PE MSD2520, que na documentacao esta que é chamado cada vez antes de excluir cada item.. (ate havia feito uma flag para nao executar toda vez..)
porem ele executa DEPOIS de excluir cada item.. entao na primeira execucao ja trazia o item com menor codigo deletado.. o select nao pegava..
a solucao foi trocar de PE! usei o MS520VLD.
Obrigado a todos! encerrado. |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|