indice tmp!! Impossivel trabalhar!

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

indice tmp!! Impossivel trabalhar!

Mensagem por marcos.gurupi »

Caros, chequei a uma terrivel conclusão pelo menos para meu sistema, eh impossivel eu trabalhar com indices temporarios, vou te q parti para outro tipo de filtro, gostaria de saber d vcs algum detalhe sobre o set scope da RDD NSX, ou mesmo dbf temporários. Obrigado.

Marcos Roberto
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

// Veja isso...
https://pctoledo.org/forum/viewtopic.php?t=945

Eu tb trabalho com dbfs temporários gerados localmente. nos terminais...


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

blz...

Mensagem por marcos.gurupi »

entaum qual seria a logica de trabalhar com dbf temp. veja bem:

Com os indices temporários eu trabalho gravo locamente na rede com um nome aleatorio com a inicia "TMP+os segundos.cdx", com os dbfs eu poderia fazer do mesmo jeito, a minha dúvida eh q como poderia fechar somente o indice tmp q havia sido gerado depois d uma operação, ou seja, o usuário pede para ver os itens do pedido 2045, o sistema vai ateh o arq. de itens do pedido separa apenas os itens q a variavel pedido=2045 e gera um temporario, mas quando o usuário sair eu presciso fechar esse arq. q eu possa abrir outro pedido, entende!? e eu tb trabalho com select's como vou atribuir o select para os arq. tmp? Saum algumas dúvidas q eu ainda tenho sobre dbfs tmp. Obrigado.

Marcos Roberto
Diderot
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 06 Jul 2004 21:46
Localização: Brasília

Mensagem por Diderot »

Marcos poderia escrever e ser pouco claro.

Segue uma parte de uma rotina que trata dessa questão dos dbfs e index temporários que você pode tirar uma idéia...

Tem funcionado muito bem com relatórios em ambiente de rede local acesso via internet ao servidor de forma simultânea.

Por favor de uma olhadada e se for necessário retorne.

*---------------------------------------------------------------------------------*
FUNC prepVe
*-Arruma VENDAS TEMPORARIO p/calcular os mais vendidos
*-930725 11/10/04 11:59
*-DBF Declarados
*-Usado por cdr24..

* VENTEM
private DTEMP := "TEM8"+substr( time(), 4, 2 )+substr( time(), 7, 2 )
private NTEMP := "TNSX"+substr( time(), 4, 2 )+substr( time(), 7, 2 )
* VENDAx
private DTEMX := "TEM9"+substr( time(), 4, 2 )+substr( time(), 7, 2 )
private NTEMX := "TNXX"+substr( time(), 4, 2 )+substr( time(), 7, 2 )

private lojai := '01',dtini := ctod('01/01/04'),lojaf := '99',dtfim := date()

* OPEN FILES
use LOJAS alias LO new
if UseError("LOJAS")
close databases ; return NIL
endif
set index to LOJAS1

use VENDAS alias VE new
if UseError("VENDAS")
return
endif

use VENTEM alias VTw new
if UseError("VENTEM")
return
endif

* Dbf temporario
copy stru to (DTEMP)
use (DTEMP) alias VT exclu new
if UseError(DTEMP)
dbcloseall()
return
endif

Miolo.......

Fim abaixo:

*-FECHANDO TUDO
dbcloseall()
WRestore(old_screen, .T.)
do while old_window <> WName(0)
WRelease()
enddo
rele win_redraw, window
close all

* Rela
gbr24( DTEMP, NTEMP)

* Apagar Dbfs e Index
if ferase(DTEMP+".DBF") == -1;warning('Erro ao Remover o File->'+(DTEMP+".DBF"));endif
if ferase(NTEMP+".NSX") == -1;warning('Erro ao Remover o File->'+(NTEMP+".NSX"));endif
if ferase(DTEMX+".DBF") == -1;warning('Erro ao Remover o File->'+(DTEMX+".DBF"));endif
if ferase(NTEMX+".NSX") == -1;warning('Erro ao Remover o File->'+(NTEMX+".NSX"));endif

return

Abraços
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Mensagem por marcos.gurupi »

caro diderot, obrigado pela rotina mas acho q n expliquei bem o q eu pretendo fazer, mas vou tentar ser mais claro.

veja bem atualmente uso da seguinte forma:

o cliente quer visualizar qual item tem no pedido 2945

ARQIND :=alltrim(ptmp)+"TMP"+STRZERO(SECONDS(),5,0) // ptmp eh uma variavel publica q diz onde deve ser gravado o indice temporário geralmente eh gravado no c:\windows\temp\

SELECT 8 // ARQ. DE ITENS DE PEDIDO
do while .t.
if travarqivo(5)
index on pedido tag key001 to &arqind for Pedido=PEDIDOS>PEDIDO
unlock
else
atenc(19,10,"Arquivo sendo usado por outro usuario. Aguarde.")
loop
endif
exit
enddo
// depois dessa rotina eu uso o dbedit para visualizar os dados filtrados.

SET INDEX TO sai002 // indice original do itens do pedido
SELECT 7 // arquivo de pedidos
ordsetfocus(5) // ordem de dada do pedido
RETURN(0)

// no final da rotina uso o set index para retornar os indices originais do sistema

Mas mesmo assim o sistema se torna instável as vezes e acredito ser por causa dos indices tmp, com frequencia preciso recriar os indices, a forma q gostaria de trabalhar era assim:

ARQDBF :=alltrim(ptmp)+"TMP"+STRZERO(SECONDS(),5,0)
select 13 // arquivo de contas a receber
copy structure to &arqdbf
SELECT 30 //* area de arq temporario
USE &ARQDBF
APPEND FROM p_itens FOR spedido=pedido

// depois visualizar os dados com o dbedit

Mas o meu problema estah em fechar somente o select 30 para q eu possa usar novamente para outro dbf tmp, pq n poderia selecionar uma area nova para cada dbf tmp aberto o sistema ficaria instável do mesmo jeito pq cheria um momento q n poderia mais abrir dbf. Obrigado.

Marcos Roberto
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

bom eu crio os tmp....

// para pegar o dbf corrente
calias := alias()
nOrdem := indexord()
nRecno := recno()

// crio o temporário ...naum vou postar o dbcreate....rs

// Abro ele
use &tmp. alias tmp new

/// processo...crio um indice temporário tb caso precise...alimento ele...

// mostro os dados

// fecho o temporário...
dbclosearea()

// executo uma função q criei para excluir os dbfs e nsx encontrados
// no c:\temp

// volto ao dbf corrente
Dbselectarea(cAlias)
Dbsetorder(nOrdem)
Dbgoto(nRecno)


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Mensagem por marcos.gurupi »

Ok... virei uma noite mudando um d meus sistemas q estava muito instavel, para dbf tmp e foi um alivio. Queria agradecer a todos q me ajudaram principalmente o dudu_xbase. Obrigado!!!

Marcos Roberto
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

(y) eh nóis na fita....rs


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Responder