Clipper On Line • Ver Tópico - LetoDBf (fork) -> LetoDb com espinafre

LetoDBf (fork) -> LetoDb com espinafre

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Jairo Maia » 01 Nov 2018 18:41

Porter, como está definido o comando DataPath = em seu arquivo letodb.ini?

Se estiver dessa forma DataPath = C:\ESTOQUE\, então apenas use:
USE PRODUTOS.DBF EXCLUSIVE
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 01 Nov 2018 19:18

Olá Jairo,
Porter, como está definido o comando DataPath = em seu arquivo letodb.ini?
Se estiver dessa forma DataPath = C:\ESTOQUE\, então apenas use:


Estou tentando entender como abrir os arquivos com o LetoDBf, o DataPath está correto, DataPath= C:\ESTOQUE.
Eu uso arquivos temporários, esses arquivos existem tanto nas estações como no servidor, se abrir o arquivo dessa forma: USE PRODUTOS.DBF EXCLUSIVE,
como o sistema vai saber se é para abrir o arquivo que está no computador local no C:\ESTOQUE, ou é para abrir o arquivo que está no F:\ESTOQUE lá no servidor, existem arquivos que preciso abri-lo localmente no C:\ESTOQUE e outros no F:\ESTOQUE, entendeu.
Obrigado.

Harbour 3.2.0 dev
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 01 Nov 2018 20:12

No final coloque VIA "DBFCDX" ou "DBFNTX" para temporários local
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Jairo Maia » 01 Nov 2018 21:54

Olá Pessoal,

porter escreveu:Eu uso arquivos temporários
Não sei dizer sobre arquivos temporários, eu não uso.

porter escreveu:esses arquivos existem tanto nas estações como no servidor
As estações trabalham com arquivos independentes da rede? Desculpe mas não entendi.

porter escreveu: se abrir o arquivo dessa forma: USE PRODUTOS.DBF EXCLUSIVE,
como o sistema vai saber se é para abrir o arquivo que está no computador local no C:\ESTOQUE
Você terá que diferenciar arquivo que está local ou no servidor. Tem como, e falaremos sobre isso depois se você postar um trecho de código que um arquivo que tem que ser aberto na máquina local, e não no servidor. Tenho esse situação, tenha paciência para podermos ajudar. Poste um exemplo dessa situação e como você está tratando isso.

Nota: Se usar USE PRODUTOS.DBF EXCLUSIVE, o arquivo abero será o do servidor, desde que em seu .ini esteja como eu disse antes: DataPath = C:\ESTOQUE\

porter escreveu:existem arquivos que preciso abri-lo localmente no C:\ESTOQUE e outros no F:\ESTOQUE, entendeu.
Putz, acho que entendi. Abrir arquivo localmente é uma coisa, abrir no servidor é automático. Poste um exemplo que fica mais fácil explicar.

asimoes escreveu:No final coloque VIA "DBFCDX" ou "DBFNTX" para temporários local
Isso é definido no arquivo letodb.ini, definindo no comando Default_Driver = CDX ou NTX. Exemplo: Default_Driver = CDX
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 02 Nov 2018 07:04

A cláusula VIA é para informar qual RDD deseja utilizar,
LETO, DBFCDX ou DBFNTX

Se não informar vai utilizar o que foi definido em
RddSetDefault
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Jairo Maia » 02 Nov 2018 09:45

asimoes escreveu:A cláusula VIA é para informar qual RDD deseja utilizar,
LETO, DBFCDX ou DBFNTX
Sim. Quando mudei para o RDD LETO, também alterei todos os comandos USE, que eram poucos por esse como está no exemplo do Toledo:
DbUseArea( .T.,  "LETO", PathLeto + cArqDbf,  cAlias,  .T.  )
Sintaxe:
DbUseArea( [<lNewArea>]  , [<cRddName>]  , <cDatabase>  , [<cAlias>] , [<lShared>] , [<lReadonly>] , [<cCodePage>] , [<nConnection>] ) --> NIL
<lNewArea>
If .T. (true) is passed for <lNewArea>, the function selects the next unused work area before the database is opened. The default value is .F. (false), which opens the database in the current work area. If the current work area is used, all files are closed before the new database is opened.

<cRddName>
<cRddName> is an optional character string with the name of the RDD to use for opening the database file. It defaults to the return value of RddSetDefault().

<cDatabase>
This is a character string holding the name of the database file to open. It can include path and file extension. The default file extension is DBF.

<cAlias>
This is the symbolic alias name of the work area as a character string. It defaults to the file name of <cDatabase> without extension.

<lShared>
Specifying .T. (true) for <lShared> opens the database in SHARED mode. The default value depends on the SET EXCLUSIVE setting. If set to ON, <lShared> defaults to .F. (false).

<lReadonly>
Specifying .T. (true) for <lReadonly> opens the database in READONLY mode. The default value is .F. (false) which opens the file for read and write access.

<cCodePage>
This is a character string specifying the code page to use for character strings stored in the database. It defaults to the return value of HB_SetCodePage().

<nConnection>
This parameter specifies a numeric server connection handle. It is returned by a server connection function which establishes a connection to a database server, such as SR_AddConnection() of the xHarbour Builder SQLRDD. When <nConnection> is passed, the function opens a database on the server.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 02 Nov 2018 10:22

Putz, acho que entendi. Abrir arquivo localmente é uma coisa, abrir no servidor é automático. Poste um exemplo que fica mais fácil explicar.

Olá Jairo,
O arquivo ARQTEMP, está presente em todas as estações e no servidor, nele é inserido registros, e após terminar o processo, todos esses registros
do ARQTEMP, são inseridos em VENDAS, que existe somente no servidor, em seguida todos os registros de ARQTEMP são deletados, faço da seguinte forma:

SELECT 2
USE C:\ESTOQUE\ARQTEMP EXCLUSIVE
APPEND BLANK
REPLACE CODIGO WITH cCODIGO
REPLACE DESCRICAO WITH cDESCRICAO
REPLACE VALOR WITH cVALOR

SELECT 3
USE F:\ESTOQUE\VENDAS SHARED

SELECT 2 ; GOTO TOP
DO WHILE !EOF()
     cCODIGO := CODIGO
     cDESCRICAO := DESCRICAO
     cVALOR := VALOR
     SELECT 3
     APPEND BLANK
     REPLACE CODIGO WITH cCODIGO
     REPLACE DESCRICAO WITH cDESCRICAO
     REPLACE VALOR WITH cVALOR
     SELECT 2
     SKIP
ENDDO
SELECT 2
DELE ALL ; PACK


Harbour 3.2.0 dev
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Jairo Maia » 02 Nov 2018 11:23

Porter, quando você falou em arquivo temporário achei que seria um arquivo criado na memória. No seu caso, ambos são arquivos físicos, apenas um deles, ARQTEMP, recebe dados temporários, mas é um arquivo físico.

Vou sugerir da forma que faço. Além do RDD LETO, coloque também o RDD DBFNTX, mantendo como padrão o RDD LETO. Exemplo:
REQUEST LETO
REQUEST DBFCDX

Abaixo da Function Main coloque o RDD padrão:
Function Main()
...
...
RDDSetDefault( "LETO" )

E tente dessa forma, veja se vai funcionar:
SELECT 2
//USE C:\ESTOQUE\ARQTEMP EXCLUSIVE
DbUseArea( .F.,  "DBFCDX", "C:\ESTOQUE\ARQTEMP", "ARQTEMP",  .F.  )
APPEND BLANK
REPLACE CODIGO WITH cCODIGO
REPLACE DESCRICAO WITH cDESCRICAO
REPLACE VALOR WITH cVALOR

SELECT 3
//USE F:\ESTOQUE\VENDAS SHARED

// se na variavel DataPath de seu letodb.ini terminar com barra (\) use:
DbUseArea( .F.,  "LETO", "VENDAS", "VENDAS",  .T.  )

// se na variavel DataPath de seu letodb.ini estiver sem a barra no final use:
//DbUseArea( .F.,  "LETO", "\VENDAS", "VENDAS",  .T.  )

SELECT 2 ; GOTO TOP
DO WHILE !EOF()
     cCODIGO := CODIGO
     cDESCRICAO := DESCRICAO
     cVALOR := VALOR
     SELECT 3
     APPEND BLANK
     REPLACE CODIGO WITH cCODIGO
     REPLACE DESCRICAO WITH cDESCRICAO
     REPLACE VALOR WITH cVALOR
     SELECT 2
     SKIP
ENDDO
SELECT 2
ZAP
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 02 Nov 2018 14:30

Jairo, realmente se trata de um arquivo físico, me expressei mal, estou fazendo alguns testes com
USE C:\ESTOQUE\ARQTEMP EXCLUSIVE VIA "DBFCDX", até agora está dando certo, mas pretendo também testar
da forma que você sugeriu, irei postando os resultados, porquê com certeza, deverão ser feito mais ajustes.

Obrigado.
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Itamar M. Lins Jr. » 02 Nov 2018 20:20

Ola!
banco de dados danifica menos e os índices corrompem menos também quando ocorre por exemplo um pique de luz.
E parece que também à um ganho de velocidade na operações e outros benefícios tipo, acesso remoto/local via TcpIP, etc...

Seria isto ?

Sim.
Outra questão levantada. É abrir o DBF ou SGBD, qualquer. Podemos fazer isso, basta MUDAR no use "VIA LETO", "VIA DBFCDX"... Até "VIA SQLMIX" que abre o MariaDB, etc... Tudo junto.

Porter, com o Letodb vc não precisa mais trabalhar da forma que vc está trabalhando criando esses arquivos temporários(físico no HD) da estação. Não tem mais necessidade.
Quando lemos temporário pensamos ser um índice temporário ou na memória RAM.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor porter » 03 Nov 2018 14:38

Olá,

Com esse comando, USE arqPARAM SHARED, consigo abrir esse arquivo normalmente se executar o sistema no servidor,
mas se executar o sistema na estação para acessar esse mesmo arquivo lá no servidor, está dando o erro:

Error LETO/1001 Erro de abertura: arqPARAM

Aqui, se eu tentar conectar com o IP do servidor, não conecta, somente da certo se cPath = "//localhost:2812/"
executando o sistema pela estação.

cPath := "//192.168.0.202:2812/
PROCEDURE ConectaLetoDbf(cPath)
    nConect := leto_Connect( cPath)
    // Faz o teste de conexao
    IF nConect == -1
       SetColor( "GR+/B" )
      CLS
       nRes := leto_Connect_Err()
       IF nRes == LETO_ERR_LOGIN
          alert( "Falha ao Logar" )
       ELSEIF nRes == LETO_ERR_RECV
          alert( "Error ao conectar" )
       ELSEIF nRes == LETO_ERR_SEND
          alert( "Erro de envio" )
       ELSE
          MsgExclamation( "Nao conectado ao servidor: " + cPath )
       ENDIF
       Return .F.
     ENDIF
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor asimoes » 03 Nov 2018 16:33

127.0.0.1 é o IP local
Na computação, o termo localhost se refere à localização do sistema que está sendo usado. É um dispositivo loopback ao qual é atribuído o endereço IP 127.0. 0.1
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Jairo Maia » 03 Nov 2018 18:33

Olá Pessoal,

No servidor, identifique qual é o IP do servidor. Uma forma simples de fazer isso é NO SERVIDOR, ir ao prompt de comando e digitar: ipconfig. Identifique o IPv4 do servidor, abra o sistema na estação, e informe o IP de onde está instalado o LetoDBf, ou seja, o IP do servidor.

Nas estações, não precisa ser instalado o LetoDBf, apenas informar o IP de onde ele está instalado.

Figura1.jpg

Figura2.jpg

Guarde essa informação como achar melhor, eu optei por guardar em um arquivo .HBV em cada estação, deixando claro que no Servidor sempre deixo o IP fixo.

Adaptado a meus sistemas. Crédito: Toledo (em exemplo postado nesse fórum).

Nota: Sempre lembrando a importante colaboração do Itamar , precursor em compartilhar dicas e informações sobre o LetoDBf.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor fladimir » 03 Nov 2018 19:13

Jairo ou outro colega, mesmo q não trabalhe com indice temporario, mas q esta testando ou usa o LETO, se possível fazer o seguinte teste:

Crie um rotina teste em LETO pra acessar uma tabela de clientes por exemplo
Criar um indice temporario na memoria filtrando no indice via FOR algo, tipo q nasceram em outubro ou outro filtro
Depois chame um Browse e poste os resultados

Grato.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

LetoDBf (fork) -> LetoDb com espinafre

Mensagempor Jairo Maia » 04 Nov 2018 10:11

Olá fladimir,

Na verdade não trabalho com índice temporário, mas dá para montar um exemplo. Se nenhum colega se antecipar, assim que puder monto e posto aqui.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Anterior Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro