Categoria:
TUTORIAL DE INSTALAÇÃO LETODBf COMO SERVIÇO DO WINDOWS
Aqui aprenderemos desde a compilação à linkeedição e uso do LetoDb que é uma alternativa disponível gratuita para o famoso Advantage Database Server, vulgo ADS, por sua velocidade e consistência dos arquivos com índices que nunca davam problema.
Esse tutorial é um trabalho original desenvolvido por Josivan Nascimento em conjunto com Anderson Cardoso.
A retrocompatibilidade do LetoDB com o xHARBOUR foi conseguida por Rolf Beckmann conhecido no Github por Elchs.
LetoDB foi desenvolvido pelo russo Alexander Kresin.
LetoDBf é um fork (versão melhorada) do LetoDB criado por Rolf Beckmann e disponibilizado no Github.
__ __ ____ ____ __
/ / ___ / /_____ / __ \/ __ )/ _|
/ / / _ \/ __/ __ \/ / / / __ | |_
/ /___/ __/ /_/ /_/ / /_/ / /_/ /| _|
/_____/\___/\__/\____/_____/_____/ |_|
Tendo dito, vamos lá!
1º BAIXANDO O LETODBf
O que vamos solicitar ao programador é baixar codigo aberto do letodbf. Neste exemplo vamos usar o fork do Elchs que é o completo, baixe a última versão pelo link do GitHub abaixo:
2º COMPILANDO O SERVIDOR LETODBf
Após isso descompacte na raiz do seu PC. Renomeie de letodbf-master para letodbf.
Dentro da pasta você verá 3 arquivos que um você tem que compilar pra gerar a sua lib, já os demais tem duas versões:
- letodb.hbp
- letodbsvc.hbp
LETODBf server
O letodb.hbp é o servidor leto que vc pode por no menu iniciar do windows, porém se vc tiver tela de logon só vai startar o leto após o cliente logar.
LETODBf service
O letodbsvc.hbp ele starta como serviço do windows não havendo necessidade de logar -acho muito melhor- com seu ambiente de compilação devidamente configurado e as variáveis de ambiente.
Para compilar digite: hbmk2 letodbsvc.hbp
O procedimento acima vai gerar o servidor letodb.
3º COMPILAÇÃO DAS LIBs DO LETODBF
São as LIBs que você deverá linkar no seu sistema.
Compilando as LIBs do LETODBF para HARBOUR
Digite: hbmk2 rddleto.hbp // tudo corretamente criará a rddleto, a biblioteca .lib no xHarbour e .a no Mingw ou Harbour.
Se der problema na compilação, baixe a versão mais nova do HB32 e tente novamente.
Compilando as LIBs do LETODBF para xHARBOUR
Restaurada a compatibilidade com o xHarbour!
elchs 2023-05-23 06:00 UTC+0100 Rolf 'elch' Beckmann
Basta compilar com make_b32 all
Daí procure suas libs na respectiva pasta. Na verdade você vai precisar linkar apenas a RDDLETO.LIB e...
Deu erro ainda, né? É porque o Elch precisou separar 2 LIBs do Windows a Ws2_32.lib e a Iphlpapi.lib, então se você compilar só com a RDDLETO vai dar 2 erros de funções que não existem. Entretanto, estas LIBs estão na pasta do BCC58/LIB/PSDK.
Calma que vou te ensinar a colocar tudo no lugar!
Atualizando as configurações do BCC58
Você vai precisar mexer naqueles 3 arquivos que ficam na pasta BCC58\BIN: BCC32.CFG, ILINK.CFG e TLINK32.CFG para incluir aquele caminho da PSDK onde estão as libs do Windows necessárias:
BCC32.CFG
-I"C:\bcc58\include;C:\bcc58\include\dinkumware"
-L"C:\bcc58\lib;C:\BCC58\lib\psdk"
ILINK32.CFG
-L"C:\bcc58\lib;C:\BCC58\lib\psdk"
TLINK32.CFG
/LC:\BCC58\lib;C:\BCC58\lib\psdk
Inserindo as LIBs do Windows com o HBMAKE
Por fim, você precisa incluir as tais libs WS2_32.LIB e IPHLPAPI.LIB separadas por espaço em branco na variável USERLIBS com o HBMAKE desta forma:
Agora sim! Tudo pronto!
4º INSTALANDO O LETODBf SERVICE
Antes de instalar o Letodbf como serviço do Windows é necessário configurar o Firewall para liberar a porta 2812.
1º PASSO: Configurando o Firewall do Windows para o LetoDBf
Vamos criar regras de entrada do Firewall no Windows para que o serviço possa funcionar no Protocolo TCP, porta 2812, aplicada a Domínio, Particular e Público.
No Windows 10 você irá em:
Painel de Controle\Todos os Itens do Painel de Controle\Windows Defender Firewall
Depois clique no menu do lado esquerdo "Configurações avançadas".
No Windows 10 você irá em:
Regras de Entrada > Nova Regra
Daqui pra frente é tudo igual
Coloque aí a porta 2812 e clique em Avançar.
Depois selecione "Permitir a conexão" e clique em Avançar.
Em seguida aplique as regras ao Domínio, Particular e Público como na foto abaixo:
Em seguida, crie um nome para esta regra: Letodbf
Clique em Concluir!
PRIMEIRO PASSO CONCLUÍDO COM SUCESSO!
2º PASSO: Instalando o LetoDBf como serviço do Windows
Abra o MS-DOS como administrador do sistema.
Entre na pasta onde está o arquivo e chame-o passando o parâmetro "install".
Digite: letodb install
Após a instalação não pode renomear, mover nem excluir a pasta e/ou os arquivos.
Recomendo copiar os arquivos para o diretório C:\WINDOWS\SYSTEM32 ou C:\WINDOWS\SYSTEM64 justamente para ninguém mexer.
Tem que compilar para 32 bits ou 64 bits. Se tentar instalar no Windows 64 bits compilado em 32 bits não funciona.
Depois disso pode-se observar o serviço em execução:
É aí que mostra o serviço do Windows instalado e se ele está parado ou executando.
Daí você inicia o serviço ou dá um net start LetoDBf_Service pelo prompt do DOS para iniciar o serviço, enquanto que, para parar o serviço dê um net stop LetoDBf_Service .
Agora vejamos a configuração do letodb.ini:
;Server = 192.168.2.47 ;IP = 192.168.2.47 Port = 2812 DataPath = C:/DADOS/ ;LogPath = /tmp Default_Driver = CDX ;Lock_Scheme = 6 Memo_Type = FPT Share_Tables = 1 No_Save_WA = 1 Lower_Path = 0 EnableFileFunc = 1 EnableAnyExt = 1 Allow_UDF = 1 Pass_for_Login = 0 Pass_for_Manage = 0 Pass_for_Data = 0 Pass_File = leto_users Cache_Records = 21 ;Max_Vars_Number = 1000 ;Max_Var_Size = 67108864 ;Tables_Max = 999 ;Users_Max = 99 Debug = 1 Optimize = 1 ;AutOrder = 0 ;ForceOpt = 0 ;TimeOut = 360 ;Zombie_Check = 0 ;Server_User = advantage ;Server_UID = 1000 ;Server_GID = 4 ;BC_Services = letodb; ;BC_Interface = eth2 ;BC_Port = 2812 ;SMB_SERVER = 1 DataBase =C:/DADOS/ Backup = /tmp/backup Mask = *.dbf,*.fpt,*.cdx Lock = 1 Seconds = 30 Wait = 1 ArcCmd = tar -cvzf /tmp/backup/leto.tar.gz /tmp/backup/*
Observe as linhas sensíveis destacadas. É basicamente o que você deve ou pode mudar, ou seja, o diretório de instalação dos bancos de dados e o RDD sendo CDX ou NTX. O CDX é mais rápido e melhor, enquanto que, o NTX é o nativo.
Se não for especificado um endereço IP então será adotado o localhost que é 127.0.0.1.
TESTANDO A CONEXÃO ENTRE O APLICATIVO E O SERVIDOR
Na pasta utils\manager temos alguns utilitários. Para testar a conexão você pode executar o utilitário CONSOLE <endereço IP> em modo console ou o MANAGE em modo Windows compilado com a lib gráfica HWGUI.
CONSOLE
No caso do localhost, chame CONSOLE 127.0.0.1.
A imagem acima ilustra um programa chamado letotest.exe que está com um banco de dados chamado CADASTRO.DBF aberto. Tagname são os nomes dos índices e Key as chaves de classificação.
Podemos perceber que está funcionando. Esse teste foi feito com as LIBs para xHarbour que o Elchs conseguiu recuperar a compatibilidade e estão disponíveis para download abaixo a versão compilada com xHarbour 1.2.3 com BCC5.8 que também está disponível para download.
MANAGE
O manage já é um aplicativo Windows. Basta clicar em "GO" para conectar, vai pedir usuário e senha, caso não tenha colocado senha no arquivo .ini então é só clicar em OK.
LETODBF x SET DEFAULT TO
Se você usa SET DEFAULT TO então pode dar problema no teu sistema. Isso porque o DATAPATH que está no LETODB.INI já faz justamente esse trabalho, portanto vai dar conflito.
Sugestão: Crie um "User Define" __LETODBF na compilação para fazer as adaptações necessárias se você estiver usando o LETODBF. Daí você só usa o SET DEFAULT se não estiver usando o LETODBF, assim:
#IFNDEF __LETODBF SET DEFAULT TO (xPATH) #ENDIF
PARTE FINAL: USANDO O LETODBF NO SEU SISTEMA
O exemplo abaixo considera que você criou o user define __LETODBF
#include "inkey.ch" #INCLUDE "GETEXIT.CH" #INCLUDE "SET.CH" #INCLUDE "COMMON.CH" ***************************************************** *** DEFINIR TIPO DE BANCO DE DADOS PADRÃO: DBFCDX *** ***************************************************** ANNOUNCE RDDSYS REQUEST DBFCDX ANNOUNCE FPTCDX REQUEST DBFFPT Request ordfor ********************************** *** CODEPAGE E CHARSET ********************************** REQUEST HB_LANG_PT REQUEST HB_CODEPAGE_PT850 // PARA INDEXAR CAMPOS ACENTUADOS ********************************** *** SERVIDOR DE BANCO DE DADOS *** ********************************** #IFDEF __LETODBF // servidor LETODBF #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 "letofile.ch" // traduz as funções para o LETO REQUEST LETO REQUEST RDDLETO REQUEST RDDInfo #ENDIF *************************************************** *************************************************** Function Main() *************************************************** *************************************************** PUBLIC nDBFPORT:=2812, nHotbuf := 100, nTimeOut := 6000 *************************************************** *** CONFIGURAÇÃO DO BANCO DE DADOS PADRÃO ********* *************************************************** RDDSETDEFAULT("DBFCDX") RDDREGISTER( "DBFCDX", 1 ) // RDT_FULL SET AUTOPEN OFF SET OPTIMIZE ON SET HARDCOMMIT OFF // É MELHOR DAR UM DBCOMMIT() NO FINAL DE CADA TAREFA SET DELETED ON #IFDEF __LETODBF RDDSETDEFAULT( "LETO" ) #ENDIF *************************************************** *** IDIOMA PORTUGUÊS, CHARSET 850 ***************** *************************************************** HB_LangSelect("PT") HB_SetCodePage("PT850") // PARA INDEXAR CAMPOS ACENTUADOS SET(_SET_LANGUAGE, "PT") // XHB 100 ******************************** * CONFIGURAÇÃO DO AMBIENTE: SETs ******************************** SET(_SET_MESSAGE, 23) // _SET_MESSAGE 36 SET(_SET_MCENTER, .F.) // _SET_MCENTER 37 Set(_SET_VIDEOMODE ,159) // mouse no xharbour 40 SETMODE(43,80) SETMOUSE(.t.) SETBLINK(.T.) // PISCA A COR SE TIVER * NA COR DE FUNDO SET SCOREBOARD OFF SET DATE BRITISH SET EPOCH TO YEAR(DATE())-50 SET MESSAGE TO 24 SET TIME FORMAT TO "hh:mm" SET CONFIRM ON SET WRAP ON SETCANCEL(.F.) // IMPEDE ALT+C OU CONTROL+BREAK WMODE(.F.,.F.,.F.,.F.) // Determines on which side windows are allowed to be moved off the screen. aCOLOR := {"N+/N", "W/N", "W+/N"} SET CURSOR OFF ******************************** CLS #IFDEF __LETODBF ** LETODBF ********** xPath := "//127.0.0.1:2812/" // ENDEREÇO IP DO LETO, LOCALHOST PADRÃO. cDBFUSER := "" cDBFPASS := "" // FAZ CONEXÃO IF leto_Connect( xPath, cDBFUSER, cDBFPASS, nTimeOut, nHotBuf) == -1 ALERT("Nenhum LetoDBF Server encontrado - Erro: " + leto_Connect_Err( .T. ) ) QUIT ELSE // LetoDBf Server 3.00 // =================== cLETO := LETO_GetServerVersion() ? cLETO ? REPLICATE("=", LEN(cLETO)) LETO_DBDRIVER( "DBFCDX", "FPT", 512 ) ? "DBF DATABASE DRIVER:", LETO_DBDRIVER()[ 1 ], "MEMOTYPE:", LETO_DBDRIVER()[ 2 ] ? "RDD:", ALLTRIM(RddSetDefault()),; ", DBF EXTENSION:", ALLTRIM(hb_rddInfo( RDDI_TABLEEXT )),; ", INDEX EXTENSION:" + INDEXEXT() ? "Memo extension:", ALLTRIM( hb_rddInfo( RDDI_MEMOEXT )),; "blocksize:", hb_rddInfo( RDDI_MEMOBLOCKSIZE ) ? "Lockscheme:", ALLTRIM(STR(hb_rddInfo( RDDI_LOCKSCHEME ))) LETO_TOGGLEZIP( 1 ) ? "NETWORK TRAFFIC COMPRESSION:", Iif( LETO_TOGGLEZIP() > 0, "ON", "OFF" ) ? "----------------------------------------------" ? ENDIF #ENDIF // O CAMINHO DESTE BANCO DE DADOS ESTÁ NO DATAPATH DO LETODB.INI // FAÇA UM TESTE RODANDO O EXE EM OUTRA PASTA DIFERENTE. // EXECUTE A FERRAMENTA "console 127.0.0.1" PARA MONITORAR A CONEXÃO USE CADASTRO ALIAS CAD SHARED New SET INDEX TO ("CADASTRO"+INDEXEXT()) CAD->(DBGOTO(5)) ? CAD->RAZAO ? CAD->FANTASIA ? CAD->CNPJ inkey(0) DbCommitAll() #IFDEF __LETODBF Leto_CloseAll() Leto_Disconnect() #ELSE DbCloseAll() #ENDIF
No seu EXIT PROCEDURE ou antes do QUIT não esqueça de finalizar a aplicação dando LETO_CLOSEALL() e LETO_DISCONNECT().
Caso você use SET RELATION então antes de fechar tudo você deve limpar esses relacionamentos com SET RELATION TO ou DbClearRelation().
DESINSTALAR O SERVIÇO LETODBF NO WINDOWS
Caso queira desinstalar o LETODB como serviço do Windows, dê um "service delete" no prompt de comando como administrador assim:
sc delete letodbf_service
INSTALAR O LETODBF NO LINUX
Clique aí para ver como instalar o LetoDBf no Linux.
Comentários
Erros ao compilar a versão indicada
Comentário:
Olá
Uso o xHarbour 123 não comercial com o BCC 7.30, como devo proceder para compilar?
Clodoaldo Monteiro
(86) 98859-0236
Baixe o xHarbour 123 com o BCC58 nesse site
Comentário:
Baixe o xHarbour 123 com o BCC58 aqui: https://linguagemclipper.com.br/dicas/xharbour/download
Acabei de disponibilizar o rddleto.lib compilado com o xHarbour 123 + BCC58 que baixei da web e compilou normal aqui junto com o meu sistema.
Usando xHarbour v1.2.3 Rev. 10264 + BCC 5.8, DBFCDX e SIBRA para imprimir relatórios.
Páginas