LetoDB
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
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
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
- Alfredo Arteaga
- Posts: 326
- Joined: Sun Oct 09, 2005 5:22 pm
- Location: Mexico
- Contact:
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...
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)
Abrir compartido
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
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
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
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.
LetoDB abre en modo exclusivo los ficheros, lo que imposibilita el uso de los dbf desde una aplicación externa.
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
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]
salu2
paco
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]
salu2
paco
-
- Posts: 72
- Joined: Tue Sep 11, 2007 3:51 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
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.
Ayuda
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...
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...
-
- Posts: 845
- Joined: Sun Oct 09, 2005 5:36 pm
- Location: la laguna, mexico.
Ayuda
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
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
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
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.
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
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]
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
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
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