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 Toledo » 26 Jun 2014 15:17

Minduim escreveu:Toledo;

no post anterior, entendo que você implementou a função 'volserial' no 'leto' de sua aplicação;
observe na 'imagem 001' e 'imagem 002' que o retorno da função é sempre em relação ao driver 'C';
você também observa isto ou estou fazendo algo errado?

Amigo, nas funções que você criar no arquivo letoudf.prg, obrigatoriamente o primeiro parâmetro em cada função (mesmo que a função não tenha nenhum parâmetro) tem que ser nUserStru, então a sua função ficaria assim:
function UDF_VOLSERIAL( nUserStru, cLabel )

Agora, quando for chamar a função com Leto_Udf(), não precisar passar este parâmetro nUserStru, por exemplo:
PathServ   :=  "//localhost:2812/"
nSerial := Leto_Udf(PathServ+"UDF_VOLSERIAL","C:\")

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: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

LetoDb e Harbour, como usar.

Mensagempor Minduim » 26 Jun 2014 16:06

Toledo;

agradeço sua pronta atenção;
segue abaixo a 'imagem 002' corrida
Anexos
imagem 002.jpg
imagem 002
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

LetoDb e Harbour, como usar.

Mensagempor Itamar M. Lins Jr. » 26 Jun 2014 20:17

Ola!
A função Leto_directory() só funciona no PATH do LetoDb. Só "enxerga" através do LetoDb.

Se no LetoDb está assim:
cPath := "//localhost:2812/MeuDB/"

Não adianta pedir p/ ele enxergar fora Leto_Directory("//localhost:2812/User/Documents/"...)

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LetoDb e Harbour, como usar.

Mensagempor Minduim » 03 Jul 2014 10:26

bom dia colegas;

a implementação do letodb em meu sistema esta quase pronta;
agora estou tentando juntar os programas 'LETOTRAY.PRG' E 'MANAGE.PRG' que estão na pasta '\LETODB\UTILS' e estou encontrando alguma dificuldade;

1 - ao clicar em 'STAR SERVER', no arquivo de log aparece a mensagem:
LetoDB service has had some problems:       1063


2 - ao clicar em 'USERSINFO', apresenta a mensagem de erro:
Error BASE/1004  No exported method: HIDE
Called from ->HIDE(0)
Called from letotray_manage.prg->USERSINFO(80)
Called from letotray_manage.prg->(b)MAIN(30)
Called from source\winapi\hwindow.prg->ONCOMMAND(528)
Called from source\winapi\hwindow.prg->(b)HMAINWINDOW(231)
Called from source\winapi\hwindow.prg->HMAINWINDOW:ONEVENT(317)
Called from ->HWG_ACTIVATEMAINWINDOW(0)
Called from source\winapi\hwindow.prg->HMAINWINDOW:ACTIVATE(306)
Called from letotray_manage.prg->MAIN(37)

HWGUI 2.18 Build 1
Date:07/03/14
Time:10:19:39


arquivo letotray+manage
#include "hwgcompat.ch"
#include "hbclass.ch"  // manage.prg
#include "hwgui.ch"  // manage.prg
#include "hxml.ch"  // manage.prg
#include "rddleto.ch"  // manage.prg

Static cPath
Static cIp := '127.0.0.1'
Static nPort := 2812

Function Main
Local oMainWindow, oTrayMenu, oIcon := HIcon():AddResource("ICON_1")
Private oApp  // manage.prg

   oApp := HApp():New() // manage.prg

   cPath := DiskName() + ":\" + CurDir() + "\"

   IF ! File( cPath + "letodb.exe" )
      MsgInfo("letodb.exe not found")
      Return nil
   ENDIF

   INIT WINDOW oMainWindow MAIN TITLE "LetoDB server"

   CONTEXT MENU oTrayMenu
      MENUITEM "Start letodb" ACTION StartServer()
      MENUITEM "Stop letodb"  ACTION StopServer()
      MENUITEM "UsersInfo"    ACTION UsersInfo( cIp )  // manage.prg
      SEPARATOR
      MENUITEM "Exit"         ACTION EndWindow()
   ENDMENU

   oMainWindow:InitTray( oIcon,, oTrayMenu, "LetoDB server" )

   ACTIVATE WINDOW oMainWindow NOSHOW
   oTrayMenu:End()
   Return Nil

Function StartServer
  ShellExecute( cPath + "letodb.exe",,, cPath )
  Return nil

Function StopServer
  ShellExecute( cPath + "letodb.exe",, "stop", cPath )
  Return nil

Static func Connect
   Return Leto_Connect("//" + cIp + ":" + LTrim(Str(nPort)) + "/") != -1

Static Function UsersInfo( cAddress )  // manage.prg
   oApp:nItemCurr := 0
   IF cAddress != Nil
      IF ( arr := GetIpFromPath( "//" + cAddress + "/" ) ) != Nil
         cIp := arr[1]
         nPort := arr[2]
         oApp:nItemCurr := Ascan( oApp:aServers, cIp )
      ENDIF     
   ENDIF

   INIT WINDOW oApp:oMainWnd MAIN TITLE "Server management utility" ;
     AT 200,0 SIZE 600,400 FONT HFont():Add( "Georgia",0,-15,,204 )

   InfoUsers()
   
   oApp:oBtnKill:Hide()
   IF oApp:nItemCurr > 0
      oApp:oCombo:SetItem( oApp:nItemCurr )
   ENDIF
   ACTIVATE WINDOW oApp:oMainWnd
   Return Nil

Static Function InfoUsers() // manage.prg
   Local aInfo, i, nUsers
   IF oApp:lSend
      oApp:nRequest = 2
      Return .T.
   ENDIF

   oApp:lSend := .T.
   IF ( aInfo := leto_MgGetUsers() ) == Nil
      oApp:lSend := .F.
      Return .F.
   ENDIF
   oApp:lSend := .F.

   oApp:oBtnLock:Hide()
   oApp:oBtnKill:Show()
   nUsers := Len( aInfo )
   oApp:oBrw1:aArray := Array( nUsers, 5 )
   FOR i := 1 TO nUsers
      oApp:oBrw1:aArray[i,4] := aInfo[i,1]
      oApp:oBrw1:aArray[i,1] := aInfo[i,2]
      oApp:oBrw1:aArray[i,2] := aInfo[i,3]
      oApp:oBrw1:aArray[i,3] := aInfo[i,4]
      oApp:oBrw1:aArray[i,5] := Padl(Ltrim(Str(Int((Val(aInfo[i,5])%86400)/3600))),2,'0') ;
         +":"+ Padl(Ltrim(Str(Int((Val(aInfo[i,5])%3600)/60))),2,'0') +":"+ ;
         Padl(Ltrim(Str(Int(Val(aInfo[i,5])%60))),2,'0')
   NEXT

   IF oApp:nInfoType != 2
      oApp:nInfoType := 2
      oApp:oBrw1:aColumns := {}
      oApp:oBrw1:AddColumn( HColumn():New( "Ip",{|v,o|o:aArray[o:nCurrent,1]},"C",16,0 ) )
      oApp:oBrw1:AddColumn( HColumn():New( "Host",{|v,o|o:aArray[o:nCurrent,2]},"C",18,0 ) )
      oApp:oBrw1:AddColumn( HColumn():New( "Module",{|v,o|o:aArray[o:nCurrent,3]},"C",18,0 ) )
      oApp:oBrw1:AddColumn( HColumn():New( "Timeout",{|v,o|o:aArray[o:nCurrent,5]},"C",15,0 ) )
      oApp:oBrw1:bPosChanged := Nil
      oApp:oBrw1:bPosChanged := {||Tables4User()}
      oApp:oBrw1:lChanged := .T.
      oApp:oBrw1:nCurrent := oApp:oBrw1:rowPos := 1
   ENDIF
   oApp:oBrw1:Refresh()
   Tables4User()
   Return .T.

Static Function Tables4User() // manage.prg
   Local aInfo, i, nTables
   IF !Empty( oApp:oBrw1:aArray ) .AND. ;
         Len( oApp:oBrw1:aArray ) >= oApp:oBrw1:nCurrent .AND. ;
         Valtype( oApp:oBrw1:aArray[oApp:oBrw1:nCurrent] ) == "A" .AND. ;
         Len( oApp:oBrw1:aArray[oApp:oBrw1:nCurrent] ) >= 4
      oApp:lSend := .T.
      IF ( aInfo := leto_MgGetTables( oApp:oBrw1:aArray[oApp:oBrw1:nCurrent,4] ) ) == Nil
         oApp:lSend := .F.
         oApp:oBrw2:aArray := {}
      ELSE
         oApp:lSend := .F.

         nTables := Len( aInfo )
         oApp:oBrw2:aArray := Array( nTables,2 )
         FOR i := 1 TO nTables
            oApp:oBrw2:aArray[i,2] := aInfo[i,1]
            oApp:oBrw2:aArray[i,1] := aInfo[i,2]
         NEXT
      ENDIF
   ELSE
      oApp:oBrw2:aArray := {}
   ENDIF

   IF oApp:oBrw2:aColumns == Nil .OR. Len(oApp:oBrw2:aColumns) == 3
      oApp:oBrw2:aColumns := {}
      oApp:oBrw2:AddColumn( HColumn():New( "Name",{|v,o|o:aArray[o:nCurrent,1]},"C",24,0 ) )
      oApp:oBrw2:lChanged := .T.
   ENDIF
   oApp:oBrw2:Refresh()
   Return Nil

Static Function GetIpFromPath( cPath ) // manage.prg
   Local nPos1, nPos2, nPos3, cSub
   IF Left( cPath,2 ) != "//" .OR. ( nPos1 := At( ":",cPath ) ) == 0
      Return Nil
   ENDIF
   cSub := Substr( cPath, nPos1 + 1 )
   nPos2 := At( "/",cSub )
   nPos3 := At( "\",cSub )
   IF nPos2 == 0 .AND. nPos3 == 0
      Return Nil
   ENDIF
   IF nPos2 == 0 .OR. ( nPos3 != 0 .AND. nPos3 < nPos2 )
      nPos2 := nPos3
   ENDIF
   nPos3 := Max( RAt( "/",cSub ), RAt( "\",cSub ) )
   Return { Substr(cPath,3,nPos1-3), Val(Left(cSub,nPos2-1)), Iif(nPos3==0,"",Substr(cSub,nPos2,nPos3-nPos2+1)) }

Static Function ReadOptions( oApp )  // manage.prg
   Local oOptions := HXMLDoc():Read( "manage.xml" )
   Local oNode, i1, cIp, cPort, cUser, cPass
   IF !Empty( oOptions ) .AND. !Empty( oOptions:aItems ) .AND. oOptions:aItems[1]:title == "init"
      FOR i1 := 1 TO Len( oOptions:aItems[1]:aItems )
         oNode := oOptions:aItems[1]:aItems[i1]
         IF oNode:title == "server"
            cIp := oNode:GetAttribute("ip")
            cPort := oNode:GetAttribute("port")
            cUser := oNode:GetAttribute("user")
            Aadd( oApp:aServers, cIp )
            Aadd( oApp:aParams, { Iif(cPort==Nil,"2812",cPort), cUser } )
         ENDIF
      NEXT
   ENDIF
   IF Empty( oApp:aServers )
      Aadd( oApp:aServers, "127.0.0.1" )
      Aadd( oApp:aParams, { "2812", Nil } )
   ENDIF
   Return Nil

CLASS HApp  // manage.prg
   DATA oMainWnd
   DATA oTool
   DATA oCombo
   DATA oGetPort
   DATA oGetRefr
   DATA oSayServer
   DATA oBtnGo
   DATA oBtnKill
   DATA oBtnLock
   DATA oBrw1
   DATA oBrw2
   DATA oSplit

   DATA aServers
   DATA aParams
   DATA nItemCurr  INIT 0
   DATA lUpdList   INIT .F.

   DATA oTimer
   DATA lSend      INIT .F.

   DATA nInfoType  INIT 0
   DATA nRequest   INIT 0

   DATA lLocked    INIT .F.

   METHOD New
ENDCLASS

METHOD New CLASS HApp  // manage.prg
   ::aServers := {}
   ::aParams  := {}
   ReadOptions( Self )
   Return Self


alguma luz?
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

LetoDb e Harbour, como usar.

Mensagempor filizola » 03 Jul 2014 10:55

Bom dia galera, consegui fazer rodar o leto, muito bom mesmo. porém em um cliente, quando tento instalar. "letodb install" o letodb.log vem com a ms "Error installing letodb service: 1073".
"Um passo a frente, e já não estará mais no mesmo lugar..."
Avatar de usuário

filizola
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 412
Data de registro: 19 Ago 2003 20:10
Cidade/Estado: Belo Horizonte/MG
Curtiu: 5 vezes
Mens.Curtidas: 6 vezes

LetoDb e Harbour, como usar.

Mensagempor filizola » 05 Jul 2014 10:28

resolvido. bastou eu desinstalar o letodb e pronto.

letodb uninstall
"Um passo a frente, e já não estará mais no mesmo lugar..."
Avatar de usuário

filizola
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 412
Data de registro: 19 Ago 2003 20:10
Cidade/Estado: Belo Horizonte/MG
Curtiu: 5 vezes
Mens.Curtidas: 6 vezes

LetoDb e Harbour, como usar.

Mensagempor Minduim » 12 Jul 2014 11:26

Itamar bom dia;

esta faltando somente mais algumas pendências;

quanto ao erro abaixo, apresentado anteriormente, entendo que nenhum colega sabe resolver ou não passou por esta dificuldade;
LetoDB service has had some problems:       1063


agora, como configurar o comando 'SET PRINT TO';

se escrevo o comando: 'SET PRINT TO //127.0.0.1:2812/TEXTO.PRN', apresenta o erro:
'Error TERM/2014 Erro de Criação //127.0.0.1:2812/TEXTO.PRN (Dos Error 53)' // servidor não encontrado

se crio a função no arquivo letoudf.prg:
********************************
function UDF_SETPRINTER( nUserStru, cArq )

   if !Empty( cArq )
      Set Printer to ( cArq )
   else
      Set Printer to
   endif
   return Nil


e chamo pela função: 'Leto_Udf( "127.0.0.1.:2812/" + "UDF_SetPrinter", "TEXTO.PRN" )',
não apresenta mensagem de erro e o arquivo é criado;
mas ao gerar o relatório, o arquivo 'TEXTO.PRN' permanece vazio;

estou fazendo algo errado ou este comando não é compatível com o letodb?

observação: com mapeamento de rede, a rotina de impressão funciona perfeitamente;
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

LetoDb e Harbour, como usar.

Mensagempor Minduim » 14 Jul 2014 16:46

em tempo;
terminei a fusão dos programas letotray e manage e fiz o primeiro teste de conexão fora da minha rede;
pedi para um colega, distante uns 100 km se conectar e funcionou perfeitamente;
verifiquei uns pequenos gargalos de processamento que terei que corrigir no meu aplicativo e ainda tentar (...) resolver as pendências do post anterior;
estou muito contente...
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

LetoDb e Harbour, como usar.

Mensagempor Toledo » 24 Jul 2014 18:21

Amigos, estou tentando fazer um teste com o LetoDB com acesso remoto. Para isto, fiz um cadastro no noip e instalei o DUC do noip no meu computador. Executei ele, informei minha conta e senha, depois selecionei o host e tudo parece estar certo. Mas se tento dar um ping no endereço, nenhuma das tentativas da certo, são todas perdidas.

No meu modem (NET), tem um roteador (D-LINK Dir 600), então tentei configurar um Virtual Server para redirecionar a porta 2812 para o IP do computador onde está o letoDB, mas isto também não adiantou.

Pensei que poderia estar faltando instalar alguma coisa no computador onde está o DUC do noip, IIS por exemplo, mas no Painel de Controle não tem o IIS para fazer a instalação. O Windows é o 8 Pro.

A minha intenção é só fazer o acesso ao LetoDB, então o que mais tenho que fazer?

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: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

LetoDb e Harbour, como usar.

Mensagempor filizola » 24 Jul 2014 19:09

insira o ip da maquina na "DMZ" e libera a porta 2812 no firewall e redirecione a porta 2812 para o ip.
"Um passo a frente, e já não estará mais no mesmo lugar..."
Avatar de usuário

filizola
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 412
Data de registro: 19 Ago 2003 20:10
Cidade/Estado: Belo Horizonte/MG
Curtiu: 5 vezes
Mens.Curtidas: 6 vezes

LetoDb e Harbour, como usar.

Mensagempor Toledo » 24 Jul 2014 20:33

Feito, mas continua na mesma... não consigo conexão com o LetoDB usando o endereço ou IP no meu noip.

O estranho, é que se eu abrir meu navegador (Firefox, Chrome, Opera,etc) e digitar o endereço do meu noip, abre o programa do roteador (D-LINK Dir 600).

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: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

LetoDb e Harbour, como usar.

Mensagempor filizola » 24 Jul 2014 20:55

tente primeiro fazer uma conexao pelo mstsc so pra testar.
"Um passo a frente, e já não estará mais no mesmo lugar..."
Avatar de usuário

filizola
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 412
Data de registro: 19 Ago 2003 20:10
Cidade/Estado: Belo Horizonte/MG
Curtiu: 5 vezes
Mens.Curtidas: 6 vezes

LetoDb e Harbour, como usar.

Mensagempor Minduim » 25 Jul 2014 07:56

toledo, em meus testes, somente efetuei o registro da imagem em anexo no roteador e liberei a porta 2812 no firewall do windows;
entendo que o programa do seu roteador, se não é o mesmo, é muito parecido;
entendo também que o no-ip + duc associam o endereço de ip externo da maquina servidor a um endereço na internet;
exemplo: xxx.xx.xx.xxx => servidor.ddns.net;
assim o endereço na internet permanecera fixo, mas o ip externo do servidor sofrera alteração, e como a conexão com o letodb é feito pelo endereço de ip e não por um endereço na internet, ainda não entendi com utilizar este recurso para uma conexão estavel com o letodb;

espero ter ajudado o amigo;
Anexos
2014-07-25_073923.jpg
Minduim
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 59
Data de registro: 06 Abr 2011 13:02
Cidade/Estado: Santo andré - SP
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

LetoDb e Harbour, como usar.

Mensagempor Itamar M. Lins Jr. » 25 Jul 2014 09:24

Ola!
Eu tenho feito isso, em muitas maquinas por aqui.
E é dessa forma que você está fazendo, não esqueça de liberar no FIREWALL o LetoDb, não use DMZ é perigoso.

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LetoDb e Harbour, como usar.

Mensagempor filizola » 25 Jul 2014 09:31

Itamar, o problema é que eu não tinha utilizado o DMZ num roteador d-link e nao conseguia entrar na maquina. só depois de ter liberado o ip no dmz que funcionou. fiz bastante busca a respeito, e só assim consegui. o risco seria de ataques ?
"Um passo a frente, e já não estará mais no mesmo lugar..."
Avatar de usuário

filizola
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 412
Data de registro: 19 Ago 2003 20:10
Cidade/Estado: Belo Horizonte/MG
Curtiu: 5 vezes
Mens.Curtidas: 6 vezes

Anterior Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


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