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(link is external).
LetoDB(link is external) foi desenvolvido pelo russo Alexander Kresin(link is external).
LetoDBf(link is external) é 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(link is external) 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(link is external)
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(link is external) e a Iphlpapi.lib(link is external), 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | ;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:
1 2 3 | #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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | #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:
1 | sc delete letodbf_service |
INSTALAR O LETODBF NO LINUX
Clique aí para ver como instalar o LetoDBf no Linux.
Downloads:




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