Luiz Fernando Posted September 23, 2011 Report Share Posted September 23, 2011 Colegas passei a usar este comando depois da dica do Vagner num outro tópico aqui no forum, agora estou com a seguinte dúvida, qdo acesso o sistema via Terminal Server, este arquivo é criado na memoria do terminal(estação/local) ou no proprio Terminal Server... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Editado por - empresoft on 23/09/2011 20:44:31 Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted September 23, 2011 Author Report Share Posted September 23, 2011 Colegas passei a usar este comando depois da dica do Vagner num outro tópico aqui no forum, agora estou com a seguinte dúvida, qdo acesso o sistema via Terminal Server, este arquivo é criado na memoria do terminal(estação/local) ou no proprio Terminal Server... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Editado por - empresoft on 23/09/2011 20:44:31 Quote Link to comment Share on other sites More sharing options...
emotta Posted September 23, 2011 Report Share Posted September 23, 2011 No servidor que voce conecta. citação:Colegas passei a usar este comando depois da dica do Vagner num outro tópico aqui no forum, agora estou com a seguinte dúvida, qdo acesso o sistema via Terminal Server, este arquivo é criado na memoria do terminal(estação/local) ou no proprio Terminal Server... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Editado por - empresoft on 23/09/2011 20:44:31 id=quote>id=quote>Eduardo Motta emotta@gmail.com.br FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted September 24, 2011 Author Report Share Posted September 24, 2011 Eduarto obrigado pela resposta , isto explica alguns problemas que comecei a ter no sistema que não tinha antes de usar a solução do link abaixo,qdo eu usava o dbcreate para criar arquivos temporario, eu tinha uma rotina para dar nome aos arquivos tipo tmp0200234, tmp0300345, aonde os dois primeiro numero era o terminal e o demais a sequencia dentro daquele terminal, e depois uma rotina para limpar estes arquivo do disco, aonde era apagado tudo que começava com tmp, pois os indice temporario tb tinha esta mesma logica, com o o comando hb_dbcreatetemp abandonei este metodo, usando sempre o mesmo nome de arquivo para todos terminais pois como eles estavam local na memoria não teria problema, mais agora varios terminais acessando o sistema via Terminal Server as informações destes arquivo começaram a se juntar um com os outros...fica ai minha experiencia para que outros não cometem o mesmo erro... http://www.fivewin.com.br/forum/topic.asp?TOPIC_ID=19864 Abraços Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Editado por - empresoft on 24/09/2011 10:48:39 Quote Link to comment Share on other sites More sharing options...
vagner Posted September 27, 2011 Report Share Posted September 27, 2011 Olá Luiz, Nada impede de vc usar a mesma lógica que antes, "crio" o arquivo temporário com o nome contendo o número do ip do usuário + a data+hora, e ainda verifico se o arquivo está aberto ( select() ) acrescento uma numeração que vai do 000001 até o 999999 Aqui estão as rotinas que utilizo /********************************************************* * Função : AbreTrabalho() - Função Criar Arquivo de Trabalho * Programador : vagner * Data : 25/06/2010 - 08:52:12 * Revisado em : 13/01/2011 - 09:45:57 Por : vagner * Parâmetros : * aStru - Estrutura do Arquivo Temporário * cAlia - Nome EspecÃfico para o Alias (Default Nil) * Retorno : * cAlia - Alias do Arquivo Trabalho **********************************************************/ Func AbreTrabalho(aStru,cAlia) Local nX := 0 Local cArqu := "Trabalho"+oSistema:cNroTermina+DtoS(Date())+StrZero(Int(Seconds()*100),10) Local cDirTempo Default cAlia := cArqu //"Trabalho"+DtoS(Date())+StrZero(Int(Seconds()*100),10) cDirTempo := GetEnv("TEMP") If Empty(cDirTempo) ; cDirTempo := GetEnv("TMP") ; Endif If Left(cAlia,8) != "Trabalho" cArqu := cAlia Endif Do Whil Select(cAlia) != 0 If Left(cAlia,8) != "Trabalho" cArqu := cAlia+oSistema:cNroTermina+DtoS(Date())+StrZero(Int(Seconds()*100),10)+StrZero(++nX,6) cAlia := cArqu Else cArqu := "Trabalho"+oSistema:cNroTermina+DtoS(Date())+StrZero(Int(Seconds()*100),10)+StrZero(++nX,6) cAlia := cArqu Endif Enddo DbCreate(cDirTempo+"\Mem:"+cArqu, aStru, , .T., cAlia) If Select(cAlia) == 0 Do Whil .T. Use (cDirTempo+"\Mem:"+cArqu) New Excl Alias cAlia If Used() ; Exit ; Endif Enddo Endif Retu(cAlia) /********************************************************* * Função : CloseTrabalho() - Função Fechar o Arquivo de Trabalho * Programador : vagner * Data : 25/06/2010 - 12:29:27 * Revisado em : 25/06/2010 - 12:29:32 Por : vagner * Parâmetros : * cAlia - Alias do Arquivo Trabalho **********************************************************/ Func CloseTrabalho(cAlia) cDirTempo := GetEnv("TEMP") If Empty(cDirTempo) ; cDirTempo := GetEnv("TMP") ; Endif If Select(cAlia) != 0 (cAlia)->(DbCloseArea()) DbDrop(cDirTempo+"\Men:"+cAlia) Endif Retu(Nil) id=code>id=code>Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted September 27, 2011 Author Report Share Posted September 27, 2011 citação:Nada impede de vc usar a mesma lógica que antes id=quote>id=quote>Ola Vagner como somente nas rotinas nova não estava usando o metodo antigo ficou facil para eu consertar aqui...vlw percebi que vc cria de forma diferente o arquivo, será que o resultado é o mesmo // seu exemplo DbCreate(cDirTempo+"\Mem:"+cArqu, aStru, , .T., cAlia) id=code>id=code>// da forma que eu crio HB_DbCreateTemp("TEMP",vRece,"DBFCDX") e na hora de fechar eu uso só nome do alias->(dbclosearea()) sei la acho que o resultado deve ser o mesmo... Abraços Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Quote Link to comment Share on other sites More sharing options...
vagner Posted September 27, 2011 Report Share Posted September 27, 2011 Olá, Dá o mesmo resultado, o problema é a versão do xharbour, se olhar naquela primeira dica que coloquei, dependendo da versão do xharbour não existe a função HB_DbCreateTemp() Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted October 3, 2011 Author Report Share Posted October 3, 2011 colegas ve se alguém me da uma luz, continuando o assunto acima... nome do meu arquivo temporario, seguinte exemplo do Vagner cArqui:"tmp"+cTerminal+substr(DtoS(Date()),5,4)+StrZero(Int(Seconds()*100),10) antes do hb_dbcreatetemp eu fazia assim DbCreate(cArqu,vRece,,.T.,"FICHA") depois usava o alias tipo FICHA->(DBAPPEND()) outro exemplo n xbrowse oBrw:cAlias:=("FICHA") agora na sintaxe do hb_dbcreatetemp o nome do arquivo e o alias são a mesma coisa hb_dbCreateTemp( , , , , ) -> ex: HB_DbCreateTemp(cArqui,vRece,"DBFCDX") agora como vou usar, tipo se eu fizer assim cArqui->(dbappend()) ou oBrw:cAlias (cArqui) vai dar erro... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Quote Link to comment Share on other sites More sharing options...
vagner Posted October 4, 2011 Report Share Posted October 4, 2011 citação:colegas ve se alguém me da uma luz, continuando o assunto acima... nome do meu arquivo temporario, seguinte exemplo do Vagner cArqui:"tmp"+cTerminal+substr(DtoS(Date()),5,4)+StrZero(Int(Seconds()*100),10) antes do hb_dbcreatetemp eu fazia assim DbCreate(cArqu,vRece,,.T.,"FICHA") depois usava o alias tipo FICHA->(DBAPPEND()) outro exemplo n xbrowse oBrw:cAlias:=("FICHA") agora na sintaxe do hb_dbcreatetemp o nome do arquivo e o alias são a mesma coisa hb_dbCreateTemp( , , , , ) -> ex: HB_DbCreateTemp(cArqui,vRece,"DBFCDX") agora como vou usar, tipo se eu fizer assim cArqui->(dbappend()) ou oBrw:cAlias (cArqui) vai dar erro... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 id=quote>id=quote>Olá, use essa rotina que passei, fica mais fácil aStru := SuaEstruturadoArquivo cAlias := AbreTrabalho(aStru,"Ficha") DbSelectArea(cAlias) (cAlias)->(DbSetOrder(????)) (cAlias)->(DbSeek(????) e por aà vai Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted October 5, 2011 Author Report Share Posted October 5, 2011 Obrigado Vagner, é que estava tentando usar o HB_DbCreateTemp direto por achar mais pratico, e minha versão do xharbour aceitar ela, mais agora por causa desta questão do alias acho que terei que usar conforme seu exemplo... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Editado por - empresoft on 05/10/2011 17:09:45 Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted October 20, 2011 Author Report Share Posted October 20, 2011 Ao Vagner ou algum colega que posso me ajudar... Como não consegui usar o DB_DbCreatetemp com alias, estou tentando usar a rotina compartilhada pelo vagner acima, mais dai não consigo criar o indice... vFluxo:={} AAdd(vFluxo,{"MES1" , "C", 7, 0}) AAdd(vFluxo,{"ENTRADA1" , "N", 15, 2}) AAdd(vFluxo,{"SAIDA1" , "N", 15, 2}) AAdd(vFluxo,{"TIPO" , "C", 1, 0}) aStru := vFluxo cAlias := AbreTrabalho(aStru,"FLUXO2") INDEX ON fluxo2->tipo TAG "01" TO ("teste") Memory id=code>id=code> mensagem do erro... Error description: Error ADSCDX/7017 Erro de cria‡Æo: teste Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Quote Link to comment Share on other sites More sharing options...
Erciley Junior Posted October 20, 2011 Report Share Posted October 20, 2011 INDEX ON fluxo2->tipo TAG "01" TO ("teste") Memory troque por: cIndice:='C:\TEMP\INDICE.NTX' INDEX ON fluxo2->tipo TAG "01" TO &cIndice Memory confesso que desconheço esse MEMORY (procurei no DOC e não sei para que serve, se o intuÃto era criar o Ãndice em memória.....) EDITADO --------- achei nos fontes do FW.... creio que esse MEMORY (ou TEMPORARY ) seja para criar o Ãndice em memória mesmo, então talvez não necessite passar a cláusula TO, tente retirar o trecho TO ("teste") apenas. Erciley Junior FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY Editado por - eco_fw on 20/10/2011 11:03:27 Quote Link to comment Share on other sites More sharing options...
vagner Posted October 20, 2011 Report Share Posted October 20, 2011 Olá, cAliaPedidoCb := "PedidoCB01" cAliaPedidoCb := AbreTrabalho(aStruPedidoCb,cAliaPedidoCb) DbSelectArea(cAliaPedidoCb) Inde On Nro_Pedi Tag "01" To (cAliaPedidoCb) Memory Inde On DtoS(Dat_Pedi)+Nro_Pedi Tag "02" To (cAliaPedidoCb) Memory Additive Inde On Nro_Empr+Nro_Pedi Tag "03" To (cAliaPedidoCb) Memory Additive Inde On Cod_Clie+Nro_Pedi Tag "04" To (cAliaPedidoCb) Memory Additive Inde On VUpperCase(Nom_Clie)+Nro_Pedi Tag "05" To (cAliaPedidoCb) Memory Additive Inde On Cod_Vend+Nro_Pedi Tag "06" To (cAliaPedidoCb) Memory Additive Inde On VUpperCase(Nom_Vend)+Nro_Pedi Tag "07" To (cAliaPedidoCb) Memory Additive Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted October 20, 2011 Author Report Share Posted October 20, 2011 Erciley, obrigado pela resposta , mais não deu certo com suas dica... vagner mais uma vez obrigado pela ajuda, mais fiz igual seu exemplo e da o mesmo erro, mais mesmo se tivesse dado certo, eu iria voltar ao mesmo problema de criar o arquivo direto com o HB_DbcreateTemp, pois não poderia trabalhar com o alis FLUXO2 todo meu codigo eu uso fluxo2-(dbappend()), fluxo2->(dbskip()), fluxo2->(dbseek(vari1)) e assim por diante e isto não tem como eu mudar pois teria que correr mais de 150.000 linhas de código para fazer isto... cAlias := "FLUXO2" cAlias := AbreTrabalho(vFluxo,cAlias) DbSelectArea(cAlias) INDEX ON tipo TAG "01" TO cAlias Memory id=code>id=code>Obs: lembrando que tudo isto é por causa de clientes que acessam o sistema via terminal server... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Quote Link to comment Share on other sites More sharing options...
vagner Posted October 20, 2011 Report Share Posted October 20, 2011 citação:Erciley, obrigado pela resposta , mais não deu certo com suas dica... vagner mais uma vez obrigado pela ajuda, mais fiz igual seu exemplo e da o mesmo erro, mais mesmo se tivesse dado certo, eu iria voltar ao mesmo problema de criar o arquivo direto com o HB_DbcreateTemp, pois não poderia trabalhar com o alis FLUXO2 todo meu codigo eu uso fluxo2-(dbappend()), fluxo2->(dbskip()), fluxo2->(dbseek(vari1)) e assim por diante e isto não tem como eu mudar pois teria que correr mais de 150.000 linhas de código para fazer isto... cAlias := "FLUXO2" cAlias := AbreTrabalho(vFluxo,cAlias) DbSelectArea(cAlias) INDEX ON tipo TAG "01" TO cAlias Memory id=code>id=code>Obs: lembrando que tudo isto é por causa de clientes que acessam o sistema via terminal server... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 id=quote>id=quote>Olá, Vc tentou do jeito que eu postei ? pois funciona sim //Duplicatas aStru := {} AaDd(aStru,{ "Cgc_Forne","C",14,0 }) //Cnpj do Fornecedor (CNPJ) AaDd(aStru,{ "Nro_NtFis","C",10,0 }) //Numero da Nota Fiscal (nNF) AaDd(aStru,{ "Nro_Dupli","C",20,0 }) //Numero da Duplicata do Fornecedor (nDup) AaDd(aStru,{ "Dat_Dupli","D", 8,0 }) //Data da Duplicata do Fornecedor (dVenc) AaDd(aStru,{ "Vlr_Dupli","N",13,2 }) //Valor da Duplicata do Fornecedor (vDup) cDuplicataPreNota := AbreTrabalho(aStru,"DuplicataPreNota") Inde On Nro_Dupli Tag "1" To (cDuplicataPreNota) ? DuplicataPreNota->(OrdKeyCount()) ? (cDuplicataPreNota)->(OrdKeyCount()) dá no mesmo , então é só vc mudar onde está "DuplicataPreNota" para o seu Fluxo2 Eu prefiro usar o (cDuplicataPreNota), pois eu posso no meio do programa mudar o arquivo e depois retornar Vagner Wirts "Ele não sabendo que era impossÃvel, foi lá e fez" Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted October 20, 2011 Author Report Share Posted October 20, 2011 Vagner estou fazendo igualzinho inclusive usando sua funcão abretrabalho na integra, acredito que deve ser alguma incompatibilidade pelo fato de eu usar RDDADS,irei dar mais umas tentada aqui, qq coisa posto aqui se achar uma solução... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Quote Link to comment Share on other sites More sharing options...
emotta Posted October 20, 2011 Report Share Posted October 20, 2011 Voce pode usar o RDDADS mas na hora de criar o alias em memoria passe como driver o RDDCDX pra voce será imperceptivel isso pq o "arquivo" fica em memoria... citação:Vagner estou fazendo igualzinho inclusive usando sua funcão abretrabalho na integra, acredito que deve ser alguma incompatibilidade pelo fato de eu usar RDDADS,irei dar mais umas tentada aqui, qq coisa posto aqui se achar uma solução... Obrigado Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 id=quote>id=quote>Eduardo Motta emotta@gmail.com.br FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted October 20, 2011 Author Report Share Posted October 20, 2011 Colegas como ultimo recurso aqui antes de mudar tudo de novo para o DBCREATE convencional, fui incomodar o amigo Giovany Vecchi no msn, e ele me deu a solução que resolveu o meu problema aqui, fica aqui a dica para quem passar pelo mesmo problema que eu... fluxo2:=cUsuario+cTermianl HB_DbCreateTemp((fluxo2),vStru,"DBFCDX")] desta forma continuo usando o fluxo2-> em todo sistema como antes sem ter a necessidade de mudar para &fluxo2-> ou (fluxo2)->, a solução ate foi simples mais o duro é chegar ate ai... Obs: obrigado ao Vagner pelas dicas e ao Giovany por mais esta ajuda... Abraços Luiz Fernando msn: empresoft@globo.com skype:empresoft empresoft@globo.com FWH 8.04,XHARBOUR 1.1,PELES,XDEV,VLIB,ADS 8.1 FWH 9.12,XHARBOUR 1.2,ADS 9.0 / FWH1104 Quote Link to comment Share on other sites More sharing options...
daniel_halon Posted September 18, 2016 Report Share Posted September 18, 2016 Obrigado a todos, não conseguindo o group com array, decidi criar um arquivo temporário e trabalhar desta maneira. Ficou rápido também. Valeu! 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.