Jump to content
Fivewin Brasil

HB_DbCreateTemp


Luiz Fernando

Recommended Posts

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

AJbJ

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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 icon_smile_wink.gif

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

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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) icon_smile_big.gif

(cAlias)->(DbSetOrder(????))

(cAlias)->(DbSeek(????)

e por aí vai icon_smile_big.gif

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

  • 2 weeks later...

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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 :D

//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 :D, então é só vc mudar onde está "DuplicataPreNota" para o seu Fluxo2 icon_smile_big.gif

Eu prefiro usar o (cDuplicataPreNota), pois eu posso no meio do programa mudar o arquivo e depois retornar icon_smile_big.gif

Vagner Wirts

bgprofilea.jpg

"Ele não sabendo que era impossível, foi lá e fez"

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

AJbJ

Link to comment
Share on other sites

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

http:\\img193.imageshack.us\img193\6434\foto3nr.jpg

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

Link to comment
Share on other sites

  • 4 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...