Página 2 de 2

Re: Tamanho máximo do DBF.

Enviado: 01 Set 2009 13:01
por Hasse
OK.

Leonardo:
Vou fazer os testes conforme instruções.

Itamar:
O arquivo "letodb.ini" já está configurado.

Re: Tamanho máximo do DBF.

Enviado: 01 Set 2009 22:04
por Hasse
Olá.

Conexão estabelecida: :))
Leto_File() funcionando;
FILE() funcionando;
DbUseArea() funcionando;
USE funcionando.

Coisa simples que estava faltando ( "as lamparinas ainda estão acendendo... mal chegou na penumbra..." ) :-)

Código: Selecionar todos

   REQUEST DBFCDX
   RDDSETDEFAULT( "DBFCDX" )
   DBSETDRIVER( "DBFCDX" )
Valeu mesmo, amigos. Eu sempre afirmo, este é o melhor Fórum que conheço.

Pergunta-1: o arquivo "LetoDb.ini" precisa estar só no Servidor, correto ?
No meu caso, o Path:
DataPath = D:/clipper/datafio/
Está correto ?

Pergunta-2: Quando houverem 2 partições compartilhadas. Como o LetoDb vai direcionar para o correto ? Isto seria feito no "DataPath = D:/clipper/datafio/" ?

Re: Tamanho máximo do DBF.

Enviado: 02 Set 2009 00:18
por sygecom
Olá Hasse,
Hasse escreveu: Pergunta-1: o arquivo "LetoDb.ini" precisa estar só no Servidor, correto ?
Isso mesmo , apenas no lado servidor.
No meu caso, o Path:
DataPath = D:/clipper/datafio/
Está correto ?
Correto.
Pergunta-2: Quando houverem 2 partições compartilhadas. Como o LetoDb vai direcionar para o correto ? Isto seria feito no "DataPath = D:/clipper/datafio/" ?
Bom, na pratica não testei, mas teoricamente falando você tem dua saidas.
1º-Seria definir duas porta diferentes para cada Letodb.ini no servidor, ou seja você terá dois modulos de server rodando no lado servidor e no letodb.ini você defini um com Port = 2812 e outro com Port = 2813.
2º-Seria ter uma pasta monitorada e definida no letodb.ini em DataPath = e dentro dessa pasta você tem as duas pasta que serão monitoradas, claro que para isso você terá que usar no seus sistemas o direcionamento da pasta definida em DataPath= em diante.

Re: Tamanho máximo do DBF.

Enviado: 02 Set 2009 10:10
por rafael
Olá Amigos,

Só para deixar registrado tenho um DBF com 7.200.000 e 800 megas com 2 indices CDX.
Abre e reindexa que nem uma pena.

Xharbour 1.2.0 Linux.

Re: Tamanho máximo do DBF.

Enviado: 02 Set 2009 21:04
por Hasse
Olá.

Sygecom: A tua sugestão funcionou perfeitamente. Veja o código que usei:

Código: Selecionar todos

Function Main()
   LOCAL cServerIP1 := '//10.0.0.3:2812'
   LOCAL cServerIP2 := '//10.0.0.3:2813'
   LOCAL cPath1     := '/clipper/datafio/'
   LOCAL cPath2     := '/clipper/datafio/safe/'
   LOCAL cFile1     := 'Cadastro'
   LOCAL cFile2     := 'Safe'
   REQUEST LETO
   RDDSETDEFAULT( "LETO" )
   REQUEST DBFCDX
   RDDSETDEFAULT( "DBFCDX" )
   DBSETDRIVER( "DBFCDX" )

   Clear
   IF ( leto_Connect( cServerIP1 ) ) == -1
      ? 'NÆo h  conexÆo com o Servidor:=' + cServerIP1
      Return .F.
   ELSE
      ? 'ConexÆo estabelecida com o Servidor:=' + cServerIP1
   ENDIF
   Inkey( 0.1 )
   ?
   cArq1 := cPath1 + cFile1
   DBUseArea( .T., 'DBFCDX', cArq1, cFile1 , .F. )
   ? dbf()
   Inkey( 0.1 )
   ?
   IF ( leto_Connect( cServerIP2 ) ) == -1
      ? 'NÆo h  conexÆo com o Servidor:=' + cServerIP2
      Return .F.
   ELSE
      ? 'ConexÆo estabelecida com o Servidor:=' + cServerIP2
   ENDIF
   Inkey( 0.1 )
   ?
   cArq2 := cPath2 + cFile2
   DBUseArea( .T., 'DBFCDX', cArq2, cFile2, .F. )
   ? dbf()
   Inkey( 0.1 )
   ?
   DbSelectAr( cFile1 )
   ? dbf()
   ?
   DbSelectAr( cFile2 )
   ? dbf()
   ?
   ? "Encerrando a conexÆo atual...."
   Leto_Disconnect()
   Inkey( 0.1 )
   *
Return( nil )
Mais perguntas:

1-No mesmo executável, preciso acessar arquivos remotos (via LetoDB) e também arquivos no HD local. Como proceder ?

2-No caso das funções Leto_BeginTransaction(), Leto_RollBack(), Leto_CommitTransaction(): Imagino que sejam de uso opcional ? É que eu tentei gravar dados sem eles e funcionou.

3-Se usada a Leto_BeginTransaction(), dados enviados via função PutFile(), estes dados ficariam aguardando no Buffer até receber a Leto_CommitTransaction() ?

4-Se a Leto_RollBack() for usada antes do CommitTransaction() os dados do Buffer seriam zerados e nenhum dados gravado no HD ?

5-Como ficam estes dados, se antes do Leto_CommitTransaction(), a conexão fosse perdida por algum motivo fora do nosso controle ? Os dados são gravados ?

Em tempo: Acredito que conseguimos fazer uma baita salada de assuntos neste tópico. Não seria uma boa idéia separar os assuntos em 2 tópicos ?

Re: Tamanho máximo do DBF.

Enviado: 03 Set 2009 08:13
por Itamar M. Lins Jr.
Ola!

Código: Selecionar todos

 Não precisa destas linhas.
 REQUEST DBFCDX
 RDDSETDEFAULT( "DBFCDX" )
 DBSETDRIVER( "DBFCDX" )
 E essa deve ser assim:
 DBUseArea( .T., 'LETO', cArq1, cFile1 , .F. ) //Não 'DBFCDX'
1a. Questão.
É só setar no comando dbusearea. Por exemplo, DbUseArea(.t.,'DBFCDX','c:\dados\estoq.dbf','eq',.f.)
Lembrando que se for via DBFCDX não pode ser acessado simultaneamente via LETO.
2a)É opcional
3a)Só testando.
4a)Creio que não.
5a)Só testando uma vez que é opcional.

Re: Tamanho máximo do DBF.

Enviado: 03 Set 2009 21:41
por asimoes
1-No mesmo executável, preciso acessar arquivos remotos (via LetoDB) e também arquivos no HD local. Como proceder ?
Sendo remoto: (não esquecer de liberar a porta 2813 no roteador/modem) Eu uso o dyndns (www.dyndns.com) para acesso remoto.

Código: Selecionar todos

//Acesso Remoto:
cServer1:='//xxxx.dyndns.org:2813/'
//Acesso local:
cServer2:='//192.168.0.1:2812/' ou 
cServer2:='//localhost:2812/'
lRemoto:=.T.
lLocal   :=.T.
//-------------------------------------------------------------------
IF leto_Connect( cServer1 ) == -1
   Alert( "Não consegui acessar o servidor remoto..." )
   lRemoto:=.F.
ENDIF
IF leto_Connect( cServer2 ) == -1
   Alert( "Não consegui acessar o servidor local..." )
   lLocal:=.F.
ENDIF
if lRemoto
   DBUseArea(.T.,,cServer1+'MAINFILE','MAINFILE',.T.)
   SET INDEX TO (cServer1 + "MAINCDX")
endif
if lLocal
   DBUseArea(.T.,,cServer2+'TELEPHON','TELEPHON',.T.)
   SET INDEX TO (cServer2 + "TELECDX")
endif 
Funciona beleza.

Re: Tamanho máximo do DBF.

Enviado: 04 Set 2009 14:00
por sygecom
Olá Hasse,
Hasse escreveu: 1-No mesmo executável, preciso acessar arquivos remotos (via LetoDB) e também arquivos no HD local. Como proceder ?
Ficaria Assim:

Código: Selecionar todos

Function main()
   REQUEST LETO
   REQUEST DBFCDX
   RDDSETDEFAULT( "LETO" )  // tudo que abrir como padrão sem informar o driver vai ser pelo LETODB
   DBSETDRIVER( "LETO" )

   DBSELECTAREA(0) // SELECIONA A PROXIMA AREA LIVRE
   DBUseArea(.T.,,cServer1+'MAINFILE','MAINFILE',.T.)  // vai abrir pelo banco padrão, nesse caso usando o LETODB

   DBSELECTAREA(0) // SELECIONA A PROXIMA AREA LIVRE
   DBUseArea(.T.,"DBFCDX",'MAINFILE','MAINFILE',.T.)  // vai abrir pelo banco LOCAL
...
...
...
Return
2-No caso das funções Leto_BeginTransaction(), Leto_RollBack(), Leto_CommitTransaction(): Imagino que sejam de uso opcional ? É que eu tentei gravar dados sem eles e funcionou.
Sim, são opcionais, mas é um recurso deveras importante e muito bom que hoje só tem em bancos de dados Relacionais.
3-Se usada a Leto_BeginTransaction(), dados enviados via função PutFile(), estes dados ficariam aguardando no Buffer até receber a Leto_CommitTransaction() ?
Isso mesmo, ou se você der um Leto_RollBack() ele desfaz o que foi feito até o inicio da transação.
4-Se a Leto_RollBack() for usada antes do CommitTransaction() os dados do Buffer seriam zerados e nenhum dados gravado no HD ?
Na verdade quando você inicia uma transação(Leto_BeginTransaction()) ele só registra no banco de dados, depois que você der um Leto_CommitTransaction(), se nesse meio tempo der algum erro ou você em vez de mandar o Leto_CommitTransaction() mandar um Leto_RollBack(), ele não envia ou desfaz o que foi feito apartir do ponto que iniciou a transação.
5-Como ficam estes dados, se antes do Leto_CommitTransaction(), a conexão fosse perdida por algum motivo fora do nosso controle ? Os dados são gravados ?
Sempre que você inicia um transação( Leto_BeginTransaction()) o letodb guarda essas supostas gravações no buffer local e somente commita(grava) no banco de dados(.dbf) depois que você der um Leto_CommitTransaction().
Em tempo: Acredito que conseguimos fazer uma baita salada de assuntos neste tópico. Não seria uma boa idéia separar os assuntos em 2 tópicos ?
Bom, acho que está bem mais relacionado a LETODB do que a tamanho de DBF, vou apenas adicionar o LETODB ao nome do topico.

Re: Tamanho máximo do DBF.

Enviado: 04 Set 2009 16:17
por Hasse
Valeu Leonardo e Asimoes.

As explicações são muito importantes e deixaram o assunto bem claro.

Obrigado.

Concordo que o tópico pode ter seu assunto alterado.