× Linguagem de Programação ADVPL

Perguntas Função para preencher msselect

Mais
6 anos 11 meses atrás #32150 por kanaamlrr
Respondido por kanaamlrr no tópico Função para preencher msselect
Tenta assim:
Static Function fListaExame(cCli,cLjI,cLjF,dDtI,dDtf)

Local cSQL := ""
Local cAlias := "TMPTRAB"
Local cMemo
Local cObs := ""

cSQL:= "SELECT ZOD_DTPRO, ZOD_NRPRO, ZOD_NROS, CASE ZOD_TIPCON WHEN '1' THEN 'OS' WHEN '2' THEN 'RENOVACAO' WHEN '3' THEN 'INAUGURACAO' WHEN '4' THEN 'CI' END TIPO, "
cSQL+= "ZOE_SERV, B1_DESC, ZOE_QTDE, ZOE_VLCLI, ZOE_DTCLI, ZOD_CLIENT, ZOD_LOJA, A1_NOME, CASE A1_MSBLQL WHEN '1' THEN 'BLOQUEADO' WHEN '2' THEN 'ATIVO' END SITUACAO, X5_CHAVE, X5_DESCRI FROM "+RetSqlName("ZOE")+" ZOE "
cSQL+= "INNER JOIN "+RetSqlName("ZOD")+" ZOD ON ZOE_NRPRO = ZOD_NRPRO "
cSQL+= "AND ZOD_CLIENT >= '000000' AND ZOD_CLIENT <= 'ZZZZZZ' AND ZOD_LOJA >= '0000' AND ZOD_LOJA <= 'ZZZZ' AND ZOD.D_E_L_E_T_ = '' "
cSQL+= "INNER JOIN "+RetSqlName("SA1")+" SA1 ON ZOD_CLIENT = A1_COD AND ZOD_LOJA = A1_LOJA AND SA1.D_E_L_E_T_ = '' "
cSQL+= "INNER JOIN "+RetSqlName("SB1")+" SB1 ON ZOE_SERV = B1_COD AND SB1.D_E_L_E_T_ = '' "
cSQL+= "LEFT JOIN "+RetSqlName("SX5")+" SX5 ON X5_TABELA = 'Z5' AND X5_CHAVE = ZOE_STATOP AND SX5.D_E_L_E_T_ = '' "
cSQL+= "WHERE ZOE.D_E_L_E_T_ = '' AND ZOE_DTCLI BETWEEN '20160101' AND '20170120' ORDER BY ZOD_DTPRO, ZOD_CLIENT, ZOD_LOJA, ZOE_DTCLI"

cSQL := ChangeQuery(cSQL)
dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSQL),cAlias, .F., .T.)
dbSelectArea(cAlias)
dbGotop()

TTR->(dbGoTop())
While TTRB->(!Eof())
TTRB->(dbDelete())
TTRB->(dbSkip())
EndDo

While (cAlias)->(!EOF())
cMemo := Posicione("ZOE",1,xFilial("ZOE")+(cAlias)->ZOD_NRPRO,"ZOE->ZOE_OBSOPE")
If !Empty(cMemo)
For i := 1 to MlCount(cMemo,40)
cObs += MemoLine(cMemo,40,i)
Next i
Endif
TTRB->(DbSelectArea("TTRB"))
TTRB->(RecLock("TTRB",.T.))
TTRB->MARCA	:= "0"
TTRB->DTPRO := STOD((cAlias)->ZOD_DTPRO)
TTRB->NRPRO := (cAlias)->ZOD_NRPRO
TTRB->NROS := (cAlias)->ZOD_NROS
TTRB->TIPCON := (cAlias)->TIPO
TTRB->SERV	:= (cAlias)->ZOE_SERV
TTRB->DESCSRV := (cAlias)->B1_DESC
TTRB->QTDSRV := (cAlias)->ZOE_QTDE
TTRB->VLRCLI := (cAlias)->ZOE_VLCLI
TTRB->DTCLI := STOD((cAlias)->ZOE_DTCLI)
TTRB->CLIENT := (cAlias)->ZOD_CLIENT
TTRB->LOJA := (cAlias)->ZOD_LOJA
TTRB->NOMCLI := (cAlias)->A1_NOME
TTRB->BLOQ := (cAlias)->SITUACAO
TTRB->CHAVE := (cAlias)->X5_CHAVE
TTRB->DESCRI := (cAlias)->X5_DESCRI
TTRB->CMEMO	:= cObs
TTRB->(MsunLock())
(cAlias)->(DbSkip())
EndDo

(cAlias)->(DbCloseArea())

DbSelectArea("TTRB")
DbGotop()

oMark:oBrowse:Refresh()

Return

Desculpe anteriormente, esqueci dos underscores antes do dbZap
Abraço!

Por favor Acessar ou Registrar para participar da conversa.

Mais
6 anos 11 meses atrás #32151 por Marco Antonio
Kanaãm,
Agora deu certo e sem o uso do __dbzap()
Apenas implementei o reclock para funcionar o dbdelete. Então ficou assim:

TTRB->(DbGoTop())
While TTRB->(!EOF())
TTRB->(RecLock("TTRB",.F.))
TTRB->(DBDELETE())
TTRB->(MsUnlock())
TTRB->(DBSKIP())
ENDDO

Com isso, o MsSelect é atualizado sem repetir dados. O próximo passo é pegar os dados marcados do MsSelect e incluir pedido de venda. Imagino que por padrão, essa tabela não vai considerar os arquivos deletados, né?
Mas isso é outra saga, haha.

MUITO OBRIGADO!

Por favor Acessar ou Registrar para participar da conversa.

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