LetoDB

Francisco Horta
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Post by Francisco Horta »

dblizama,
Gracias por tu ayuda, pero no funciono este es el log de las prueba, cambiando slash "/", "\" con y sin el, no funciona de ninguna manera
mira el .log

07/14/08 17:18:36: Leto DB Server has been started.
07/14/08 17:21:08: Open error (15-1002): f:\letodb\data//BASES
07/14/08 17:22:06: Open error (15-1002): f:\letodb\data/BASES
07/14/08 17:23:04: Open error (15-1002): f:\letodb\data\BASES

gracias
:-(
sabe que sera
salu2
paco
User avatar
Alfredo Arteaga
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico
Contact:

Post by Alfredo Arteaga »

Comento los avances realizados en tiempo libre con un programa de prueba y una tabla dbf y en modo local.

1. Ejecutar LetoDB
2. Ejecutar Manage con la IP del equipo, desconozco el motivo pero 'localhost' responde solo cuando está de buenas.

Los parámetros de LetoDB.Ini son tomado por LetoDB.Exe y no por la aplicación por tanto estos dos archivos deben estar juntos, digo esto porque creí que eran tomados por la aplicación.

Los datos pueden estar en cualquier unidad y ruta (C:, D:, H:, etc.) y la aplicación en otra, lo importante es que LetoDB vea la ruta al iniciar (DataPath = H:\Hello).

Lo que no he podido es habilitarlo como un servicio o alojarlo como servidor y por último veo que las tablas son usadas en modo exclusivo, si las tengo abiertas con otra aplicación simplemente no responde protesta enviando mensajes que no entiendo pero que quedan guardados el LetoDB.Log, normalmente es porque no puede abrir las tablas.

Por hoy hasta aquí, ya veré si hay mas...

Code: Select all

#Include "FiveWin.Ch"

FUNCTION Main()
   LOCAL cServer:="//192.168.1.200:2812/", nI

   REQUEST Leto
   RDDSetDefault("Leto")
   IF Leto_Connect(cServer)==-1
      MsgAlert("No se puede establecer la conexión.","Verifique!")
      RETURN (NIL)
   ENDIF

   DBUseArea(.T.,,cServer+"Dat2008/Personal","Personal")
   IF !Empty(OrdName(1))         // Esto porque parece que no hay SET AUTOPEN
      Personal->(DbSetOrder(1))
   ENDIF

   IF Personal->(DbSeek("0275"))
      MsgInfo(Personal->NomCom)
   ELSE
      MsgInfo("No lo encontré!")
   ENDIF
   Personal->(DbCloseArea())

RETURN (NIL)
jblizama
Posts: 15
Joined: Fri Jul 11, 2008 3:29 am

Abrir compartido

Post by jblizama »

Alfredo:

El quinto parametro de la funcion dbusearea() es un valor logico que indica si se permite o no la apertura compartida de tablas, veo que en tu codigo no lo usas, queda entonces expuesto a lo que diga SET EXCLUSIVE que tampoco lo usas. Por lo tanto la apertura es No Compartida. Creo que por ahi va el error...

Saludos
jblizama
Posts: 15
Joined: Fri Jul 11, 2008 3:29 am

Post by jblizama »

Paco:

Prueba dos cosas y cuentanos...

1.- Ejecutar todo desde el disco local C:

2.- Crear una tabla desde el codigo.

Saludos, saldremos adelante...
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post by Biel EA6DD »

El parametro Shared de dbUseArea, sirve para indicarle a leto el modo de apertura, pero solo tiene ambito dentro del servidor. Es decir si le indicamos que queremos apertura compartida, nos permitira usar la misma tabla desde diferentes puntos(clientes, programas, etc), pero accediendo atraves del servidor.

LetoDB abre en modo exclusivo los ficheros, lo que imposibilita el uso de los dbf desde una aplicación externa.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Kleyber
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Post by Kleyber »

jblizama,

Gracias por la respuesta. Sigo mirando los resultados de los testes...

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
Francisco Horta
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Post by Francisco Horta »

jblizama,
Hice lo que me sugeriste, y no funiono, sigo sin entender porque si me marca que establece la conexion, pero no hace nada mas.
aqui dejo el .prg esta muy basico y corto, si alguien lo puede probar a ver si le funciona, todo lo hago desde el disco local c

#Include "Fivewin.ch"

FUNCTION Main()
LOCAL cServer := '//localhost:2812/'
LOCAL aDbf := {}

REQUEST LETO
RDDSETDEFAULT("LETO")

IF Leto_Connect(cServer)==-1
msginfo("no hay conexion con el servidor "+cServer)
return NIL
ELSE
msginfo("Conexion establecida con el servidor "+cServer)
ENDIF

aDbf := {{"campo1", "N", 3, 0},;
{"campo2", "C", 15, 0},;
{"fecha" , "D", 8, 0}}

DBCreate( cServer+'prueba.dbf', aDbf )
RETURN NIL

[url=http://img378.imageshack.us/my.php?image=letodb4cj9.jpg]
Image

salu2
paco
Antonio Martinez
Posts: 72
Joined: Tue Sep 11, 2007 3:51 pm

Post by Antonio Martinez »

Biel,
A ver si entiendo... significa esto que si abro una .dbf con Leto, aunque sea en modo compartido, ya no la puedo abrir con por ejemplos un programa clipper.... ????
Creo que esta caracteristica si la permite ADS

Saludos
Biel EA6DD wrote:El parametro Shared de dbUseArea, sirve para indicarle a leto el modo de apertura, pero solo tiene ambito dentro del servidor. Es decir si le indicamos que queremos apertura compartida, nos permitira usar la misma tabla desde diferentes puntos(clientes, programas, etc), pero accediendo atraves del servidor.

LetoDB abre en modo exclusivo los ficheros, lo que imposibilita el uso de los dbf desde una aplicación externa.
jblizama
Posts: 15
Joined: Fri Jul 11, 2008 3:29 am

Ayuda

Post by jblizama »

Paco.

Para probar tu codigo, le pedi el computador a mi hijo, despues de una mirada de "donde la viste", me lo presto..., instale todo desde cero, incluido leto..., copy & paste para el codigo de el blog de Biel, al compilar, sorpresa... se conectaba pero no hacia nada, es decir, no creaba la tabla de datos...(En mi pais hay una exclamacion para esto...CHUUUUUUUU...)

Despues de unos intentos fallidos, elimine los espacios en blanco que hay entre las claves y sus valores para en el archivo letodb.ini, stop para letodb.exe y reinicio nuevamente, ejecucion de tu codigo y FUNCIONA....

Parece ser que letodb no quiere estos espacios en su archivo ini...

Salud...
Francisco Horta
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Post by Francisco Horta »

jblizama,

Pero estara peleado conmigo el letodb? hice _ como tu y nada no funciona, me pasas la .lib que tu usas, con que versionde harbour enlazas?
gracias
paco
jblizama
Posts: 15
Joined: Fri Jul 11, 2008 3:29 am

Ayuda

Post by jblizama »

Paco:

Uso la ultima MiniGUI Extend, y el archivo zip de el Blog de Biel donde estan comprimidos los tres archivos letodb.exe, rddleto.lib, manage.exe

1.- Crear una carpeta C:\letodb
2.- Descomprimir letodb.zip en la carpeta creada.
3.- Copiar el archivo rddleto.lib en C:\MiniGUI\Harbour\Lib
4.- Modificar en brmake.ini para agregar la librería rddleto.lib
5.- Crear la subcarpeta C:\letodb\data
6.- Crear el archivo letodb.ini en C:\letodb con lo siguiente:

Port=2812
DataPath=c:/letodb/data
Logfile="letodb.log"
Default_Driver=CDX

7.- Crear una carpeta C:\letoprg
8.- Crear un archivo leto.prg en esa carpeta, y copia el código de prueba.
9.- Ejecutar el archivo letodb.exe
10.- Compilar y Ejecutar el archivo leto.prg

Salud
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post by Biel EA6DD »

Paco, vuelve a descargarte letodb.zip de mi blog, hay una mejora con el manejo de path y fichero ini. Ademas le he añadido que registre en el fichero de log, el datapath y el puerto que esta usando el server.

Yo he probado el codigo y el ini tal cual los pones aqui, y ha funcionado correctamente.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post by Biel EA6DD »

Hola Antonio
En principio si, significa justo lo que has entendido. Supongo que en el momento de diseño se deicido como una medida preventiva, para evitar inconsistencia en los datos e indices.
ADS por defecto tampoco permite el uso compartido con otras aplicaciones, pero dispone de una funcion AdsLocking(.f.) que desbloquea los dbfs y permite su uso por otras aplicaciones.

Este es un proyecto opensource, podeis hacer vuestro aportaciones y sugerencias en la lista de programadores.
Antonio Martinez wrote:Biel,
A ver si entiendo... significa esto que si abro una .dbf con Leto, aunque sea en modo compartido, ya no la puedo abrir con por ejemplos un programa clipper.... ????
Creo que esta caracteristica si la permite ADS
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

Francisco Horta wrote:jblizama,
Hice lo que me sugeriste, y no funiono, sigo sin entender porque si me marca que establece la conexion, pero no hace nada mas.
aqui dejo el .prg esta muy basico y corto, si alguien lo puede probar a ver si le funciona, todo lo hago desde el disco local c

#Include "Fivewin.ch"

FUNCTION Main()
LOCAL cServer := '//localhost:2812/'
LOCAL aDbf := {}

REQUEST LETO
RDDSETDEFAULT("LETO")

IF Leto_Connect(cServer)==-1
msginfo("no hay conexion con el servidor "+cServer)
return NIL
ELSE
msginfo("Conexion establecida con el servidor "+cServer)
ENDIF

aDbf := {{"campo1", "N", 3, 0},;
{"campo2", "C", 15, 0},;
{"fecha" , "D", 8, 0}}

DBCreate( cServer+'prueba.dbf', aDbf )
RETURN NIL

[url=http://img378.imageshack.us/my.php?image=letodb4cj9.jpg]
Image

salu2
paco

paco: yo recien logré hacerlo funcionar, y te digo como:


creé este archivo ini en la carpeta c:\letodb --> letodb.ini

Port=2812
DataPath=c:\letodb\dati
Logfile="letodb.log"
Default_Driver=CDX

ejecuté letodb.exe que se encuentra en la carpeta c:\letodb





Code: Select all

FUNCTION LetoDbProva()

   LOCAL cServer:="//127.0.0.1:2812/"

   REQUEST Leto
   RDDSetDefault("Leto")
   IF Leto_Connect(cServer)==-1
      MsgAlert("No se puede establecer la conexión.","Verifique!")
      RETURN (NIL)
   ENDIF

   DBUseArea(.T.,, cServer + "categ.d07", "categ2" )

    msginfo( categ2->( reccount() ) )
   categ2->( browse() )

   categ2->( DbCloseArea() )

RETURN (NIL)

hasta ahi mis pruebas.

como hay que hacer para que letodb abra las bases de datos en modo compartido?

otra cosa, vi que cuando abre un indice que tiene funciones al interno, obviamente da error... una mala practica que hice cuando comencé a realizar esta aplicación hace 7 años, pero que me complicaría cambiar ahora. (se que no tiene solución, mas que cambiar el modo que creo los indices)

Saludos.
Pedro Gonzalez
User avatar
pymsoft
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia
Contact:

Post by pymsoft »

mirando server.prg en esta funcion: hs_opentable()

està puesto en modo fijo el parametro para abrir en modo exlusivo las bases de datos, creo que ahi esta la cosa para abrirlos en modo compartido.

cambiando esta linea, las abre en modo compartido (no se que otras consecuencias puede tener...)


dbUseArea( .F.,Iif(nDriver==1,"DBFNTX",Nil),oApp:DataPath+cName,cRealAlias,.T.,.F.,Iif(!Empty(cdp),cdp,Nil) )


saludos
Pedro Gonzalez
Post Reply