Clipper On Line • Ver Tópico - LetoDb e Harbour, como usar.

LetoDb e Harbour, como usar.

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

Moderador: Moderadores

 

LetoDb e Harbour, como usar.

Mensagempor FFreire » 05 Abr 2015 16:23

Prezados...

Estou implementando o LetoDB, consegui compilar, gerar as libs, tanto para MinGw, como para Minigui Extended (pois tenho 2 projetos, um console e outro Gui), mas estou me TRAVANDO no FILE(), configurei no letodb.ini, EnableFileFunc = 0, portanto não estou usando leto_FILE, mas insiste em dizer que a tabela tal, não existe...minha tabela se chama ADMIN.ADM, dai também configurei no letodb.ini, EnableAnyExt = 1, o que mais tenho que fazer... segui os passos e parei aqui... portanto, peço ajuda...

F.Freire
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 112
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

LetoDb e Harbour, como usar.

Mensagempor FFreire » 05 Abr 2015 17:02

O engraçado é que retiro o FILE...e dou sequencia...ele abre o arquivo ADMIN.ADM, pois vejo no manager, que esta aberto, mas não funciona se checar se o arquivo existe...segue como estou fazendo...

Aqui ele da msg que o arquivo não existe !!
// onde _PathAdm = "//127.0.0.1:2812/"
IF !FILE( _PathAdm + 'ADMIN.ADM' )
   TONE( 321, 2 )
   MSGBOX1( 'Arquivo Admin.ADM nÆo existe !!!', 'Erro...',,'&OK' )
   RETURN( .F. )
END


Mas aqui abre o arquivo normalmente
// na função NETUSE... esta ajustado para o leto ser o RDD

IF !NETUSE( _PathAdm + 'ADMIN.ADM', 'Adm', SHARE )
   MSGBOX1( Erro na abertura do arquivo...', 'Erro...',,'&OK' )
   RETURN( .F. )
END


O arquivo letodb.ini (que esta na pasta, onde esta o letodb.exe)
[Main]
; server port number;
Port = 2812

; connection timeout;
; TimeOut = -1

; path to a data directory on a server;
DataPath = c:\teste

; path and name of a log file;
Logpath = letodb.log

; default RDD to open files on server ( CDX/NTX );
Default_Driver = CDX

; memo type ( FPT/DBT ). Default: FPT for DBFCDX, DBT for DBFNTX;
; Memo_Type = FPT

; if 1, convert all paths to lower case;
Lower_Path = 0

; if 1, using of file functions ( leto_file(),
; leto_ferase(), leto_frename() is enabled;
EnableFileFunc = 0

; if 1, creating of data tables and indexes with
; any extention, other than standard ( dbf,cdx,ntx )
; is enabled;
EnableAnyExt = 1

; if 1, user authentication is necessary to
; login to the server;
Pass_for_Login = 0

; if 1, user authentication is necessary to
; use management functions ( Leto_mggetinfo(), etc. );
Pass_for_Manage = 0

; if 1, user authentication is necessary to
; have write access to the data;
Pass_for_Data = 0

; the path and name of users info file;
; Pass_File = "leto_users"

; if 1, the data passes to the network encrypted;
; Crypt_Traffic = 0

; if 0 (default, this mode server was the only from the
; start of a letodb project), the letodb opens all
; tables in an exclusive mode, what allows to increase
; the speed. If 1 (new mode, added since June 11, 2009),
; tables are opened in the same mode as client
; applications opens them, exclusive or shared, what
; allows the letodb to work in coexistence with other
; types of applications.
Share_Tables = 1

; The number of records to read into the cache
; Cache_Records = 10

; Maximum number of shared variables
; Max_Vars_Number = 10000

; Maximim size of a text variable
; Max_Var_Size = 10000

; Global function letodb RDDI_TRIGGER
; Trigger = <cFuncName>

; Global function letodb RDDI_PENDINGTRIGGER
; PendingTrigger = <cFuncName>

; Number of tables
; Tables_Max = 5000

; Number of users
; Users_Max = 500

; Debug level
; Debug = 0

; if 1, SET HARDCOMMIT OFF
; Optimize = 0

; SET AUTORDER setting
; AutOrder = 0

; _SET_FORCEOPT setting
; ForceOpt = 0

;[DATABASE]
Datapath = c:\teste
driver = cdx


F.Freire
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 112
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

LetoDb e Harbour, como usar.

Mensagempor Itamar M. Lins Jr. » 05 Abr 2015 18:55

Está correto.
File() não vai funcionar mesmo.
use: ENABLEFILEFUNC = 1, IF !LETO_FILE( _PathAdm + 'ADMIN.ADM' )

Se está no mesmo servidor use: FILE("c:\teste\admin.adm") sem o IP.

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 4489
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 157 vezes
Mens.Curtidas: 247 vezes

LetoDb e Harbour, como usar.

Mensagempor FFreire » 05 Abr 2015 18:57

Mas ja usei leto_file, da forma que vc colocou e também não funciona...habilitando EnableFileFunc = 1 em letodb.ini....

Ou tenho que quando for localhost...usar o caminho (c:\teste\...) para checar se o arquivo existe, e quando os dados estiverem em outra maquina/ip...dai posso usar o ip...é isso ?
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 112
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

LetoDb e Harbour, como usar.

Mensagempor Itamar M. Lins Jr. » 05 Abr 2015 20:05

Não.
Leto_File("//127.0.0.1:2812/adm.adm") tem que funcionar ai. Aqui funciona muito bem.

Aqui eu uso toda hora, e funciona.
Onde está o arquivo 'ADMIN.ADM' ?
O Leto só enxerga onde estiver configurado o arquivo.

; path to a data directory on a server;
DataPath = c:\teste

Coloque mais uma barra: DataPath = c:\teste\

E teste p/ ver se é isso.

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 4489
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 157 vezes
Mens.Curtidas: 247 vezes

LetoDb e Harbour, como usar.

Mensagempor FFreire » 09 Abr 2015 20:53

Nobre colega...

Batendo muita cabeça ainda com o Letodb...

Eu notei que onde esta o letodb.exe, é gerado um arquivo de log... dai percebi que quando carrego o serviço do leto... ele grava o seguinte no log...

04/09/15 20:45:00: Leto DB Server has been started.

Leto DB Server v.2.15 ! INIT: DataPath=, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10

04/09/15 20:45:00: C:\FFSoft\DESENV\hmg\letodb\bin\letoudf.hrb has been loaded.


Veja que o DataPath, esta em branco... mas no letodb.ini esta configurado C:\FF\, dai não entendi nada, o letodb.ini, esta no mesmo diretório do letodb.exe...

Se esta configurado DataPath = C:\FF\ e também ShareTables=1... pq esta lendo em branco e 0... onde tem que ficar o letodb.ini ??

F.Freire
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 112
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

LetoDb e Harbour, como usar.

Mensagempor FFreire » 09 Abr 2015 21:58

Outra dúvida....

Porque assim funciona...
x := leto_udf("UDF_CRIPTO",Nome,"R")
ALERT(X)


e assim não...dá ERROR LETO/1001 Função indefinida

zLetoDB := //127.0.0.1:2812/
_Chave   := 'LETO_UDF("UDF_CRIPTO",Nome,"R")'
_Tag     := ALLTRIM( (_ANtx)->Tag )
_NomeInd := zLetoDB+"Teste"

INDEX ON &(_Chave) TAG &(_Tag) TO &(_NomeInd)


Os 2 códigos no mesmo sistema...portanto, tudo que carrega para um, carrega para o outro...

To ficando mais careca do que ja sou !!!! kkkk

F.Freire
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 112
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

LetoDb e Harbour, como usar.

Mensagempor FFreire » 09 Abr 2015 22:32

Opa... baixei a versão 2.13 e apareceu conforme o letodb.ini... será que a versão 2.15 tem problemas ???
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 112
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

LetoDb e Harbour, como usar.

Mensagempor Itamar M. Lins Jr. » 09 Abr 2015 22:41

Estou usado a versão de hoje do SVN.
Coloque dessa forma seu letodb.ini

[MAIN]
Port = 2812             
Logfile = "letodb.log"   
DEFAULT_DRIVER = CDX     
DATAPATH = c:\clientes\xyz\
ENABLEFILEFUNC = 1
CRYPT_TRAFFIC = 0
PASS_FOR_LOGIN = 0
PASS_FOR_MANAGE = 0
PASS_FOR_DATA = 0
Share_Tables  = 1
Cache_Records = 100
[DATABASE]
DataPath = c:\clientes\xyz\
Driver = CDX

Leto DB Server v.2.15 ! INIT: DataPath=c:\clientes\xyz, ShareTables=1
, MaxUsers=500, MaxTables=5000, CacheRecords=100


Minúsculos/maiúsculos, etc... deixa da forma que está esse e teste. Aqui funciona.

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 4489
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 157 vezes
Mens.Curtidas: 247 vezes

LetoDb e Harbour, como usar.

Mensagempor Itamar M. Lins Jr. » 09 Abr 2015 22:59

...Função indefinida

O funcionamento é o mesmo de um motor SQL.
Use & ou () antes de indexar.

cQuery := " cod_client == '" + cCodCl + "' .and. dtos(vencimento) >= '"+dtos(dIni)+"' .and. dtos(vencimento) <= '"+dtos(dFim)+"'"
cOrdBy := " dtos(emissao) + cod_venda "

Index on &cOrdBy Tag re99  for &cQuery temporary eval {||oBar:Step(),.t.}

ou

cQuery := ""
If !empty(cCodFornecedor)
   cQuery += "'" + cCodFornecedor + "' == cod_fornec .AND. "
EndIf
If !Empty(cLoja)
   cQuery += " '" + cLoja + "' == loja .AND. "
EndIf
cQuery += " dtos(data_vcto) >= ["+DToS(dIni)+"] .AND. dtos(data_vcto) <= ["+DToS(dFim)+"] .AND. empty(data_pgto) "
cOrdBy := " dtos(data_vcto)+duplicata "
Index on &cOrdBy TAG pg99 FOR &cQuery temporary additive eval {||oBar:Step(),.T.}



Não pode ter função nenhuma, nem variáveis nas strings enviadas. Há não ser que tenha declarado elas no servidor.

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 4489
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 157 vezes
Mens.Curtidas: 247 vezes

LetoDb e Harbour, como usar.

Mensagempor FFreire » 09 Abr 2015 23:02

Sobre o letodb.ini... acabei de copiar conforme me passou e funcionou... devia ser alguma coisa no arquivo...tenho que habilitar alguma opção para enxergar as tabelas dentro do DATAPATH, pois por enquanto, estou tendo que copiar tudo na pasta principal, ou seja, se eu configurar DATAPATH=C:\TESTE\, esta lendo apenas o que esta em C:\TESTE\..... o que esta dentro das sub-pastas, não acha...alguma sugestão ?

Sobre o que relatei da função CRIPTO, agi assim:

Em um arquivo chamado LETOUDF.PRG ficou assim:

FUNCTION UDF_CRIPTO( nUserStru, aString, vTipo, Serie )

// aString  -- String a ser criptografada/descriptografada
// vTipo    -- Tipo 'C' Criptografa - 'R' Descriptografa
// Serie    -- Utilizada como base no calculo

LOCAL  cWord, cChave, nPos := 1, vChave := 0, nCnt, Chave := ""
LOCAL  cString := aString, nSerie, cRetr := ""

nSerie := STRZERO( Serie, 6 )
nSerie := VAL( SUBSTR( nSerie, 1, 1 ) ) + VAL( SUBSTR( nSerie, 2, 1 ) ) +;
          VAL( SUBSTR( nSerie, 3, 1 ) ) + VAL( SUBSTR( nSerie, 4, 1 ) ) +;
          VAL( SUBSTR( nSerie, 5, 1 ) ) + VAL( SUBSTR( nSerie, 6, 1 ) )

FOR nCnt = 10 TO 60
    Chave += CHR( nCnt + nSerie )
NEXT nCnt

DO WHILE nPos <= LEN( cString )
   cWord  := SUBSTR( cString, nPos, 1 )
   cChave := SUBSTR( Chave,   nPos, 1 )
   IF vTipo = "C"
      vChave := vChave + ASC( cChave )
      cRetr  := cRetr  + CHR( ASC( cWord ) + vChave )
   ELSEIF vTipo = "R"
      vChave := vChave - ASC( cChave )
      cRetr  := cRetr  + CHR( ASC( cWord ) + vChave )
   ENDIF
   nPos++
ENDDO

RETURN( cRetr )


Dai compilei dessa forma:
harbour letoudf.prg -gh -n -w -iC:\HARBOUR\INCLUDE


Gerou o arquivo letoudf.hrb, que coloquei na pasta que esta o letodb.exe... baixo o serviço e carrego novamente o serviço... consequentemente ele lê o arquivo com as funções e coloca no log assim:

04/09/15 23:16:12: Leto DB Server has been started.

Leto DB Server v.2.15 ! INIT: DataPath=c:\ff, ShareTables=1, MaxUsers=500, MaxTables=5000, CacheRecords=100

04/09/15 23:16:12: C:\FFSoft\DESENV\hmg\letodb\bin\letoudf.hrb has been loaded.


Dai como demonstrei acima, executando o LETO_UDF("UDF_CRIPTO",NOME."C")...funciona normal...só da erro quando tento gerar um indice.......o que poderia ser ???

Segui o que o TOLEDO, informou uns posts atrás, será que não fiz alguma coisa ???

F.Freire
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 112
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

LetoDb e Harbour, como usar.

Mensagempor Itamar M. Lins Jr. » 10 Abr 2015 01:04

C:\TESTE\..... o que esta dentro das sub-pastas, não acha...alguma sugestão ?


O leto enxerga as subpastas.
DATAPATH = c:\dados\

Ele vai enxergar por exemplo,
c:\dados\2015\

   if Leto_file(dServidor+mAno+"\"+ArqInv) //-> "MeuIp:2812\2015\inventario2015.dbf"

Atenção! Não coloque MeuIp:2812\c:\dados\2015\inventario2015.dbf, desta forma está errado!

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 4489
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 157 vezes
Mens.Curtidas: 247 vezes

LetoDb e Harbour, como usar.

Mensagempor Toledo » 10 Abr 2015 08:22

FFreire escreveu:executando o LETO_UDF("UDF_CRIPTO",NOME."C")...funciona normal...só da erro quando tento gerar um indice

Resta saber se é possível usar a função LETO_UDF() em uma macro na criação de índices.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3063
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 242 vezes
Mens.Curtidas: 240 vezes

LetoDb e Harbour, como usar.

Mensagempor FFreire » 10 Abr 2015 09:12

Ok... sobre ver nas sub-pastas, entendi, que devo informar ao letodb que o arquivo esta em determinado lugar, tinha entendido que era só apontar para a pasta principal e ele se encarregava de procurar os arquivos, da pasta principal indicada em diante... mas ficou claro.......Obrigado !

Sobre a questão de usar macro, gostaria de saber se alguém ja usou dessa forma, se não tiver jeito terei que fazer de outra forma... mas enfim... vamos ver se tem alguma utilização... fico no aguardo.....

Muito obrigado a todos... e vamos em frente !!!

F.Freire
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 112
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

LetoDb e Harbour, como usar.

Mensagempor FFreire » 10 Abr 2015 11:08

Prezados...

Novamente, venho solicitar ajuda, pois estou tentando o seguinte...

Como não esta funcionando. o esquema da macro na geração do indices, fiz isso:

// Atribuo ao leto a variavel
LETO_VARSET( "Main", "_Chave","Codigo", LETO_VCREAT )

// Se eu mandar exibir, ok também...
x := leto_varGet( "Main","_Chave" )
alert(x) // Exibe "Codigo" que é o que foi atribuido...

// Dai mando indexar...
zLetoDB := "//127.0.0.1:2812/"
INDEX ON LETO_UDF(zLetoDB+"UDF_CRIPTO",(_Chave),"R") TAG &_Tag TO &_NomeIndFim

E da erro...LETO/1003 Variável não existe...

Por favor... alguma luz ??? rs rs

F.Freire
Harbour 3.2.0+MiniGui Extended 16.02+BCC5 / HWGdebug / SIXCDX / PostgreSQL 9.5 / LetoDB 2.15 / Java8
fabiano@ffsoft.com.br
Avatar de usuário

FFreire
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 112
Data de registro: 19 Mai 2013 16:16
Cidade/Estado: Andirá-PR / Itaporanga-SP
Curtiu: 0 vez
Mens.Curtidas: 3 vezes

Anterior Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


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