Página 7 de 13

RDD LETO Sem Mistério

Enviado: 03 Jan 2013 09:36
por jelias
Amiguinhos,

Muito obrigado pelos esclarecimentos.
Ainda estou com algumas dúvidas.
1 - Pelo que posso entender (se não estiver errado) quando abrimos um arquivos DBF "DBUSEAREA()" que está no servidor, todo o conteúdo do arquivo trafega via rede até a computador do usuário (estação), isso claro, gera um trâfego, que dependendo do tamanho do DBF pode ser enorme. Como funciona isso com o LETODB, ao abrir um arquivo todo o seu conteúdo trafega pela rede ou somente quando exite uma solucitação ao LETODB que o dado solicitado trafegará pela rede?
Exemplo:
DBFCDX
use clientes index indcli // banco de dados com 100.000 registros
-> Neste momento há um trâfego na rede, transportando todos os registros do servidor para a máquina do usuário!

LETODB
use clientes index indcli VIA "LETODB"
-> Não há trâfego na rede, somente quando houver uma solicitação.
DBSEEK(), ORDSCOPE(), replace, set filter, browser(), etc.
-> Somente usando estes comandos que irá trabalhar com os dados?

2 - Ao abrir uma tela de cadastro mostro um browser com alguns clientes, é possível trazer somente por exemplo 30 registros?

Saudações,

Júlio.

RDD LETO Sem Mistério

Enviado: 25 Mar 2013 19:19
por Mário Isa
Amigos,
Agora não dá mais....
Chega de .DBF + lentidão na rede + .dbf paulado + coisa estranha + saci pererê e etce tal...

Agora estou instalando mysql 5.5.

E vou para o LETODB ou para o MYSQL ???

Acham melhor o mysql ? Mas daí eu tenhoq instalar o mysql em todas as maquinas ou só no servidor?

Obrigado
Mário
:%

RDD LETO Sem Mistério

Enviado: 25 Mar 2013 23:00
por alberto_dias
Olá,
Mario,
Seguindo as instruções do pessoal,
Já estou utilizando o LetoDb em 3 clientes
que estavam com "Problemas"
As vantagens que percebi usando o letodb foram:
Fácil adaptação do código fonte(muito pouca mudança),
Facilidade de instalação do Serviço no Servidor,
Facilidade na configuração das Portas( Saida e Entrada)
Aumento da velocidade da comunicação pelas estações,
Até agora nenhum problema ocorreu, nada misterioso,
Conclusão,
Estou surpreso pela velocidade e estabilidade do LetoDb,
Parabens a este trabalho do grupo, muito obrigado, :-Y :-Y
Alberto Dias

RDD LETO Sem Mistério

Enviado: 26 Mar 2013 11:28
por sygecom
Olá Mario,
Mário Isa escreveu: Acham melhor o mysql ? Mas daí eu tenhoq instalar o mysql em todas as maquinas ou só no servidor?
Não precisa instalar o MYSQL em cada maquina, a não ser que você use OBDC, ai tem que instalar o driver obdc para Mysql em cada maquina( que acho pouco produtivo)
O SQLRDD usa o Mysql de forma que apenas você deve distribuir junto com seu EXE as DLL do Mysql,ou Postgresql.

O resto respondi em seu outro tópico.
viewtopic.php?f=42&t=13486

RDD LETO Sem Mistério

Enviado: 26 Mar 2013 15:43
por Mário Isa
Hasse disse:
Instalei o pacote que o colega Leonardo (Sygecom) disponibilizou e imediatamente a compilação do aplicativo funcionou na primeira tentativa. É claro que também copiei os arquivos da pasta INCLUDE e LIB do LetoDB para as homônimas do xHarbour antes de compilar.
Mas eu preciso startar o servidor como o colega Itamar disse?


Itamar disse:
Não fez nada de errado, está tudo certo ai.
Para instalar o servidor no win7.
Expandir visualizacaoVer codigo
1 cd \letodb\bin
2 letodb install
3 net start letodb_service
4
Eu faço um pequeno .bat e coloco o atalho dele no inicializar ?

E ainda disse:
Atenção com o arquivo letodb.ini
Expandir visualizacaoVer codigo
01 Port = 2812
02 Logfile = "letodb.log"
03 DEFAULT_DRIVER = CDX
04 DATAPATH = c:\database\
05 ENABLEFILEFUNC = 1
06 CRYPT_TRAFFIC = 0
07 PASS_FOR_LOGIN = 0
08 PASS_FOR_MANAGE = 0
09 PASS_FOR_DATA = 0
10 Share_Tables = 0
11 [DATABASE]
12 DataPath = c:\database\
13 Driver = CDX
Eu posso trabalhar com Driver = NTX?
Porque repetiu a DataPath 2 vezes ?

Conectando:

Código: Selecionar todos

Expandir visualizacaoVer codigo
01	//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

Onde vc criou as variáveis
a) dDados
b) DB
c) apel

?


Alberto Dias:

Código: Selecionar todos

PRIVATE cPath := ALLTRIM(endserd)
PRIVATE dirserd :=  cPath
essa variável cPath é onde ficarão seus .dbfs ??


e ainda disse:

Código: Selecionar todos

DADOS := leto_mggetinfo()
Para que serve a função leto_mggetinfo() ?
Carregar a estrutura do arquivo ?
Os dados de um registro ??

Mario

RDD LETO Sem Mistério

Enviado: 26 Mar 2013 18:29
por Mário Isa
Testando aqui o exemplo do NETIO. Enviado pelo colega asimoes..
sendo assim. consegui compilar o cliente e fiz algumas mudanças...
segue o .prg e o .exe já compilado.

No modem
=========
Abra a porta cujo numero está em porta.txt (da pasta cliente) no modem..

No servidor
==========
Coloque a pasta "servidor" em d:\servidor e starte o servidor.exe
Coloque a pasta "cliente" se vc quiser q o próprio servidor tb acesse os dados e atualize a porta em porta.txt e o IP do SERVIDOR em ip.txt

No cliente
==]======
coloque a pasta "cliente" em d:\cliente, atualize a porta em porta.txt e o IP do SERVIDOR em ip.txt


Nota
O arquivo bancos.dbf está com mais de 1.000.000 de registros...

Testem a performance e coloquem aqui.... eu achei um tanto lento.
Mas quero ver no teste de vocês...

Peguem o arquivo em www.stoq2000.com/netio.rar

Mário

RDD LETO Sem Mistério

Enviado: 26 Mar 2013 19:25
por Mário Isa
:'( :'( :-o
Infelizmente. pelo teste que eu fiz não posso "ainda" aprovar o NETIO.

Fiz umas mudanças em 2 .prg's da pasta cliente para testar a performance.

Num primeiro momento eu compartilhei a pasta DB (onde está o bancos.dbf)
Daí mapeei uma unidade U: para fazer o primeiro teste com o .DBF aberto na "unidade mapeada" que é o que faço atualmente...

Depois fechei esta base e abri pelo NETIO.

Ele se mostrou simplesmente "pior" que as unidades mapeadas.... (chegou a travar)
Seguem os .prgs para vcs substituirem no netio.rar publicado logo atrás.

Mario

CLIENTE.PRG

Código: Selecionar todos

* --------------------------------------------------------------
#include "inkey.ch"
#include "setcurs.ch"
#include "error.ch"
#include "achoice.ch"
#include "fileio.ch"
#include "common.ch"
#include "dbinfo.ch"
#include "hbver.ch"
#include "hbdyn.ch"
#include "wvtwin.ch"
#include "hbgtinfo.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"
#include "hbcompat.ch"
#include "windows.ch"


FUNCTION MAIN
  
   Alert("Vou abrir a base")
   use u:\bancos
   Alert("Já abri a base")
   if !file('bancos.ntx')
    Alert("vou indexar agora.")
    index on banco to bancos
    Alert("Terminei de indexar agora.")
   end

   set filter to internet = 'www.bancofidis.com.br'
   Alert("Vou fazer o filtro agora.")
   dbgotop()
   
   DBEDIT(2,0,24,MaxCol())
   dbclearfilter()
   
   clear

   Alert("Vou fazer localizar o registro 700000")
   locate for recno() = 700000
   Alert("Localizei")
 

   Alert("Vou fazer localizar o XUNICARD")
   if dbseek('XUnicard')
    Alert("Localizei")
   else
    Alert("Não Localizei")
   end


   ferase('bancos.ntx')

   close data
   ferase('bancos.ntx')
   Alert("Fechei a base")

   IF !AbreDBF("BANCOS")
      DbCloseAll()
      RETURN Nil
   ENDIF

   @ 0,0 SAY cServidorDB
   
   @ 1,0 TO 1,MaxCol()


   set filter to internet = 'www.bancofidis.com.br'
   Alert("Vou fazer o filtro agora.")
   dbgotop()
   
   DBEDIT(2,0,24,MaxCol())

   clear

   dbclearfilter()

   Alert("Vou fazer localizar o XUNICARD")
   if dbseek('XUnicard')
    Alert("Localizei")
   else
    Alert("Não Localizei")
   end


   Alert("Vou fazer localizar o registro 700000")
   locate for recno() = 700000
   Alert("Localizei")


RETURN Nil

INIT FUNCTION AppSetup()
  LOCAL  nVezes
  PUBLIC cServidorDB, cIpAddServer:=Verifica_IP(), cPortaServer:=memoread('porta.txt') // "2816"
  PUBLIC hWnd,;
         oSayMsg,;
         oDlgHabla,;
         cTituloJanela,;
         oTimer,;
         cPrinter:= WIN_PrinterGetDefault()

   //cIpAddServer:=Obter_Ip_Maquina("nome do computador onde est  rodando o servidor netio")


  REQUEST DBFNTX
  RddSetDefault('DBFNTX')
  REQUEST HB_LANG_PT
  REQUEST HB_CODEPAGE_PT850
  HB_LANGSELECT("PT")
  HB_CDPSELECT( "PT850" ) //pt850

  REQUEST HB_GT_GUI_DEFAULT
  REQUEST HB_GT_WVG
  REQUEST HB_GT_WVT
  REQUEST HB_GT_WGU

  SETMODE(25,80)
  SET TYPEAHEAD TO 0
  SET INTENSITY ON
  SET SCOREBOARD OFF
  SET DELETED ON
  SET SAFETY OFF
  SET DATE BRITI
  SET ESCAPE ON
  SET CENTURY ON
  SET DELIMITERS TO
  SET EXCLUSIVE OFF
  SET EPOCH TO 1920
  SET OPTIMIZE ON
  SET AUTOPEN OFF
  SET DBFLOCKSCHEME TO DB_DBFLOCK_CLIP 
  SET MESSAGE TO 24 CENTER

  IniciaJanela()
   
  nVezes:=0 
  
  DO WHILE !NetIO_Connect(cIpAddServer,Val(cPortaServer),1000,"senha")
     @ 24,00 SAY PADC("Aguarde, tentando acesso ao servidor NETIO "+StrZero(nVezes,2)+"/10",80)
     IF nVezes > 10
        Alert("Verifique se o servidor netio est  executando.")
        QUIT
     ENDIF
     nVezes++
  ENDDO
  
  cServidorDB:='net://'+cIpAddServer+':'+cPortaServer+':db'+HB_PS()  
  
  hb_gtInfo( HB_GTI_COMPATBUFFER, .T. ) 

RETURN Nil 

FUNCTION IniciaJanela(nLi,nCi,nLf,nCf)
LOCAL oCrt

DEFAULT nLi TO 0,;
        nCi TO 0,;
        nLf TO MaxRow(),;
        nCf TO MaxCol()  
  
  cTituloJanela:="TESTE COM SERVIDOR NETIO"

  oCrt := WvgCrt():New( , , { nLi,nCi }, { nLf,nCf}, , .T. )
  oCrt:lModal := .F.
  oCrt:icon := ''
  oCrt:create()
  oCrt:resizable :=.F.
  WVT_SetFont("Lucida Console")
  WVT_SetTitle(cTituloJanela)
  WVT_SetAltF4Close(.F. )
  HB_gtInfo( HB_GTI_SPEC, HB_GTS_WNDSTATE, HB_GTS_WS_MAXIMIZED )
  hJanela:=HWG_FindWindow(0 ,cTituloJanela)
  hwg_BringWindowToTop( hJanela )
  ShowWindow( hJanela, SW_MAXIMIZE )
RETURN Nil

FUNCTION Verifica_IP
LOCAL aHosts, cName, cEstacao:=memoread('ip.txt') // "192.168.0.31" //NetName(.F.)
HB_InetInit()
aHosts := HB_InetGetHosts( cEstacao )
IF aHosts == NIL
   aHosts := HB_InetGetAlias( cEstacao )
ENDIF
IF Empty(aHosts)
   aHosts := HB_InetGetAlias( cEstacao )
ENDIF
HB_InetCleanup()
RETURN  aHosts[1]

FUNCTION Obter_Ip_Maquina(cMaquina)
LOCAL aHosts:={}
   HB_InetInit()
   aHosts:=HB_InetGetHosts( cMaquina )
   IF aHosts == NIL
      aHosts:=HB_InetGetAlias( cMaquina )
   ENDIF
   IF Empty(aHosts)
      aHosts:=HB_InetGetAlias( cMaquina )
   ENDIF
   HB_InetCleanup()
RETURN IF(Len(aHosts)>0,aHosts[1],"")
PFDATA.PRG

Código: Selecionar todos

#include "common.ch"
#include "dbstruct.ch"
#include "hbcompat.ch"

FUNCTION AbreDBF(cDataBase,lShared)
LOCAL nArea, cServer:=cServidorDB, lOk:=.T., lAbriu:=.F.

DEFAULT lShared TO .T.

   // ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
   //  Abre o Arquivo necessario na rotina.
   // ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
   TRY 
      FOR nArea:=0 To 150
         IF !Empty((nArea)->(Alias()))
            IF Upper(RTrim((nArea)->(Alias()))) == Upper(cDataBase)
               &cDataBase.->(DbCloseArea())
               EXIT 
            ENDIF
         ENDIF
      NEXT
   CATCH
   END
   
   DO CASE
   CASE UPPER(cDataBase) = 'BANCOS'
        TRY
           IF !Netio_FuncExec("EXISTE","BANCOS.NTX")
              &cDataBase.->(DbCloseArea()) 
              NetUse(cServer,cDataBase,.T.) 
   Alert("vou indexar agora.")
              INDEX ON BANCO TO (cServer+"BANCOS.NTX")
   Alert("Terminei de indexar agora.")
              &cDataBase.->(DbCloseArea()) 
           ENDIF
           IF SELECT(cDataBase) == 0
              lOk:=NetUse(cServer,cDataBase,lShared)
           ENDIF
           SET INDEX TO (cServer+"BANCOS.NTX")
           lAbriu:=.T.
        CATCH
           lAbriu:=.F.
        END
   ENDCASE
RETURN lAbriu

RDD LETO Sem Mistério

Enviado: 26 Mar 2013 19:40
por rochinha
Amiguinho,

Qual foi o conjunto que voce usou, Harbour e bibliotecas e de que datas são os binários ou os .PRGs originais(não so compilados após obtenção)?

Voce está fazendo testes paralelos entre NetIO e LetoDB?

RDD LETO Sem Mistério

Enviado: 26 Mar 2013 20:14
por lucimauro
Mario no meu caso eu uso o http://www.otc.pl/index.asp?s=21 e nao tenho nada a reclamar.
instalo o mediator no servidor
instalo o mysql no servidor
instala o driver odbc no servidor
nos terminais so seto o ip do servidor e pronto nao preciso mais instalar nada.
lembrando que no mysql free tenho ate 100 usuarios, para outros bancos so 5 usuarios.

RDD LETO Sem Mistério

Enviado: 27 Mar 2013 07:45
por Mário Isa
Muito bom Lucimauro.
Você comprou o mediator ?
Qual versão usar ?

Seria o
a) Mediator for MS SQL v.5 ou
b) Mediator for MySQL ou ainda
c) Mediator for MS SQL ???



E na página deles também apresenta um
a) Mediator clients
Qual deles devo comprar/baixar/testar/pagar ???

Mário


Mediator for Oracle
Mediator for MS SQL
Mediator for PostgreSQL
Mediator for MySQL
Mediator clients
Delphi and COM components
Terminal - server and client
xHarbour/Harbour

Mediator for Oracle v.5
Mediator for MS SQL v.5
Mediator for PostgreSQL v.5
Mediator for MySQL v.5
Mediator clients v.5
Delphi and COM components v.5

RDD LETO Sem Mistério

Enviado: 27 Mar 2013 08:46
por Poka
Mário Isa disse
Ele se mostrou simplesmente "pior" que as unidades mapeadas.... (chegou a travar)
Seguem os .prgs para vcs substituirem no netio.rar publicado logo atrás.
Á algum tempo atrás tentei usar o LetoDb, mas não consegui fazer funcionar e acabei desitindo, pelos relatos parece que fica rápido.
Testei utilizar o Netio, deu tudo certo. Fiz um teste simples. Organizei os arquivos de um terminal. Resultado. Muito lento, mais que o normal. Desisti.

Agora estou pensando em sair mesmo do dbf/cdx. Eu não posso reclamar do DBF.

Tenho sistema em uma empresa há quase 25 anos, e nunca , mas nunca mesmo corrompeu banco de dados, e índices poucas vezes, isso quando era ntx, com cdx praticamente nunca. E tinha empresa que estava sempre corrompendo . Obs . ( o cliente tinha o computador instalado perto do forno fazer pão, em outros os funcionários passavam por cima do fio da rede e por aí vai). Acho que o problema está mais na instalação das maquinas do que no banco de dados.

É só ver na internet que os outros bancos de dados também se corrompem . No DBF sabemos como fazer voltar a funcionar, agora nesses outros bancos de dados não sei como vai ser .

Mas não tem jeito, temos que mudar. Hoje existe empresas que não aceitam mais o seu sistema se for em DBF.

Comecei a estudar o Mysql, mas me parece que não é free. Desisti.

PostgreSql . parece que não tem como criar 2 bancos de dados em lugares diferentes, preciso disto no meu sistema, para fazer Backup e usar em outros computadores parece que meio complicado também , desisti também.

Firebird. Parece ser esse mesmo a ser utilizado. Já testei, vc cria banco de dados em vários lugares, e é assim que eu preciso. Não estou conseguindo conectar, está dando erro, mas vou tentando por aqui. O erro que está dando está em outro post “FIREBIRD NO XHARBOUR”.

Poka

RDD LETO Sem Mistério

Enviado: 27 Mar 2013 09:03
por Pablo César
Ei pessoal, seria conveniente utilizar as tags adequadas para citações e para exibir códigos fontes. Estão confundindo a utilização das tags. Usem CODE tags para código fontes não para citações. Aviso antes de que isso vire moda...

RDD LETO Sem Mistério

Enviado: 27 Mar 2013 09:35
por Mário Isa
oi Pablo
é que às vezes se vc for colocar um quot / quote a coisa é muito grande o code /code deixa ele pequeno...

tem como fazer uma "citação" quote /quote e deixar pequeno ??

Mário

RDD LETO Sem Mistério

Enviado: 27 Mar 2013 10:57
por Pablo César
Entedi Mario, vou ver o que podemos fazer sobre isso.

RDD LETO Sem Mistério

Enviado: 17 Abr 2013 12:27
por Itamar M. Lins Jr.
Ola!
Mas eu preciso startar o servidor como o colega Itamar disse?
O Letodb roda como um serviço do windows, mesma coisa para MySQL, PGSQL, etc...
Eu faço um pequeno .bat e coloco o atalho dele no inicializar ?
Não precisa, basta instalar e depois ativar o servidor apenas uma vez.

Código: Selecionar todos

>letodb install //Instalando o servidor.
>net start letodb_service  //ativando o servidor.
Tanto faz se no windows XP ou Win 7.
Eu posso trabalhar com Driver = NTX?
Porque repetiu a DataPath 2 vezes ?
Teste para ver se funciona o NTX. Eu uso CDX. Segundo o manual funciona tanto com NTX ou CDX.
4.1 letodb.ini

You may provide configuration file letodb.ini if you isn't satisfied with
default parameters values. Currently following parameters exists ( default
values are designated ):

Port = 2812 - server port number;
TimeOut = -1 - connection timeout;
DataPath = - path to a data directory on a server;
Log = letodb.log - path and name of a log file;
Default_Driver = CDX - default RDD to open files on server ( CDX/NTX );
Memo_Type = - memo type ( FPT/DBT ). Default: FPT for DBFCDX, DBT for DBFNTX;
Lower_Path = 0 - if 1, convert all paths to lower case;
EnableFileFunc = 0 - if 1, using of file functions ( leto_file(),
leto_ferase(), leto_frename() is enabled;
EnableAnyExt = 0 - if 1, creating of data tables and indexes with
any extention, other than standard ( dbf,cdx,ntx )
is enabled;
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.
Cache_Records - The number of records to read into the cache
Max_Vars_Number = 10000 - Maximum number of shared variables
Max_Var_Size = 10000 - Maximim size of a text variable
Trigger = <cFuncName> - Global function letodb RDDI_TRIGGER
PendingTrigger = <cFuncName>- Global function letodb RDDI_PENDINGTRIGGER
Tables_Max = 5000 - Number of tables
Users_Max = 500 - Number of users
Debug = 0 - Debug level
Optimize = 0 - if 1, SET HARDCOMMIT OFF
AutOrder = 0 - SET AUTORDER setting
ForceOpt = 0 - _SET_FORCEOPT setting

It is possible to define [DATABASE] structure if you need to have a
directory, where files are opened via other RDD:

[DATABASE]
DataPath = - (mandatory option)
Driver = CDX - ( CDX/NTX )

You can define as many [DATABASE] sections, as needed.

In Windows environment the letodb.ini must be placed in a directory, from
where server is started.
In Linux the program looks for it in the directory from where the server
is started and, if unsuccessfully, in the /etc directory.
Leia os arquivos responde uma serie de perguntas.
Os exemplos tambem.
Onde vc criou as variáveis
a) dDados
b) DB
c) apel
A variavel dDados é onde estão os DBF´s
Por exemplo:

Código: Selecionar todos

 dDados := "c:\dados\lojaxyz"
DB é o nome do DBF em questão.

Código: Selecionar todos

db := "clientes.dbf"
e apel é o apelido (alias)

Código: Selecionar todos

apel := "cl" //alias de clientes.dbf
Mais isso é irrelevante, porque isso está até mal atribuido, são codigos velhos que preciso atualizar.

Saudações,
Itamar M. Lins Jr.