Clipper On Line • Ver Tópico - RDD LETO Sem Mistério

RDD LETO Sem Mistério

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

RDD LETO Sem Mistério

Mensagempor asimoes » 07 Dez 2012 07:39

Itamar,

O meu CVS não baixa nenhuma atualização do letodb a muito tempo.
Houve alguma mudança?
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

RDD LETO Sem Mistério

Mensagempor asimoes » 07 Dez 2012 07:49

Como eu passei a usar o NETIO faz muito tempo que não acompanho as atualizações do letodb essa que você tá me informando Itamar deve ser recente, porque eu sempre mando o cvs atualizar minigui, harbourboleto e letodb(não traz nada)

[]
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

RDD LETO Sem Mistério

Mensagempor Itamar M. Lins Jr. » 07 Dez 2012 10:03

Tem muitas, desde que o Pavel criou o ramo BRANCH, deve pegar o branch(ramo) via cvs rel-1-mt.
http://sourceforge.net/projects/letodb/files/, da uma olhada na data.
No seu CVS do leto é só escolher a opção branch ou ramo se estiver em portugues e digita rel-1-mt

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

RDD LETO Sem Mistério

Mensagempor asimoes » 07 Dez 2012 10:07

Itamar, entendi, valeu.

Uma pergunta: você já conseguiu compilar com msvc?
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

RDD LETO Sem Mistério

Mensagempor Itamar M. Lins Jr. » 07 Dez 2012 10:16

Eu não tentei porque estou usando o Mingw.

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

RDD LETO Sem Mistério

Mensagempor jelias » 11 Dez 2012 18:34

Amigos,

Gostaria de parabenizar os colegas pelo empenho em ensinar o uso do RDD LETO.
Hoje estou usando xHarbour 1.2.1 / BCC 5.8.2 / DBFCDX. Em alguns clientes uso TS.
Estive procurando informações sobre o LETODB e mesmo lendo todo o tópico ainda me restam algumas dúvidas e em alguns casos confirmações.
Não tenho certeza, mais me parece que o amigo Itamar é um dos únicos que está usando em produção, me perdoe se estiver errado.
Para o meu caso irei usar o LETODB para uma rede local,com um servidor windows Server 2008 Enterprise. Estações windows'xp sp3.

Dúvidas

- Com o uso do LETODB irei ter a mesma performance que tenho com TS? Ou melhor, o que poderia esperar como ganho de performance?
- Quanto a segurança, o que o LETODB oferece?
- No meu servidor eu tenho dois HD's. Um deles fica uma pasta onde estão quase todos os banco de dados, que seria: E:\ESTOQ\00001 e os arquivos financeiros em outra pasta E:\FINANC\00001. No outro hd, tenho uma pasta: H:\H\00001 onde ficam informações confidências. Quando estou usando o sistema preciso trabalhar com tabelas localizadas em todas as pastas acima. Isso é possível com o LETODB?
- Pelo que puder entender o processamento das informações acontecem no servidor, seria correto pensar que o tráfego de rede seria somente das respostas obtidas do servidor? Ou seja, segue a mesma idéia de um motor SQL.

Confirmações sobre instalação e uso

- Instalação no Servidor: É só criar uma pasta, e deixar o arquivo LETODB.EXE e iniciar o servidor no autoexec.nt com a seguinte linha: c:\letodb\LETODB install. Não entendi bem, se é necessário também a linha: net start letodb_service

Nas estações
- Em cada estação criar uma pasta onde ficará o executável do sistema e um arquivo INI. Não sei se é necessário usar este arquivo INI ou se posso informar isso direto no FONTE.

No Programa
- Dentro do sistema tenho que criar uma rotina conforme o código do amigo Itamar:

Itamar M. Lins Jr. escreveu://fragmentos do código que eu uso.
02 Local cHost := "//localhost:2812/"
03
04 nConect := leto_Connect( cHost )
05 IF nConect == -1
06 nRes := leto_Connect_Err()
07 IF nRes == LETO_ERR_LOGIN
08 MsgStop( "Falha ao Logar" )
09 ELSEIF nRes == LETO_ERR_RECV
10 MsgStop( "Error ao conectar" )
11 ELSEIF nRes == LETO_ERR_SEND
12 MsgStop( "Erro de envio" )
13 ELSE
14 MsgStop( "Não connectado ao servidor: " + cHost )
15 ENDIF
16 Return .f.
17 ENDIF
18 EndIf
19
20 Function AbreDB(...)
21
22 BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
23 If lRddLeto
24 If Leto_File(cHost+Db)
25 DbUseArea(.t.,"LETO",cHost+DB,apel,.T.,.F.,'PTISO')
26 Else
27 MsgStop('LetoDb Não Localizou o Arquivo: '+cHost+Db)
28 lRet := .f.
29 EndIf
30 Else
31 DbUseArea(.t.,'DBFCDX',dDados+DB,apel,.T.,.F.,'PTISO')
32 EndIf
33
34 Recover
35 If lRddleto
36 msginfo('Erro, abrindo Arquivo: '+cHost+Db+' Compartilhado')
37 Else
38 msginfo('Erro, abrindo Arquivo: '+dDados+Db+' Compartilhado')
39 EndIF
40 lRet := .f.
41 End Sequence
42
43 if Neterr()
44 MsgInfo('Usado de Forma Exclusiva, Em Outro Lugar.')
45 lRet := .f.
46 endif


- Seria somente implementar as rotinas acima em meus sistemas para que possa trabalhar com o LETODB?

Saudações,
Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
jelias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 249
Data de registro: 27 Ago 2008 11:32
Cidade/Estado: Minas Gerais
Curtiu: 0 vez
Mens.Curtidas: 16 vezes

RDD LETO Sem Mistério

Mensagempor Itamar M. Lins Jr. » 26 Dez 2012 12:36

Ola!
Sobre o TS já foi respondido.
Quanto a segurança, o leto tem criptografia de dados, e o acesso é via TCP/IP.
Pass_for_Login = 0 - if 1, user authentication is necessary to
login to the server;
Pass_for_Manage = 0 - if 1, user authentication is necessary to
use management functions ( Leto_mggetinfo(), etc. );
Pass_for_Data = 0 - if 1, user authentication is necessary to
have write access to the data;
Pass_File = "leto_users" - the path and name of users info file;
Crypt_Traffic = 0 - if 1, the data passes to the network encrypted;
Share_Tables = 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.

Sobre a localização dos DBF´s:
Pode rodar várias estâncias do Letodb em portas diferentes.
Por exemplo porta 2812 que é o padrão h:\xyz\financ
outra na porta 2813 g:\xyz\estoques... etc...
Sobre o motor SQL, é o mesmo principio. São feitas solicitações ao servidor e este retorna os resultados.

Como inicializar: ou via serviço do windows ou via autoexec isso irá depender de como o letodb foi compilado.
#ifdef __WIN_DAEMON__

      StartServer()

#endif

#ifdef __WIN_SERVICE__

      IF cCommand != NIL
         IF Lower( cCommand ) == "install"
            IF leto_serviceInstall()
               WrLog( "LetoDB service has been successfully installed" )
            ELSE
               WrLog( "Error installing LetoDB service: " + Str( letowin_GetLastError() ) )
            ENDIF
            RETURN
         ELSEIF Lower( cCommand ) == "uninstall"
            IF leto_serviceDelete()
              WrLog( "LetoDB service has been deleted" )
            ELSE
              WrLog( "Error deleting LetoDB service: " + Str( letowin_GetLastError() )  )
            ENDIF
            RETURN
         ELSEIF Lower( cCommand ) == "test"
            StartServer()
            RETURN
         ELSE
            ? "LetoDB_mt { install | uninstall }"
         ENDIF
         RETURN
      ENDIF

      IF ! leto_serviceStart( "StartServer" )
         WrLog( "LetoDB service has had some problems: " + Str( letowin_GetLastError() ) )
      ENDIF

//!!!!!!!!!!!!!!!   DO WHILE win_serviceGetStatus() == WIN_SERVICE_RUNNING

#endif

#ifdef __LINUX_DAEMON__

      IF !leto_Daemon()
         WrLog( "Can't become a daemon" )
         RETURN
      ENDIF

      StartServer()

#endif


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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

RDD LETO Sem Mistério

Mensagempor sygecom » 26 Dez 2012 20:00

Existe uma série de questão que devemos levar em conta. Uma delas é o código de como está projetado, muitas vez é desenvolvido para rodar alguns arquivos temporario na maquina local como c:\temp e quando coloca em TS isso vira tudo o mesmo C:\ e pode causar uma série de problemas colaterais.
Sem duvida o TS é muito mais rápido que LETODB(em rede e por internet), e também sem duvida o LETODB é mais seguro e mais rápido que DBFCDX.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7020
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 133 vezes

RDD LETO Sem Mistério

Mensagempor alberto_dias » 29 Dez 2012 10:39

Amigos,
Parabens pelo incentivo do uso do RDD leto,
Estou testando, e já estou conseguindo, rodar o Servidor letodb.exe, Conectar ao Banco de Dados e Ler os registros,
mas não estou conseguindo usar a função Leto_File
Não sei onde estou errando, abaixo, coloquei uns dados do código, letodb.ini, se alguem puder me ajudar, agraceço muito, :%
// TESTES LETODB 29/12/2012 AS 11:30 HS
Function Main
Local corant := SETCOLOR()
   CLS
   Set AutOpen on
   REQUEST DBFCDX,LETO
   DBSETDRIVER("dbfcdx")
   RDDSETDEFAULT( "LETO" )
   
   RESTORE FROM csconfig ADDITIVE
   
   // ARQUIVO LOCAL TEM QUE TER VIA DBFCDX
   USE ( "ARPARLOC" ) VIA "DBFCDX" NEW
   ARMCAMVAR()
   CLOSE
   
   PRIVATE cPath := ALLTRIM(endserd)
   PRIVATE dirserd :=  cPath
   
   leto_disconnect()   
   IF ( leto_Connect( cPath ) ) == -1
      alert("Nao foi possivel conectar ao Servidor")
      close all
      quit
   endif
   DADOS := leto_mggetinfo()
   @ 01,01 SAY DADOS[1]
   @ 02,01 SAY DADOS[2]
   @ 03,01 SAY DADOS[3]
   @ 04,01 SAY DADOS[4]
   @ 05,01 SAY DADOS[5]
   @ 06,01 SAY DADOS[6]
   @ 07,01 SAY DADOS[7]
   @ 08,01 SAY DADOS[8]
   @ 09,01 SAY DADOS[9]
   @ 10,01 SAY DADOS[10]
   @ 11,01 SAY DADOS[11]
   @ 12,01 SAY DADOS[12]
   @ 13,01 SAY DADOS[13]
   @ 14,01 SAY DADOS[14]
   @ 15,01 SAY DADOS[15]
   @ 16,01 SAY DADOS[16]
   @ 17,01 SAY DADOS[17]
   @ 23,01 SAY cPath+" "+endserd+" "+dddosser
   @ 24,01 SAY dirserd COLOR "W/B"
   if leto_file( dirserd+"cadprodu.dbf") = .t. 
       ALERT( "ENCONTRADO "+dirserd+" CADPRODU" )
   ELSE
      ALERT( "NAO ENCONTRADO "+dirserd+" CADPRODU" )
   ENDIF   
   use ( dirserd+"CADPRODU" ) New
   SET INDEX TO ( dirserd+"CADPRODU" )
   SET ORDER TO 2
   GO TOP   
   browse(1,1,22,78)
   close all
   LETO_DISCONNECT()
   SETCOLOR(corant)   
   CLS   
   quit
Return Nil

FUNCTION Armcamvar
   nc = FCOUNT()
   FOR av = 1 TO nc
       IF TYPE(FIELD(av)) <> 'M'
          nomecampo := FIELDNAME(av)
          nomevar   := nomecampo + "d"
          PUBLIC &nomevar
          &nomevar := &nomecampo
       ENDIF
   NEXT av
RETURN(.T.)

* FIM DESTE MODULO

[MAIN]
Port = 2812
DataPath = G:\SISTEMA
Logfile = "letodb.log"
Default_Driver = CDX
Lower_Path = 0             ; 1, converter todos os caminhos para minúsculas
EnableFileFunc = 1         ; 1, Ativa leto_file(), leto_ferase(), leto_frename()
EnableAnyExt = 0           ; 1, é Ativado a criação de arquivos de dados (DBF)
Pass_for_Login = 0         ; 1, autenticação do usuário é necessária p/ acessar
Pass_for_Manage = 0        ; 1, a autenticação necessária p/ func Leto_mggetinfo()
Pass_for_Data = 0          ; 1, a autenticação necessária acesso aos dados
Pass_File = "leto_users"   ; caminho, arquivo de informações dos usuários
Crypt_Traffic = 0          ; 1, passa os dados pela a rede cripitografado

[DATABASE]
DataPath = G:\SISTEMA
Driver = CDX

; NAO ALTERAR SEM CONSULTA PREVIA
; LETODB.INI ALTERADO EM 29/12/2012 AS 11:06 HS
; ANALISTA PARA CONSULTA: ALBERTO DIAS
; CENTRAL SOFTWARE INFORMATICA LTDA
; SERVIDOR ATUAL 192.168.0.11 PORTA 2812


Estou utilizando:
Harbour 3.0.0 (Rev. 16951)
Copyright (c) 1999-2011, http://harbour-project.org/
=============================================
Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland
==============================================================
Leto DB Server v.2.09 ! INIT: DataPath=G:\SISTEMA, ShareTables=0, MaxUsers=500, MaxTables=5000, CacheRecords=10
======================================================================================================
Alberto Dias
Atual.: Harbour 3.2.0 dev (r1703241902) + Gtwvg E Hmg IDE 3.5
Máquina Notebook - DELL ( INTEL CORE i5 ) 8 GB
Sistema - Windows 10 64 Bits
Avatar de usuário

alberto_dias
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 64
Data de registro: 10 Abr 2005 09:46
Cidade/Estado: Taboão da Serra - SP
Curtiu: 0 vez
Mens.Curtidas: 5 vezes

RDD LETO Sem Mistério

Mensagempor asimoes » 29 Dez 2012 17:12

Prezados,

Alguém já testou o acesso com usuário e senha? não estou conseguindo sucesso.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

RDD LETO Sem Mistério

Mensagempor asimoes » 30 Dez 2012 12:41

Pessoal,

Estou tentando o uso de uma função que eu fiz e funciona com o servidor netio no letodb.

Primeiro criei essa função no server.prg (\source\server)

E estou usando a função LETO_UDF()

Estou fazendo assim:
cPasta:="BOLETOS_DB_"+HB_DTOC(Date(),"YYYY_MM_DD")+"-"+Left(StrTran(Time(),":"),4)
LETO_UDF("UDF_Backup",cPasta,"numero.dbf")

Ocorre que os parametros passados para a função UDF_Backup estão entrando nulos, será que é um erro da função LETO_UDF?
//Função no server.prg
FUNCTION UDF_Backup( cPasta, cArquivo )
LOCAL I, lErro:=.F., nErro
   HB_Default(@cArquivo,"")
   HB_Default(@cPasta,"DB_"+HB_DTOC(Date(),"YYYY_MM_DD")+"-"+Left(StrTran(Time(),":"),4))
   TRY
      IF !IsDir(cPasta)
         DirMake(cPasta)
      ENDIF
      __CopyFile("DB"+HB_PS()+cArquivo,cPasta+HB_PS()+cArquivo)
   CATCH
      lErro:=.T.
   END
RETURN lErro

Estou fazendo alguma coisa errada?
A versão do letodb é a 2.09
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

RDD LETO Sem Mistério

Mensagempor Itamar M. Lins Jr. » 31 Dez 2012 14:24

Sem duvida o TS é muito mais rápido que LETODB(em rede e por internet), e também sem duvida o LETODB é mais seguro e mais rápido que DBFCDX.

Depende, pois o TS manda as TELAS BMP para a estação, enquanto os dados de um DBF pode ser muito menor, por isso temos a opção no TS de diminuir as CORES, quanto mais resolução mais lento fica.
Já o LetoDB não tem nada disso, algumas vezes eu usei TS e Letodb, o Letodb foi mais rápido.
Seria o mesmo que afirmar que o TS é mais rápido que uma aplicação usando algum motor SQL tipo Oracle, PGSQL...
Uma coisa é retornar uma consulta SQL com 1.000.000 de registros outra coisa é otimizar para receber apenas 50 registros.
Podemos usar até HTML+hbscript/cgi+Letodb para aplicações WEB.
Outra coisa, numa rede local o letodb sempre foi mais rápido que o TS quando eu testei, é até mais rápido (as vezes) que uma aplicação usando DBFCDX local pois o LETODB tem "memória CACHE", buffers...
O TS depende do servidor, CPU, memória, configuração, se por algum motivo ficar algo consumindo os recursos no servidor, por exemplo aquele programinha anti virus ordinário, as estações ficam muito lentas usando TS, já os motores SQL´s da vida não sente tanto assim a lerdeza do servidor, sem falar no encomodo de fazer dois logins.
Qualquer browse, faz a renderização no lado do cliente o TS manda as telas já redenrizadas para a estação. Isso me encomoda eu não gosto, é similar a esses programas que existe de suporte remoto, logmein, teamviewer...

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

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6959
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

RDD LETO Sem Mistério

Mensagempor asimoes » 01 Jan 2013 09:13

Pessoal,

Descobri o problema do parêmetro:

Obrigatoriamente para o letodb no server.prg ou letoudf.prg deve ser informado o parâmetro nUserStru (1º parâmetro!!!) depois os parâmetros que realmente sua função vai usar.
Na chamada da função:

Com Leto_UDF:

Leto_UDF("UDF_Backup","TESTE","TESTE.DBF")

FUNCTION UDF_Backup( nUserStru, cPasta, cArquivo )
LOCAL I, lErro:=.F., nErro
   HB_Default(@cArquivo,"")
   HB_Default(@cPasta,"DB_"+HB_DTOC(Date(),"YYYY_MM_DD")+"-"+Left(StrTran(Time(),":"),4))
   TRY
      IF !IsDir(cPasta)
         DirMake(cPasta)
         //strfile(cArquivo+HB_EOL(),"TESTE.LOG",.T.)
      ENDIF
      __CopyFile("DB"+HB_PS()+cArquivo,cPasta+HB_PS()+cArquivo)
   CATCH
      lErro:=.T.
   END
RETURN lErro
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

RDD LETO Sem Mistério

Mensagempor asimoes » 01 Jan 2013 10:23

O que eu mais gostei nesta versão do LetoDb é a criação de serviço windows pelo próprio letodb, algum tempo atrás eu usava um programa de terceiros para isso.
A possibilidade de rodar funções UDF no servidor eu achei muito legal. O letodb no momento está oferecendo muito mais recursos que o seu irmão netio do harbour.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

RDD LETO Sem Mistério

Mensagempor asimoes » 01 Jan 2013 10:37

Se for rodar como serviço tem que usar a função hb_dirbase(), problemas do windows...
Não sei é isto, quando você cria o serviço não tem a pasta de trabalho para informar.
Percebi isso, porque eu fiz uma versão console e outra serviço, com a versão console usei o camilho relativo para criar a pasta e copiar o arquivo, com a versão serviço fui obrigado a usar o caminho absoluto (hb_dirbase())

FUNCTION UDF_Backup( nUserStru, cPasta, cArquivo )
LOCAL I, lErro:=.F., nErro
   HB_Default(@cArquivo,"")
   HB_Default(@cPasta,"DB_"+HB_DTOC(Date(),"YYYY_MM_DD")+"-"+Left(StrTran(Time(),":"),4))
   TRY
      IF !IsDir(hb_dirbase()+cPasta)
         DirMake(hb_dirbase()+cPasta)
      ENDIF
      __CopyFile(hb_dirbase()+"DB"+HB_PS()+cArquivo,hb_dirbase()+cPasta+HB_PS()+cArquivo)
   CATCH
      lErro:=.T.
   END
RETURN lErro
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Anterior Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 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