letodb e letodbf ?

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

Moderador: Moderadores

paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

letodb e letodbf ?

Mensagem por paiva »

BOM dia

uso o xhb comercial ANTIGO

em 2020 testei com o xharbour 123 Free o letodb

estou tentando testar denovo agora.

Como NÃO tenho tempo para NADA rs e com a Memória "fraca 71 anos" nao me lembro do que ocorreu na epoca

duvidas:

o letodb / letodbf são realmente dois ?

eles foram feitos em Harbour ? ++ podem ser utilizados com o Xharbour tambem correto ?

devo usar o letodb ou o letodbf ?

antes estava invertendo os \ por / ai deu erro entao deixei com \ mesmo e nao deu erro

ao fazer dbfsetdriver() esta exibindo DBFNTX Como passar para DBFCDX ?
no XHB uso o RMDBFCDX BEM + rápido... + se puder usar o dbfcdx no leto... já estarei satisfeito

SE o letodbf for MELHOR/+ pratico, depois de testar com, o letodb fica facil passar para o letodbf ?

resolvendo o problema de passar para dbfntx para dbfcdx vou verificando o que vai ocorrer reportarei aqui rs

Pelo fato das bases estarem em um servidor a re-indexações e índices temporários TAMBEM deveram estar lá correto ?

é transparente ? ou terei que informar que será gerado lá ?

set filter e/ou clausulas WHEN FOR em índices preciso ter cuidado ? (existem limitações ?)

desde já agradeço

Paiva





desde já agradeço
Editado pela última vez por Itamar M. Lins Jr. em 10 Mar 2024 14:06, em um total de 2 vezes.
Razão: O presente tópico foi movido da seção Contribuição, Dicas e Tutoriais, uma vez que seu conteúdo não tem relação com os objetivos daquela seção.
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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
o letodb / letodbf são realmente dois ?
Sim são dois.
Use o LetoDbf do Elch.
Antes de responder o resto, vou te perguntar porque vc não pode usar o Harbour ?
Tem algum problema que impede seu uso ?
O problema principal de usar o LetoDbf com o xHarbour é que não vai ativar alguns recursos na conexão com servidor. Não vai usar compactação de dados por exemplo. Alias eu nem sei direito se o servidor do Letodbf pode ser compilado com o xHarbour.
São duas etapas. Primeiro gerar a LIB para linkar junto com seu .exe a segunda é ter o SERVIDOR LetoDBf compilado usando MT... me parece que o xHarbour não aceita isso.

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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
Mais um detalhe que se não me falha a memória, eu li "alhures" pelo Przmek(foi quem fez o RMCDX) do xHarbour.
Que o CDX do Harbour tem essa tecnologia do RMDBFCDX.

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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
Pelo fato das bases estarem em um servidor a re-indexações e índices temporários TAMBEM deveram estar lá correto ?
é transparente ? ou terei que informar que será gerado lá ?
Não vai precisar cuidar disso. Quem faz isso é o LetoDbf, é nele que vamos dizer onde ele vai, MONITORAR a pasta e sub-pastas com os DBFs.
No nosso PRG fica da forma que está. Salvo se vc usa assim: "use \pasta01\clientes.dbf"
Não vai mais precisar indicar o local(pasta) basta mudar para: "use clientes.dbf"
E outras funções do lado do servidor.
Por exemplo, saber se tal arquivo .dbf existe do lado do servidor, usamos: "IF LETO_FILE("clientes.dbf")
Pq FILE("clientes.dbf") vai checar no HD/SSD da maquina cliente. Então temos comandos do LADO DO SERVIDOR e do LADO DO CLIENTE, que são esses mesmos que usamos.
Então a segunda pergunta foi respondida, pois temos comandos(funções) para o servidor e para as estações.

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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
set filter e/ou clausulas WHEN FOR em índices preciso ter cuidado ? (existem limitações ?)
Não tem limitações, apenas que vc precisa revelar as "VARIÁVEIS".
FOR &MInha_VARIAVEL mudar para FOR +" ' " +Minha_VARIAVEL + " ' "

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

letodb e ltodbf ?

Mensagem por paiva »

Itamar, Obrigado pela sua atenção "Que SEMPRE vc dá")

no INICIO usava Harbour depois passei para o Xharbor e para o Comercial "Para usar o RDD na epoca" que acabei não utilizando

Atualmente uso xhb(antigo) + Wvw + Hwgui

vou ver depois o Impacto para voltar para o Harbour

após conseguir testar com o letoDB verei o letoDBF rs

continuando o teste:
consegui o dbfcdf com o comando RddSetDefault( "DBFCDX" )

agora deu problema no copy file \dbdc\wcrpeda.dbf to &pdir\crpedad.dbf Erro de criação

por ser lá no servidor rs seria outro comando ? tipo: leto_copy rs

Obrigado
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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
Atenção! Não confundir! Quando vc executa sua aplicação e o Letodb na mesma maquina ou seja vc é o servidor e cliente ao mesmo tempo.
Se vc roda esse comando:

Código: Selecionar todos

copy file \dbdc\wcrpeda.dbf to &pdir\crpedad.dbf Erro de criação
No servidor, vc vai ter um tipo de ação SEMPRE LOCAL.(não passa pelo letodb)
Erro de criação não é do servidor.
Tem essa pasta ai ? &pdir\
Acredito que não é erro do LetoDb.

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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
após conseguir testar com o letoDB
Tem Bugs e a velocidade não é a mesma.
Por isso larguei o LetoDB e passei a usar o LetoDBf.

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

letodb e ltodbf ?

Mensagem por paiva »

Vou continuar os testes pelo menos para LEMBRAR rs

estou distinguindo se é acesso DBF ou LETO (aproveitando a estrutura da epoca do SQL)

caso dê algum problema com o LETO ele vai poder trabalhar em rede


estando setado LETO as bases sera tratada pelo LETO.exe

se um funcionário entrar lá no servidor ele TERA que tratar as bases como DBF e NAo pelo LETO ? para ser + rápido
ou porque daria problema se tratado pelo LETO ?

Penso que pelo servidor TAMBEM seria trado pelo TETO

se não for desta forma TEREI que saber se esta usando em um terminal ou lá no servidor.
nesse caso poderia fazer um if file("\xxxxx\yyyyy") se existir é que esta no servidor OU acessando ele por TS.

isso pelo que vi o FILE() pega do PC que esta sendo usado

correto ?

Obrigado
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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
se um funcionário entrar lá no servidor ele TERA que tratar as bases como DBF e NAo pelo LETO ? para ser + rápido
ou porque daria problema se tratado pelo LETO ?
Vai depender de como vc vai configurar o TRATAMENTO que o LetoDbf vai dar ás bases DBF.

Extraído do manual (Readme.txt)
As opções realmente importantes geralmente são: DataPath, LogPath, Share_Tables, No_Save_WA.
Se o servidor usar um conjunto de arquivos DBF existente, adapte 'Default_Driver' se DBFNTX tiver sido usado

Código: Selecionar todos

No_Save_WA = 1 - modo de servidor para manipulação interna de tabelas de banco de dados
                                     1 cada dbUseArea() causará uma operação real de abertura de arquivo pelo sistema operacional,
                                        idêntico ao que o cliente solicitou, portanto as áreas de trabalho no servidor são iguais às
                                        no lado do cliente. [Número WA, alias, condições de filtro, relações]
                                     0 cada tabela é aberta apenas uma vez, esta área de trabalho é 'trocada' entre o cliente
                                        solicitações de. portanto, apenas uma conexão terá acesso à tabela por vez.
                                        Nenhuma relação ativa no servidor, os nomes de alias no servidor são diferentes de
                                        o cliente.
                                     Recomende '1' se você planeja executar funções no lado do servidor (UDF).
       Share_Tables = 0 - outras tabelas de acesso simultâneo de software usadas pelo servidor,
                                     que altera o bloqueio de registro lógico ou físico - na dependência:
                                     # Não_Salvar_WA = 0
                                     0 abre todas as tabelas em modo exclusivo, o que leva a
                                        aumento de desempenho como, por ex. bloqueios de registro/arquivo não são aplicados pelo sistema operacional.
                                     1 tabelas são abertas no mesmo modo [compartilhado/exclusivo] do cliente
                                        aplicativos os abriram, o que permite ao LetoDB trabalhar em coexistência com
                                        outros aplicativos [não usuários do LetoDB] simultaneamente nas mesmas tabelas DBF.
                                     # Não_Salvar_WA = 1
                                     1 bloqueios físicos de registro/arquivo definidos com o sistema operacional podem ser visualizados por outros
                                     0 apenas bloqueio lógico interno, não respeita outros bloqueios de registro
                                     *SAMBA:*
                                       trabalhar em conjunto com o serviço de arquivos Samba precisa de tratamento/configuração muito especial
                                       e têm limites de possibilidades - consulte o capítulo 4.4
Meu arquivo LetoDb.ini é:

Código: Selecionar todos

Port = 2812              
Logfile = "letodb.log"   
DEFAULT_DRIVER = CDX
DATAPATH = c:\database
ENABLEFILEFUNC = 1
CRYPT_TRAFFIC = 0
PASS_FOR_LOGIN = 0
PASS_FOR_MANAGE = 0
PASS_FOR_DATA = 0
Share_Tables  = 0
Cache_Records = 50
No_Save_WA = 1
[DATABASE]
DataPath = c:\database
Driver = CDX
Não sei se o LetoDb tem esse Share_table e No_save_WA.
Esses dois ai que vai permitir vc abrir o DBF com outro .exe feito pelo Harbour. Precisa obedecer a regra de tratamento do Harbour DBFCDX/NTX...


Isso não impede de vc acessar sempre pelo LetoDbf, pq a velocidade é a mesma. No servidor um pouco mais rápido quase imperceptível.
Eu sempre evitei acessar com os DBFs abertos(por outras CPUs). Quando acesso via hbrun.exe por exemplo. Mas das vezes que acessei funcionou sem problema.
Sempre lembrar de colocar SET EXCLUSIVE OFF e DESTRAVAR unlock depois do rlock.

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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
isso pelo que vi o FILE() pega do PC que esta sendo usado

correto ?
Isso. As funções que rodam "dentro" do servidor geralmente tem o prefixo "leto_" -> leto_file(), leto_ferase(), leto_frename() etc ...

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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
se não for desta forma TEREI que saber se esta usando em um terminal ou lá no servidor.
nesse caso poderia fazer um if file("\xxxxx\yyyyy") se existir é que esta no servidor OU acessando ele por TS.
Atenção DESLIGUE o compartilhamento da PASTA!
Pode causar uma confusão ai e não saber se está usando LetoDb ou "PASTA COMPARTILHADA"
Desligue o TS também em caso de sucesso de uso do LetoDB, pelo menos evite acessar(bem isso pode variar) não sei como é ai. Geralmente TS roda programa não oficial da M$ e tive alguns problemas usando ele com portas abertas no firewall, pegou virus, isso já tem uns 6 anos e parei de usar.

Depois, irei mover esse tópico para banco de dados.
Aqui não é para colocar dúvidas, mas sim, Contribuições, Dicas e Tutoriais -> Coisas Prontas.
Se bem que tem um misto disso, mas começou com uma pergunta. Enfim...

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

letodb e ltodbf ?

Mensagem por paiva »

existe algum doc que mostre os comando LETO ?

leto_file, ferase, frename, ferror, memoread , NAO vi memowrite ..

o copy file tem ? uso MUITO esse.

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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
Estão no arquivo Readme.txt
Segue, uma parte dos comandos/funções dentro dele.

Código: Selecionar todos

7.6 Funções de arquivo

  IMPORTANTE: todos os comandos de arquivo iniciam no servidor com o DataPath, então <cFileName> é um caminho relativo
  para o caminho raiz definido em letodb.ini com DataPath. Apenas UM (1) único ".." é permitido.
  Exceção: nomes de arquivos começando com "mem:" redirecionam para a RAM do servidor (virtual HbNetIO FS)

  Por razões de portabilidade é recomendado usar nomes de arquivos simples, sem (ou vazio) prefixo de servidor
  -- após estabelecer inicialmente uma conexão com Leto_Connect().
  Se todo o prefixo de conexão "//..:../" for omitido, a conexão atualmente ativa será usada;
  se a não conexão ainda estiver disponível, ela será estabelecida por esse prefixo de conexão.
  Depois que a conexão for estabelecida, você pode deixar de lado todo esse prefixo IP:porta...

  Alternativamente, no estilo ANTIGO, o parâmetro <cFileName> de todas as funções de arquivo *pode* conter um
  string de conexão para o servidor letodb em um formato:
  //Endereço_IP:porta/[mem:][\]nome_do_arquivo
  onde IP_address também pode ser um nome DNS como exemplo "localhost".
  Este estilo antigo pode ser uma alternativa se estiver trabalhando com vários servidores LetoDBf simultaneamente,
  mas isso também pode ser feito alternando a conexão ativa com Leto_Connect().

  Dica experiente: no diretório include está o cabeçalho: "letofile.ch".
  Ao aplicá-lo como cabeçalho padrão adicional: "-u+letofile.ch" na linha de comando/ .hbp para hbmk2,
  todas as funções de arquivo local em sua fonte funcionam no lado do servidor. Para que algumas funções funcionem,
  A opção de configuração 'Allow_UDF' deve ser definida para o servidor.
  Que grupo de funções funciona no servidor e quais grupos continuam a atuar localmente no cliente,
  pode ser configurado no cabeçalho letofile.ch' - por padrão, todos exceto o grupo: "Fxxx()" é
  pré-processado para usar variantes Leto_F*().


       Leto_FError([lAskServer]) ==> nErro
  Retorna um código de erro definido por (algumas, não para todas) funções de arquivo no cliente.
  NOVO: com o opcional <lAskServer> definido como TRUE ( .T. ) uma consulta é enviada ao servidor.

       Leto_File( cFileName[, @cFilePath ] ) ==> lFileExists
  Determine se existe arquivo no servidor, análogo à função File().
  <cFileName> é sempre relativo ao <DataPath> de 'letodb.ini'
  Se <cFileName> for um nome de arquivo *simples* sem elemento de caminho e <@cFilePath> for fornecido por referência,
  além de um caminho de pesquisa ser definido com Leto_SetPath(), <@cFilePath> contém [sub]diretório mais nome de arquivo
  onde <cFileName> foi encontrado.

       Leto_FCopy( cFilename, cFileNewName[, lMove ] ) ==> -1 se falhou
  Copie um arquivo no servidor com um novo nome no servidor.
  Com o conjunto opcional <lMove> == true (.T.), a fonte é excluída posteriormente.

       Leto_FErase(cFileName) ==> -1 se falhou
  Exclua um arquivo no servidor.

       Leto_FRename( cFileName, cFileNewName ) ==> -1 se falhou
  Renomeie um arquivo: <cFileName> ==> <cFileNewName>. <cFileNewName> deve ficar sem
  cadeia de conexão.

       Leto_MemoRead(cNomeArquivo) ==> cString
  Retorna o conteúdo do arquivo no servidor como uma sequência de caracteres, análoga a
  Função MemoRead().
  ! FIXO ! Se o último caractere do arquivo for o caractere 26 == strg-z, ele será removido.

       Leto_MemoWrite(cFileName, cBuf) ==> lSucesso
  Grava uma string de caracteres em <cBuf> em um arquivo no servidor, análogo a
  Função MemoWrit().
  ! FIXO ! Observe que o caracter '26' == 'strg-z' é anexado a <cBuf>.

       Leto_Directory( [ cDir ] [, cnAttr] ) ==> aDiretório
  Retorna o conteúdo do diretório no servidor no mesmo formato da função Directory().
  Sem nenhum <cDir> fornecido, o diretório raiz do DataPath é usado.

       Leto_DirExist(cPath) ==> lDirExists
  Determine se existe diretório no servidor, análogo à função Leto_File(), mas
  para diretórios

       Leto_DirMake(cPath) ==> -1 se falhou
  Cria um diretório no servidor. [renomeado, anteriormente: Leto_MakeDir]

       Leto_DirRemove(cPath) ==> -1 se falhou
  Exclui um diretório no servidor

       Leto_FileSize( cFileName ) ==> -1 se falhou
  Retorna um comprimento de arquivo no servidor

       Leto_FileTime( cFile[, dDate][, cTime][, nReturnType] ) ==> vários retornos
  Ele consulta _ou_ define uma data/hora/timestamp para o arquivo <cFile>.
  Sem nenhum dos opcionais <dDate> e <cTime>, uma consulta é feita no servidor,
  então dependendo do valor retornado <nReturnType> é:
  '0' = booleano para sucesso, '1' = carimbo de data / hora, '2' = dDate, '3' = cTime com Milliseg,
  '4' = cTime abreviado de 8 caracteres, '5' = nJulianDay.
  Se for fornecido <dDate> e/ou <cTime> _ou_ um carimbo de data/hora para <dDate>, então esta data e hora será
  ser definido para o arquivo. Se for deixado de fora <dDate> ou <cTime>, o valor faltante será obtido do
  arquivo existente, também conhecido como um determinado <dDate> mas faltando <cTime> apenas altera a data do arquivo, mas não o tempo do arquivo,
  e apenas <cTime> irá alterar o tempo do arquivo, mas não a data do arquivo.
  <dDate> e/ou <cTime> devem ser NIL o
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

letodb e ltodbf ?

Mensagem por Itamar M. Lins Jr. »

Olá!
leto_file, ferase, frename, ferror, memoread , NAO vi memowrite ..
Pois é isso que estou explicando o LetoDBf é mais completo. Tem mais funções que o LetoDb.

Talvez na versão sua não seja a ultima do Letodb.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder