vilian Posted October 4, 2010 Report Share Posted October 4, 2010 Complementando a resposta do Vailton, o uso de dicionário é possÃvel nas duas versões. Vilian F. Arraes vilian@vfatec.com.br Belém - Pa FWH 9.12/xHabour/ADS Server Quote Link to comment Share on other sites More sharing options...
Theotokos Posted October 4, 2010 Report Share Posted October 4, 2010 Eu denovo!!! rsrs mudei o meu programa para o ADT. Só que me atrapalhei em uma rotina que tenho. é o seguinte: Sel(cDBF,nNTX) // Abre o Arquivo de Crediario do Cliente DbGoTop() While !EOF() If SIM_NAO = "S" aReg := { } * nFator := nTotalPg / (nTAux + nDesconto) * RecLock() Replace VA_DATPAGO With Date() Replace VA_VALPAGO With CalcPrestacao(VA_VALPRES,VA_DATVENC) * nFator UnLockRecord() * For nRg1 := 1 To FCount() AADD( aReg, FieldGet(nRg1) ) Next nRg1 * cTipo := VA_TPMOVIM nNumero := VA_NUMPEDI dDtVenc := VA_DATVENC nVrPres := CalcPrestacao(VA_VALPRES,VA_DATVENC) * RecLock() DbDelete() UnLockRecord() * Sel("M"+cDBF,nNTX) // Abre arquivo Morto do Crediario do Cliente AppendRec() For nRg1 := 1 To Len(aReg) FieldPut(nRg1,aReg[nRg1]) Next nRg1 * Sel("MC00000",1) // Abre um Arquivo para Caixa AppendRec() For nRg1 := 1 To Len(aReg) FieldPut(nRg1,aReg[nRg1]) Next nRg1 * Sel(cDBF,nNTX) EndIf DbSkip(1) EndDo id=code>id=code>* O problema esta na linha do Delete (Deletando o registro que foi pago) ai não sei o que acontece ele deleta apenas o primeiro, os outros permanece... OU SEJA, PARECE QUE A ROTINA SE PERDE POR CAUSA DO ADT APROFEITA OS REGISTRO DELETADOS... ALGUEM TEM ALGUMA IDÉIA...???id=red> * Em Cristo! Rone - Itajubá(MG)id=red> xHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 7.12 + xDevStudio A pessoa que pensa que sabe alguma coisa, ainda não tem a sabedoria que precisa. (1 Cor 8, 2)id=blue> Editado por - theotokos on 04/10/2010 22:00:05 Editado por - theotokos on 05/10/2010 20:33:01 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted October 6, 2010 Report Share Posted October 6, 2010 mudei o meu programa para o ADT. Só que me atrapalhei em uma rotina que tenho. é o seguinte: Sel(cDBF,nNTX) // Abre o Arquivo de Crediario do Cliente DbGoTop() While !EOF() If SIM_NAO = "S" aReg := { } * nFator := nTotalPg / (nTAux + nDesconto) * RecLock() Replace VA_DATPAGO With Date() Replace VA_VALPAGO With CalcPrestacao(VA_VALPRES,VA_DATVENC) * nFator UnLockRecord() * For nRg1 := 1 To FCount() AADD( aReg, FieldGet(nRg1) ) Next nRg1 * cTipo := VA_TPMOVIM nNumero := VA_NUMPEDI dDtVenc := VA_DATVENC nVrPres := CalcPrestacao(VA_VALPRES,VA_DATVENC) * RecLock() DbDelete() UnLockRecord() * Sel("M"+cDBF,nNTX) // Abre arquivo Morto do Crediario do Cliente AppendRec() For nRg1 := 1 To Len(aReg) FieldPut(nRg1,aReg[nRg1]) Next nRg1 * Sel("MC00000",1) // Abre um Arquivo para Caixa AppendRec() For nRg1 := 1 To Len(aReg) FieldPut(nRg1,aReg[nRg1]) Next nRg1 * Sel(cDBF,nNTX) EndIf DbSkip(1) EndDo id=code>id=code>* O problema esta na linha do Delete (Deletando o registro que foi pago) ai não sei o que acontece ele deleta apenas o primeiro, os outros permanece... OU SEJA, PARECE QUE A ROTINA SE PERDE POR CAUSA DO ADT APROFEITA OS REGISTRO DELETADOS... ALGUEM TEM ALGUMA IDÉIA...???id=red> * Em Cristo! Rone - Itajubá(MG)id=red> xHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 7.12 + xDevStudio A pessoa que pensa que sabe alguma coisa, ainda não tem a sabedoria que precisa. (1 Cor 8, 2)id=blue> Em Cristo! Rone - Itajubá(MG)id=red> xHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 7.12 + xDevStudio A pessoa que pensa que sabe alguma coisa, ainda não tem a sabedoria que precisa. (1 Cor 8, 2)id=blue> Quote Link to comment Share on other sites More sharing options...
Theotokos Posted October 7, 2010 Report Share Posted October 7, 2010 O TOPICO PAROU, ALGUEM POR FAVOR, SOCORRO!!!id=red> Em Cristo! Rone - Itajubá(MG)id=red> xHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 7.12 + xDevStudio A pessoa que pensa que sabe alguma coisa, ainda não tem a sabedoria que precisa. (1 Cor 8, 2)id=blue> Quote Link to comment Share on other sites More sharing options...
vilian Posted October 8, 2010 Report Share Posted October 8, 2010 Rene, Não entendi bem seu código, mas afianço-lhe que não há qualquer problema com o Delete do ADS. Naturalmente uso com frequência e sem problema algum. O tratamento implementado pelo ADS para este recurso é apenas mais eficiente que o padrão do CA-Clipper onde os registros são apenas "marcados" para exclusão. O Mais provável é que existe alguma falha no controle do laço que você está executando. Vilian F. Arraes vilian@vfatec.com.br Belém - Pa FWH 9.12/xHabour/ADS Server Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted October 8, 2010 Author Report Share Posted October 8, 2010 citação:O TOPICO PAROU, ALGUEM POR FAVOR, SOCORRO!!!id=red> Em Cristo! Rone - Itajubá(MG)id=red>xHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 7.12 + xDevStudio A pessoa que pensa que sabe alguma coisa, ainda não tem a sabedoria que precisa. (1 Cor 8, 2)id=blue> id=quote>id=quote>Estranho o que esta acontecendo. Mais para um bom funcionamento dos aliases aconselho direcionamento direto nos aliases: Ex: CLIENTES->(DbSkip()) CLIENTES->(Rlock()) CLIENTES->(DbAppend()) CLIENTES->(DbDelete()) CLIENTES->NOME := "TESTE DO NOME" Se o alias for uma variavel tipo: cAlias (cAlias)->(DbSkip()) (cAlias)->(DbDelete()) Lembrando que o ads tem threads, e em um certo ponto de execução ele adianta o proximo procedimento, e neste caso ele esta processando um alias anterior e voce da um DBDELETE(), isto pode entrar na fila do threads e deletar o registro de outro arquivo. Por isto que o correto seria direcionar o alias: CLIENTES->, que neste caso o ads tem certeza que é para movimentar, deletar, incluir, pular o alias que foi passado para ele. Editado por - giovanyvecchi on 08/10/2010 09:35:18 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted October 9, 2010 Report Share Posted October 9, 2010 valeu pessoal, vou retomar este teste, e vê se acerto agora com as suas dicas. OBRIGADO!!! Em Cristo! Rone - Itajubá(MG)id=red> xHB build 1.1.0 (SimpLex) & BCC 5.5.1 & FW 7.12 + xDevStudio A pessoa que pensa que sabe alguma coisa, ainda não tem a sabedoria que precisa. (1 Cor 8, 2)id=blue> Quote Link to comment Share on other sites More sharing options...
vilian Posted October 15, 2010 Report Share Posted October 15, 2010 Giovanny, Como você resolveu a questão de Scopes com datas em branco ? Qual a versão das dlls do ADS que você usa ? Vilian F. Arraes vilian@vfatec.com.br Belém - Pa FWH 9.12/xHabour/ADS Server Editado por - vilian on 15/10/2010 16:35:30 Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted October 16, 2010 Author Report Share Posted October 16, 2010 citação:Giovanny, Como você resolveu a questão de Scopes com datas em branco ? Qual a versão das dlls do ADS que você usa ? Vilian F. Arraes vilian@vfatec.com.br Belém - Pa FWH 9.12/xHabour/ADS Server Editado por - vilian on 15/10/2010 16:35:30 id=quote>id=quote>È, Isto foi um lema. Atualmente não uso mais Ordscope, Uso apenas xFilter que eu criei e que usa o AdsSetAof, não preciso selecionar o ordem de um indice pra obter certos resultados e a velocidade do AdsSetAof é a mesma do ordscope. Para filtrar as datas em branco é assim: PAGAMENTOS->(AdsSetAof("DT_PAGAMENTO = NULL")) Giovany Vecchi - Jales - SP FWH 8.6 / Harbour RC1 V 1.0.0 / Code Gear 6 Bcc 5.6 /Bcc 5.9 / Ads 8.1 /PellesC Quote Link to comment Share on other sites More sharing options...
vilian Posted October 27, 2010 Report Share Posted October 27, 2010 Giovany, Voltando a questão dos campos com conteúdo NULL, Como podemos pesquisar campos com este conteúdo ? Explico melhor - Tenho um indice por data_pgto, naturalmente titulos não pagos não tem esse campo preenchido, como fazer o SEEK pra achar esses lançamentos ? Vilian F. Arraes vilian@vfatec.com.br Belém - Pa FWH 9.12/xHabour/ADS Server Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted October 28, 2010 Author Report Share Posted October 28, 2010 citação:Giovany, Voltando a questão dos campos com conteúdo NULL, Como podemos pesquisar campos com este conteúdo ? Explico melhor - Tenho um indice por data_pgto, naturalmente titulos não pagos não tem esse campo preenchido, como fazer o SEEK pra achar esses lançamentos ? Vilian F. Arraes vilian@vfatec.com.br Belém - Pa FWH 9.12/xHabour/ADS Server id=quote>id=quote>Se voce usar os recursos do ads, o comando SEEK se torna obsoleto. Voce pode fazer de varias maneiras. Veja exemplos abaixo: Exemplo usando xFilter nCodCliente := 100 nDtVence := CTOD("28/10/2010") aadd(aFlags,{"Codigo_Cliente",nCodClinte}) aadd(aFlags,{"Dt_Vencimento",nDtVence}) PAGAMENTOS->(xFilter("DATA_PGTO = NUL and COD_CLI = Codigo_Cliente and DT_VENCE < Dt_Vencimento",aFlags)) id=code>id=code>Ou da forma mais simples usando sql com data dictionary nCodCliente := 100 cDtVence := "'28/10/2010'" cComando := "" cComando += "SELECT * from PAGAMENTOS where " cComando += "DATA_PGTO = NULL " cComando += "and COD_CLI = "+Str(nCodCliente)+" " cComando += "and DT_VENCE < "+cDtVence cComando += " order by DT_VENCE" AdsCreateSqlStatement("PAGAMENTOS",3) // 3 ADT AdsExecuteSQLDirect(cComando) id=code>id=code>Giovany Vecchi - Jales - SP FWH 8.6 / Harbour RC1 V 1.0.0 / Code Gear 6 Bcc 5.6 /Bcc 5.9 / Ads 8.1 /PellesC Quote Link to comment Share on other sites More sharing options...
vilian Posted October 28, 2010 Report Share Posted October 28, 2010 Flw, Obrigado pelos esclarecimentos. Vilian F. Arraes vilian@vfatec.com.br Belém - Pa FWH 9.12/xHabour/ADS Server Quote Link to comment Share on other sites More sharing options...
LUIS1361303120 Posted October 28, 2010 Report Share Posted October 28, 2010 Ou da forma mais simples usando sql com data dictionary nCodCliente := 100 cDtVence := "'28/10/2010'" cComando := "" cComando += "SELECT * from PAGAMENTOS where " cComando += "DATA_PGTO = NULL " cComando += "and COD_CLI = "+Str(nCodCliente)+" " cComando += "and DT_VENCE < "+cDtVence cComando += " order by DT_VENCE" AdsCreateSqlStatement("PAGAMENTOS",3) // 3 ADT AdsExecuteSQLDirect(cComando) Giovany Vecchi - Jales - SP ************************************* como que eu usaria isso no bd,, e como abriria os arquivos,, tem que comprar sql ou coisa parecida ou o proprio ads, ja tem isso pronto.... duvidas que tenho,,, Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.