Uso de letodb

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
Eu agora não sei o que deve ser.
Tente usar aspas invés de colchetes.
Deve não ter nada a ver, mas quem sabe ?
xarq = [\paiva\sdata.dbf]
Mudar para:
xarq := "\paiva\sdata.dbf"

Acostumei a usar := invés de =, porquê = e == são comparações e o dois pontos ":" é atribuição.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

Uso de letodb

Mensagem por paiva »

Itamar BOM dia

nenhum desse achou nao seria o INI do letodb (lá embaixo mostro ele)

Obs ....:
ele abre os arquivos correto no servidor
a performance em um relatório com criação de índice é de segundos tipo 55 segundos e no leto 57 segundos
nos browser quase nao se nota diferença

no Terminal (NOTE) não abre o banco no servidor nem a PAU rs
já liberei porta etc e NÃO conecta o LETO
Não sei se preciso fazer alguma coisa lá no terminal



\dbdc\paiva\sdata.dbf e \dbdc\leto.txt

xarq = "paiva\sdata.dbf"
IF LETO_FILE(xarq)
msgstop("a achou: "+xarq)
endif
xarq = "PAIVA\SDATA.DBF"
IF LETO_FILE(xarq)
msgstop("b achou: "+xarq)
endif
xarq := "paiva\sdata.dbf"
IF LETO_FILE(xarq)
msgstop("c achou: "+xarq)
endif
xarq := "PAIVA\SDATA.DBF"
IF LETO_FILE(xarq)
msgstop("d achou: "+xarq)
endif
IF LETO_FILE("paiva\sdata.dbf")
msgstop("e achou: "+xarq)
endif
IF LETO_FILE("paiva\sdata.dbf")
msgstop("f achou: "+xarq)
endif
IF LETO_FILE("\paiva\sdata.dbf")
msgstop("g achou: "+xarq)
endif
IF LETO_FILE("paiva\SDATA.DBF")
msgstop("h achou: "+xarq)
endif
IF LETO_FILE("paiva\sdata.dbf")
msgstop("i achou: "+xarq)
endif
IF LETO_FILE("\dbdc\paiva\sdata.dbf")
msgstop("j achou: "+xarq)
endif
IF LETO_FILE("sdata.dbf")
msgstop("k achou: "+xarq)
endif
IF LETO_FILE("sdata")
msgstop("l achou: "+xarq)
endif
IF LETO_FILE("paiva\SDATA")
msgstop("m achou: "+xarq)
endif


xarq = "leto.txt"
IF LETO_FILE(xarq)
msgstop("a achou: "+xarq)
endif
xarq = "LETO.TXT"
IF LETO_FILE(xarq)
msgstop("b achou: "+xarq)
endif
xarq := "leto.txt"
IF LETO_FILE(xarq)
msgstop("c achou: "+xarq)
endif
xarq := "LETO.TXT"
IF LETO_FILE(xarq)
msgstop("d achou: "+xarq)
endif

IF LETO_FILE("leto.txt")
msgstop("e achou: "+xarq)
endif
IF LETO_FILE("LETO.TXT")
msgstop("f achou: "+xarq)
endif


[MAIN]
Port = 3029
DataPath = c:\dbdc
Default_Driver = CDX
Lower_Path = 0 ; 1, converter todos os caminhos para minúsculas 2812 3029
EnableFileFunc = 0 ; 1, Ativa leto_file(), leto_ferase(), leto_frename()
EnableAnyExt = 0 ; 1, é Ativado a criação de arquivos de dados (DBF)
Pass_for_Login = 0 ; 1, autenticação do usuário é necessária p/ acessar
Pass_for_Manage = 0 ; 1, a autenticação necessária p/ func Leto_mggetinfo()
Pass_for_Data = 0 ; 1, a autenticação necessária acesso aos dados
Pass_File = "leto_users" ; caminho, arquivo de informações dos usuários
Crypt_Traffic = 0 ; 1, passa os dados pela a rede cripitografado
Share_Tables = 1 ; 1, uso das bases compartilhado com outras aplicacoes

[DATABASE]
DataPath = c:\dbdc
Driver = CDX
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
no Terminal (NOTE) não abre o banco no servidor nem a PAU rs
Ativar regra no firewall. Isso é normal.
Se não souber, só para testes desligue o firewall.
Quando ver que funciona, ligue o firewall e ative a regra, incluir o programa LetoDB na regra de entrada.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
EnableFileFunc = 0 ; 1, Ativa leto_file(), leto_ferase(), leto_frename()
Ora vc mostra com 1 ora vc mostra com 0
O correto é 1 para ativar as funções do Leto no servidor.(tem que reiniciar.)

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

Uso de letodb

Mensagem por paiva »

boa tarde
tem algum MISTERIO

no server demora 8 a 10 segundos o relatorio inclusive com criacao de indice
lá no note demora 2 minutos rs

BEM + do que se fosse em rede normal

Por acaso teria um exe para testar aqui para ver a velocidade se é+ ou - a mesma que ai

caso seja seria problema aqui nos prg caso contrario alguma coisa na configuração da rede/pc/leto


Paiva
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
lá no note demora 2 minutos rs
Desligue o compartilhamento para ter certeza que está usando o protocolo TCP e não rede compartilhada.

Eu já falei aqui, que não é a mesma coisa com Harbour. xHarbour não usa LZ(compressão) de dados. Não sei qual é a diferença, sei que pela lógica deverá ficar mais lento que no Harbour, mas mesmo assim muito mais rápido que rede compartilhada.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Bom dia, alguem teve sucesso com LETODBF???
Estou com problema nas funções que funciona bem em DBFCDX

DBCLOSEALL()
e
DBCLOSEAREA()

Da erro nas duas funções, alguém sabe o que poderia ser?, alguma configuração do LETODB.INI??


Grato
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
Um tanto de gente usa LetoDb e LetoDBf
Eu uso há mais de 16 anos! Desde 2008!
Eu não sei o quê vc está fazendo ai. Uma vez que não tem como eu e outras pessoas testar nada o que vc faz.
Faça exemplos pequenos demonstrando o erro e que todos nós possamos testar em nossos computadores.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Boa tarde.
Em anexo os arquivos do fonte, do executável, do log e dos arquivos de configuração do ambiente, estes são iguais os que uso no meu sistema.

Quando tiro a função DbClearRelationAll() do TESTE da o erro no anexo.
Tentei no meu sistema e mesmo com a função DbClearRelationAll() ocorre o erro, mas pelo que vi está ocorrendo quando há arquivo relacionado com outra tabela, mas só no ambiente LETO, já no ambiente DBFCDX nada ocorre.

Mas no TESTE em anexo da certo com as tabelas relacionadas.

Só consegui por enquanto no meu sistema substituindo a função dbcloseall() pelo LETO_CLOSEALL()
Esta correto e posso usar esta substituição?
usando em no meu sistema mas em teste da forma abaixo, mas deste jeito funciona.

Código: Selecionar todos

....
NewDbCloseAll()
....

Function NewDbCloseAll()
If oVia_RDD=="LETO" //variavel identificada no arquivo INI se o ambiente é LETO ou DBFCDX
    Leto_CloseAll()
Else
   DbCloseAll()
EndIf   
Return .T.
Já na função DBCLOSEAREA() fiz uma modificação para e funciona perfeitamente

Código: Selecionar todos

Function NewDbCloseArea(oArea)
If Select(oArea) > 0
   &oArea->(dbClearRelation())
   &oArea->(DbCloseArea())
EndIf
Return .T.
************** ABAIXO O CODIGO DO TESTE FUNCIONANDO, MESMO DO ANEXO.

Código: Selecionar todos

REQUEST LETO
REQUEST DBFCDX


#Include "winuser.ch"
#include "rddleto.ch"  // defines do RDD
#include "dbinfo.ch"   // Header file for the RDD API Index OrderInfo and DBInfo support
#include "leto_std.ch" // traduz os comandos para o LETO
#include "cmdleto.h"

Function Main
WVW_SETMAINCOORD(.T.) 
WVW_SetVertCaret(.F.) 
WVW_enableshortcuts(0,.T.) 
wvw_enablemaximize(0, .T.) 
WVW_maximize() 
wvw_noclose(1) 

   oDB_Server:="192.168.1.11"
   oDB_Porta :="2812"
   oDB_Path  :="//"+oDB_Server+":"+oDB_Porta+"/"  
   RDDSetDefault("LETO")
 	nPasta     :="\LETO\" ///PASTA DO BANDO DE DADOS
 	nConect := leto_Connect( oDB_Path ) 
 	w_vTXT:=""
 	If nConect == -1
 	   bRet:=.F.
      nRes := leto_Connect_Err()
      If     nRes == LETO_ERR_LOGIN
         w_vTXT:="Falha ao Logar: "+oDB_PATH+"..."
      ElseIf nRes == LETO_ERR_RECV
         w_vTXT:="Erro ao conectar: "+oDB_PATH+"..."
      ElseIf nRes == LETO_ERR_SEND
         w_vTXT:="Erro de envio de pacote: "+oDB_PATH+"..."
      Else
         w_vTXT:="Não conectado ao servidor: "+oDB_PATH+"..."
		EndIf
   Else
      w_vTXT:="Servidor conectado: "+oDB_PATH+"..."
      WVW_MESSAGEbox(,w_VTXT,,MB_OK)
	EndIf
   
nCurWindow :=WVW_nNumWindows() 

nCurWindow:=WVW_NOpenWindow(,0,0,24,90)
WVW_SetTitle(,"Só teste com leto") 

If !file(nPasta+"CIDADES.DBF")
   aStru:={}
   aAdd(aStru, {"CODIGO","C", 03, 0})
   aAdd(aStru, {"CIDADE", "C",60, 0})
   aAdd(aStru, {"ESTADO", "C",02, 0})
   aAdd(aStru, {"CEP", "C", 8, 0})
   DbCreate(nPasta+"CIDADES.DBF",aStru)
   DbUseArea(.T.,"LETO",nPasta+"CIDADES.DBF",,.T.)
   For iX:= 1  to 100
		 aUF:=If(iX<=10,"MS",If(iX<=20,"SP",If(iX<=50,"RS",If(iX<=80,"PB","MT"))))
		 aCep:=If(iX<=10,"79500000",If(iX<=20,"82800000",If(iX<=50,"12452000",If(iX<=80,"66540000","77550000"))))
       DbAppend()
       Field->CODIGO:=Strzero(ix,3)
       Field->CIDADE:="NOME DA CIDADE "+Strzero(iX,3)
       Field->ESTADO:=aUF
       Field->CEP   :=aCep
       
   NEXT
   Index On "CODIGO" To CIDADES
   DbCloseAll() 
  
EndIf

For iC:= 1 to 10 //pra criar 10 dbfs
   If !file(nPasta+"NOMES_"+Strzero(iC,2)+".DBF")
      aStru:={}
      aAdd(aStru, {"CODIGO","C", 03, 0})
      aAdd(aStru, {"NOME", "C", 60, 0})
      aAdd(aStru, {"ENDERECO", "C", 60, 0})
      aAdd(aStru, {"CIDADE", "C", 03, 0})
      aAdd(aStru, {"SEXO", "C", 1, 0})
   
	   DbCreate(nPasta+"NOMES_"+Strzero(iC,2)+".DBF",aStru)
      DbUseArea(.T.,"LETO",nPasta+"NOMES_"+Strzero(iC,2)+".DBF",,.T.)
      For ix:= 1  to 100
          DbAppend()
          Field->CODIGO:=Strzero(ix,3)
	       Field->NOME  :="NOME DO CLIENTE "+Strzero(iX,3)
	       Field->ENDERECO:="LOCAL"
	       Field->CIDADE:=StrZero(ix,3)
	       Field->SEXO:="M"
          DbCommit()	
      Next    
      cArq:="NOMES_"+Strzero(iC,2)
      Index On "CODIGO" To &cArq
   EndIf   
   DbCloseAll() 
Next

For iX:= 1 to 10
   DbUseArea(.T.,"LETO",nPasta+"CIDADES.DBF","CIDADES_"+Strzero(iX,2),.T.)  
   DbSetIndex("CIDADES.CDX")
   DbUseArea(.T.,"LETO",nPasta+"NOMES_"+Strzero(iX,2)+".DBF","NOMES_"+Strzero(iX,2),.T.)
   DbSetIndex("NOMES_"+Strzero(iX,2)+".CDX")
   DbSetRelation("CIDADES_"+Strzero(iX,2),{|| codigo },codigo)
   
Next
WVW_MESSAGEbox(,"Banco de dados aberto e relacionado",,MB_OK)
For iv:=1 to 10
    WVW_MESSAGEbox(,"Banco de dados selecionado: NOMES_"+StrZero(iv,2)+" ( "+Str(iv,2)+" de 10)",,MB_OK)
    DbSelectArea("NOMES_"+StrZero(iv,2))
    BROWSE()
Next    
WVW_lCloseWindow()
nCurWindow--      
DbClearRelationAll()  //AQUI, SE RETIRAR ESTA FUÇÃO, DA O ERRO QUE ESTA NO LOG
DbCloseAll()
WVW_MESSAGEbox(,"Banco de dados fechado",,MB_OK)

Return Nil


FUNCTION DbClearRelationAll()
	 
LOCAL nArea
 
   For nArea := 1 To 255
      If Used()
         (nArea)->( DbClearRelation() )
      Endif
   Next
	 
RETURN NIL

Não sei se consegui ser claro, qualquer coisa só perguntar.
Valeu, grato.
Anexos
teste.rar
Conteudo: PRG, HBM, HBP, EXE e LOG
(885.58 KiB) Baixado 843 vezes
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Uso de letodb

Mensagem por JoséQuintas »

Não sei sobre o resto, mas aqui está errado.

Código: Selecionar todos

FUNCTION DbClearRelationAll()
	 
LOCAL nArea
 
   For nArea := 1 To 255
      If Used()
         (nArea)->( DbClearRelation() )
      Endif
   Next
	 
RETURN NIL
Faltou selecionar a área, pra fazer o teste em cada uma.
Se aceitar: (nArea)->(Used())
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Boa noite.
Verdade, não me atentei a este detalhe, vou refazer.
Obrigado
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Boa tarde.
Alguns testes depois parece que o sistema esta funcionando perfeitamente em LETO.
Vou rodar mais testes para só depois colocar em produção.

Grato a todos pela ajuda recebida.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Boa tarde a todos, olha eu aqui novamente (rsrsrs)
Ainda não é para confirmar que todos os modulos estão ok.
Probleminha e falta de conhecimento do LETO.

Por acaso LETO trabalha com outras extensões de arquivos, tais como REM, RET, CONF etc.
Motivo: configurei no leto.ini
Mask = *.dbf,*.fpt,*.cdx,*.conf,*.rem,*.ret
no entanto não obtive exito de leitura.

Trecho do sistema de geração de boletos.

Código: Selecionar todos

oCBR_PastaIntegrador:= AllTrim(CEMP1000->PASTA_LIC)
oCBR_ArquivoLicenca:= AllTrim(CEMP1000->PASTA_LIC)+AllTrim(CEMP1000->FILE_LIC)  //aqui recebe a pasta já alterada para LETO e o nome do arquivo
oCBR_PastaRemessa:= AllTrim(CEMP1000->PASTA_REM)

 If MyFile(oCBR_ArquivoLicenca) .And. oBanco == CEMP1000->BANCO //localiza na pasta o arquivo CONF 
     hRead     :=HB_ReadIni(oCBR_ArquivoLicenca) //aqui da erro o HB_READINI não esta lendo 
Descrição...........: Bound error
Sub-system..........: 1132

Grato a todos
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Uso de letodb

Mensagem por Itamar M. Lins Jr. »

Olá!
hRead :=HB_ReadIni(oCBR_ArquivoLicenca) //aqui da erro o HB_READINI não esta lendo
Só vai ler local o INI. Não é comando do leto!
Primeiro use leto_memoRead() e depois para escrever lá no lugar dele no servidor leto_memoWrite()

Talvez assim funcione:

Código: Selecionar todos

hRead     :=HB_ReadIni(leto_memoRead(oCBR_ArquivoLicenca))
Acredito que tenha intendido pq não lê o arquivo .ini.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Uso de letodb

Mensagem por leandrolinauer »

Boa noite, entendi.
Como o hb_readini() não é comando leto ele não lê na pasta do leto com o Path leto.
Mas pq ele não lê com a pasta compartilhada e com o caminho completo como via DBFCDX?
Quando se coloca a pasta para o leto gerenciar ele bloqueia outros tipos de acesso, lembrando que a pasta ainda está compartilhada.

Vou fazer testes com memoread do leto.
Obrigado.
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Responder