Página 7 de 13
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 01 Nov 2018 18:41
por Jairo Maia
Porter, como está definido o comando
DataPath = em seu arquivo letodb.ini?
Se estiver dessa forma
DataPath = C:\ESTOQUE\, então apenas use:
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 01 Nov 2018 19:18
por porter
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
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 01 Nov 2018 20:12
por asimoes
No final coloque VIA "DBFCDX" ou "DBFNTX" para temporários local
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 01 Nov 2018 21:54
por Jairo Maia
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
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 02 Nov 2018 07:04
por asimoes
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
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 02 Nov 2018 09:45
por Jairo Maia
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:
Código: Selecionar todos
DbUseArea( .T., "LETO", PathLeto + cArqDbf, cAlias, .T. )
Sintaxe:
Código: Selecionar todos
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.
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 02 Nov 2018 10:22
por porter
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:
Código: Selecionar todos
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
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 02 Nov 2018 11:23
por Jairo Maia
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:
Abaixo da Function Main coloque o RDD padrão:
E tente dessa forma, veja se vai funcionar:
Código: Selecionar todos
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
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 02 Nov 2018 14:30
por porter
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.
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 02 Nov 2018 20:20
por Itamar M. Lins Jr.
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.
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 03 Nov 2018 14:38
por porter
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.
Código: Selecionar todos
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
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 03 Nov 2018 16:33
por asimoes
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
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 03 Nov 2018 18:33
por Jairo Maia
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.
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.
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 03 Nov 2018 19:13
por fladimir
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.
LetoDBf (fork) -> LetoDb com espinafre
Enviado: 04 Nov 2018 11:11
por Jairo Maia
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.