Página 6 de 16
LetoDb e Harbour, como usar.
Enviado: 05 Abr 2015 16:23
por FFreire
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
LetoDb e Harbour, como usar.
Enviado: 05 Abr 2015 17:02
por FFreire
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 !!
Código: Selecionar todos
// 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
Código: Selecionar todos
// 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
LetoDb e Harbour, como usar.
Enviado: 05 Abr 2015 18:55
por Itamar M. Lins Jr.
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.
LetoDb e Harbour, como usar.
Enviado: 05 Abr 2015 18:57
por FFreire
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 ?
LetoDb e Harbour, como usar.
Enviado: 05 Abr 2015 20:05
por Itamar M. Lins Jr.
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.
LetoDb e Harbour, como usar.
Enviado: 09 Abr 2015 20:53
por FFreire
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
LetoDb e Harbour, como usar.
Enviado: 09 Abr 2015 21:58
por FFreire
Outra dúvida....
Porque assim funciona...
e assim não...dá ERROR LETO/1001 Função indefinida
Código: Selecionar todos
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
LetoDb e Harbour, como usar.
Enviado: 09 Abr 2015 22:32
por FFreire
Opa... baixei a versão 2.13 e apareceu conforme o letodb.ini... será que a versão 2.15 tem problemas

LetoDb e Harbour, como usar.
Enviado: 09 Abr 2015 22:41
por Itamar M. Lins Jr.
Estou usado a versão de hoje do SVN.
Coloque dessa forma seu letodb.ini
Código: Selecionar todos
[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
Código: Selecionar todos
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.
LetoDb e Harbour, como usar.
Enviado: 09 Abr 2015 22:59
por Itamar M. Lins Jr.
...Função indefinida
O funcionamento é o mesmo de um motor SQL.
Use & ou () antes de indexar.
Código: Selecionar todos
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.
LetoDb e Harbour, como usar.
Enviado: 09 Abr 2015 23:02
por FFreire
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:
Código: Selecionar todos
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
LetoDb e Harbour, como usar.
Enviado: 10 Abr 2015 01:04
por Itamar M. Lins Jr.
C:\TESTE\..... o que esta dentro das sub-pastas, não acha...alguma sugestão ?
O leto enxerga as subpastas.
Ele vai enxergar por exemplo,
c:\dados\2015\
Código: Selecionar todos
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.
LetoDb e Harbour, como usar.
Enviado: 10 Abr 2015 08:22
por Toledo
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,
LetoDb e Harbour, como usar.
Enviado: 10 Abr 2015 09:12
por FFreire
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
LetoDb e Harbour, como usar.
Enviado: 10 Abr 2015 11:08
por FFreire
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