LetoDB

Postby Francisco Horta » Mon Jul 14, 2008 10:25 pm

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
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Postby Alfredo Arteaga » Tue Jul 15, 2008 2:01 am

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  Expand view  RUN
#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)
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Abrir compartido

Postby jblizama » Tue Jul 15, 2008 2:27 am

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

Postby jblizama » Tue Jul 15, 2008 2:40 am

Paco:

Prueba dos cosas y cuentanos...

1.- Ejecutar todo desde el disco local C:

2.- Crear una tabla desde el codigo.

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

Postby Biel EA6DD » Tue Jul 15, 2008 5:47 am

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
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Kleyber » Tue Jul 15, 2008 11:41 am

jblizama,

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

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Postby Francisco Horta » Tue Jul 15, 2008 6:18 pm

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
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Postby Antonio Martinez » Tue Jul 15, 2008 6:41 pm

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.
Antonio Martinez
 
Posts: 72
Joined: Tue Sep 11, 2007 3:51 pm

Ayuda

Postby jblizama » Tue Jul 15, 2008 8:03 pm

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...
jblizama
 
Posts: 15
Joined: Fri Jul 11, 2008 3:29 am

Postby Francisco Horta » Tue Jul 15, 2008 8:49 pm

jblizama,

Pero estara peleado conmigo el letodb? hice los cambios como tu y nada no funciona, me pasas la .lib que tu usas, con que versionde harbour enlazas?
gracias
paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Ayuda

Postby jblizama » Tue Jul 15, 2008 10:26 pm

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
jblizama
 
Posts: 15
Joined: Fri Jul 11, 2008 3:29 am

Postby Biel EA6DD » Wed Jul 16, 2008 5:56 am

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: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Biel EA6DD » Wed Jul 16, 2008 6:05 am

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
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby pymsoft » Wed Jul 16, 2008 1:23 pm

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  Expand view  RUN
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

Postby pymsoft » Wed Jul 16, 2008 1:38 pm

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
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 63 guests