- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Loop de verificação, arquivo de trabalho continua aberto mesmo depois de utilizar dbclosearea()
×
Linguagem de Programação ADVPL
Perguntas Loop de verificação, arquivo de trabalho continua aberto mesmo depois de utilizar dbclosearea()
- cintra_daniel
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 95
- Obrigados Recebidos: 0
10 anos 11 meses atrás #18866
por cintra_daniel
Loop de verificação, arquivo de trabalho continua aberto mesmo depois de utilizar dbclosearea() foi criado por cintra_daniel
Pessoal estou precisando de ajuda com uma função minha, tenho 3 loops, e 3 arquivos de trabalho, quando o maior passa pelo dbskip, os outros menores continuam abertos mesmo depois de exectuar a função dbclosearea().
Static Function VerificaVSP()
Local cTotal := 0
Local cModelo
Local cVeiculo
Local cPosic1
Local cPosic2
Local cQuery := ""
Local _cDados1 := CriaTrab(NIL,.F.)
Local cQuery2 := ""
Local _cDados2 := CriaTrab(NIL,.F.)
Local cQuery3 := ""
Local _cDados3 := CriaTrab(NIL,.F.)
cQuery := "SELECT"
cQuery += " T9_CODBEM,"
cQuery += " T9_TIPMOD,"
cQuery += " (SELECT TQR_DESMOD FROM TQR010 WHERE D_E_L_E_T_ = '' AND TQR_TIPMOD=T9_TIPMOD) AS MODELO,"
cQuery += " T9_ANOMOD,"
cQuery += " T9_CODFAMI,"
cQuery += " (SELECT T6_NOME FROM ST6010 WHERE D_E_L_E_T_ = '' AND T6_CODFAMI=T9_CODFAMI) AS FAMILIA,"
cQuery += " T9_UFEMPLA"
cQuery += " FROM ST9010 ST9"
cQuery += " WHERE ST9.D_E_L_E_T_ = ''"
cQuery += " AND T9_SITBEM = 'A'"
cQuery += " AND T9_CATBEM = '4'"
cQuery += " AND T9_FILIAL BETWEEN '"+MV_PAR01+"' AND '"+MV_PAR02+"'"
cQuery += " AND T9_CODFAMI BETWEEN '"+MV_PAR03+"' AND '"+MV_PAR04+"'"
cQuery += " AND T9_TIPMOD BETWEEN '"+MV_PAR05+"' AND '"+MV_PAR06+"'"
cQuery += " AND T9_CODBEM BETWEEN '"+MV_PAR07+"' AND '"+MV_PAR08+"'"
cQuery += " ORDER BY T9_CODBEM"
DbUseArea(.T., "TOPCONN", TcGenQry(,, cQuery), _cDados1, .T., .T.)
DbGoTop(_cDados1)
While (_cDados1)->(!Eof())
cModelo := (_cDados1)->T9_TIPMOD
cVeiculo := (_cDados1)->T9_CODBEM
cQuery2 := " SELECT DISTINCT TC_LOCALIZ P1 FROM STC010 WHERE D_E_L_E_T_ = ''"
cQuery2 += " AND TC_TIPMOD = '"+cModelo+"' AND TC_LOCALIZ <> '' ORDER BY TC_LOCALIZ"
cQuery3 := " SELECT TC_LOCALIZ P2 FROM STC010 WHERE D_E_L_E_T_ = '' AND TC_CODBEM = '"+cVeiculo+"' ORDER BY TC_LOCALIZ"
DbUseArea(.T., "TOPCONN", TcGenQry(,, cQuery2), _cDados2, .T., .T.)
DbUseArea(.T., "TOPCONN", TcGenQry(,, cQuery3), _cDados3, .T., .T.)
DbSelectArea(_cDados2)
DbSelectArea(_cDados3)
While (_cDados2)->(!Eof())
While (_cDados3)->(!Eof())
If Empty((_cDados2)->P1) .Or. Empty((_cDados3)->P2)
cTotal++
EndIf
(_cDados3)->(DbSkip())
EndDo
(_cDados3)->(DbGoTop())
(_cDados2)->(DbSkip())
EndDo
dbCloseArea(_cDados2)
dbCloseArea(_cDados3)
(_cDados1)->(DbSkip())
EndDo
DbCloseArea(_cDados1)
cTotal := AllTrim(Str(cTotal))
Return cTotal
Static Function VerificaVSP()
Local cTotal := 0
Local cModelo
Local cVeiculo
Local cPosic1
Local cPosic2
Local cQuery := ""
Local _cDados1 := CriaTrab(NIL,.F.)
Local cQuery2 := ""
Local _cDados2 := CriaTrab(NIL,.F.)
Local cQuery3 := ""
Local _cDados3 := CriaTrab(NIL,.F.)
cQuery := "SELECT"
cQuery += " T9_CODBEM,"
cQuery += " T9_TIPMOD,"
cQuery += " (SELECT TQR_DESMOD FROM TQR010 WHERE D_E_L_E_T_ = '' AND TQR_TIPMOD=T9_TIPMOD) AS MODELO,"
cQuery += " T9_ANOMOD,"
cQuery += " T9_CODFAMI,"
cQuery += " (SELECT T6_NOME FROM ST6010 WHERE D_E_L_E_T_ = '' AND T6_CODFAMI=T9_CODFAMI) AS FAMILIA,"
cQuery += " T9_UFEMPLA"
cQuery += " FROM ST9010 ST9"
cQuery += " WHERE ST9.D_E_L_E_T_ = ''"
cQuery += " AND T9_SITBEM = 'A'"
cQuery += " AND T9_CATBEM = '4'"
cQuery += " AND T9_FILIAL BETWEEN '"+MV_PAR01+"' AND '"+MV_PAR02+"'"
cQuery += " AND T9_CODFAMI BETWEEN '"+MV_PAR03+"' AND '"+MV_PAR04+"'"
cQuery += " AND T9_TIPMOD BETWEEN '"+MV_PAR05+"' AND '"+MV_PAR06+"'"
cQuery += " AND T9_CODBEM BETWEEN '"+MV_PAR07+"' AND '"+MV_PAR08+"'"
cQuery += " ORDER BY T9_CODBEM"
DbUseArea(.T., "TOPCONN", TcGenQry(,, cQuery), _cDados1, .T., .T.)
DbGoTop(_cDados1)
While (_cDados1)->(!Eof())
cModelo := (_cDados1)->T9_TIPMOD
cVeiculo := (_cDados1)->T9_CODBEM
cQuery2 := " SELECT DISTINCT TC_LOCALIZ P1 FROM STC010 WHERE D_E_L_E_T_ = ''"
cQuery2 += " AND TC_TIPMOD = '"+cModelo+"' AND TC_LOCALIZ <> '' ORDER BY TC_LOCALIZ"
cQuery3 := " SELECT TC_LOCALIZ P2 FROM STC010 WHERE D_E_L_E_T_ = '' AND TC_CODBEM = '"+cVeiculo+"' ORDER BY TC_LOCALIZ"
DbUseArea(.T., "TOPCONN", TcGenQry(,, cQuery2), _cDados2, .T., .T.)
DbUseArea(.T., "TOPCONN", TcGenQry(,, cQuery3), _cDados3, .T., .T.)
DbSelectArea(_cDados2)
DbSelectArea(_cDados3)
While (_cDados2)->(!Eof())
While (_cDados3)->(!Eof())
If Empty((_cDados2)->P1) .Or. Empty((_cDados3)->P2)
cTotal++
EndIf
(_cDados3)->(DbSkip())
EndDo
(_cDados3)->(DbGoTop())
(_cDados2)->(DbSkip())
EndDo
dbCloseArea(_cDados2)
dbCloseArea(_cDados3)
(_cDados1)->(DbSkip())
EndDo
DbCloseArea(_cDados1)
cTotal := AllTrim(Str(cTotal))
Return cTotal
Por favor Acessar ou Registrar para participar da conversa.
- mbrigagao
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
10 anos 11 meses atrás - 10 anos 11 meses atrás #18870
por mbrigagao
Respondido por mbrigagao no tópico Loop de verificação, arquivo de trabalho continua aberto mesmo depois de utilizar dbclosearea()
Daniel,
Eu fecho os arquivos assim:
dbSeletcArea(_cDados2)
dbCloseArea()
Ou assim:
(_cDados2)->(DbCloseArea())
Se eu não me engano o dbCloseArea não considera a passagem de parametros.
At.
Eu fecho os arquivos assim:
dbSeletcArea(_cDados2)
dbCloseArea()
Ou assim:
(_cDados2)->(DbCloseArea())
Se eu não me engano o dbCloseArea não considera a passagem de parametros.
At.
Ultima edição: 10 anos 11 meses atrás por mbrigagao.
Por favor Acessar ou Registrar para participar da conversa.
- cintra_daniel
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 95
- Obrigados Recebidos: 0
10 anos 11 meses atrás #18878
por cintra_daniel
Respondido por cintra_daniel no tópico Loop de verificação, arquivo de trabalho continua aberto mesmo depois de utilizar dbclosearea()
Marcelo muito obrigado,
consegui fechar os arquivos de trabalho passado o dbclosearea dessa forma:
(_cDados2)->(DbCloseArea())
(_cDados3)->(DbCloseArea())
consegui fechar os arquivos de trabalho passado o dbclosearea dessa forma:
(_cDados2)->(DbCloseArea())
(_cDados3)->(DbCloseArea())
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Loop de verificação, arquivo de trabalho continua aberto mesmo depois de utilizar dbclosearea()
Tempo para a criação da página:0.070 segundos