- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Função para preencher msselect
×
Linguagem de Programação ADVPL
Perguntas Função para preencher msselect
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
7 anos 6 meses atrás #32150
por kanaamlrr
Respondido por kanaamlrr no tópico Função para preencher msselect
Tenta assim:
Desculpe anteriormente, esqueci dos underscores antes do dbZap
Abraço!
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.
- Marco Antonio
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 20
- Obrigados Recebidos: 0
7 anos 6 meses atrás #32151
por Marco Antonio
Respondido por Marco Antonio no tópico Função para preencher msselect
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!
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.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Função para preencher msselect
Tempo para a criação da página:0.091 segundos