![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Vamos por parte:
1º.- Lo que me comentas de la duda, no te has dado cuenta que mas abajo, vuelvo a inicializar "carpeta" de esta forma: Código:
carpeta:=ExtractFilePath(ParamStr(0))+'Datos\NET'; 2º.- Como tu comentas, el error parece producido por un problema de relacion, pero no lo entiendo, ya que si ejecuto el programa desde el servidor (con win98) y habro las tablas no se produce ningún error, mientras que si ejecuto el programa desde el cliente (con winxp) me da este error. El programa es el mismo, con las mismas lineas de codigo y en el mismo orden, con lo cual no entiendo como en un lado puede darme un error de maestro-detalle y por el otro lado no. Los dos programas acceden a la misma base de datos. Asi pues, pienso que el error debe de estar producido por otro motivo. Por cual? esa es la cuestión. 3º.- Si por ahorrar codigo, no lo he puesto pero hago todo lo que dices antes de abrir las tablas. 4º.- Con la unidad de red no hay problema, ya que es el equipo que tiene WinXP el que se conecta a la base de datos a traves de ella. El que tiene Win98 tiene la base de datos de forma local. 5º.- Lo del alias, gracias por el codigo, pero yo lo que hago es que en la instalacion creo directamente los alias. Bueno, gracias por tus comentarios, pero el error sigue produciendose. Seguiré probando. Si alguien me suguiere alguna otra idea, será bien recibida. Saludos.
__________________
El saber no ocupa lugar. |
|
#2
|
||||
|
||||
|
No ví que cambiabas el valor de "carpeta" porque
como has usado las etiquetas "code" se ve todo en negro y no resalta, con las etiquetas "delphi" se vería mejor ![]() Quizás esto te sirva, es para modificar: - los bloqueos oportunistas de WinNt (desactivar ) - la cache de escritura en segundo plano (desactivar la cache en los ordenadores clientes, en tu caso, es precisamente el XP) Otra cosa no se me ocurre de momento ![]() Saludos y Suerte.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 10-10-2007 a las 20:56:52. |
|
#3
|
|||
|
|||
|
Es verdad, utilizare las etiquetas delphi.
Aun no he probado lo que me has comentado, pero te indico una situacion que se esta produciendo y no me habia dado cuenta. Como veras en el código, el directorio PrivateDir es la carpeta "Priv" que se encuentra en el patch donde se encuentra el ejecutable (ej: C:\PROG\TRANS\PRIV) y la base de datos esta alojada en "C:\PROG\TRANS\DATOS". Segun el codigo que yo pongo, los ficheros "paradox.lck" y "pdoxusrs.lck" deben crearse dentro de "Priv" y es así, pero además se crean en "DATOS", es decir, cuando ejecuto la aplicacion se crean dos ficheros (paradox.lck, pdoxusrs.lck) en "Priv" y otros dos en "Datos". Creo que esto no debe ser así. Y ademas, cuando cierro la aplicación se eliminan de forma automatica los ficheros que se habian creado en "Datos", pero los de "Priv" no se eliminan. Anteriormente me comentaste que si abria la sesion y he estado revisando el codigo y despues de asignar los directorios a la sesion , lo que hago es que al database y a las tablas le asigno el alias que apunta a la BD. Lo siguiente que hago es abrir una tabla (Tusuarios.open) y no tengo puesto nada como "Session.open". Puede ser esto la causa? Donde tendría que abrir la session? y Como? Antes de cerrar el programa, debo cerrar la session con codigo o se cierra ella de forma automatica? Bueno, haber si con estos nuevos datos, se te ocurre algo. Gracias por tus comentarios. Saludos.
__________________
El saber no ocupa lugar. |
|
#4
|
||||
|
||||
|
Los archivos lck se crean en ambas carpetas. Se deben crear en el servidor para que Paradox sepa los registros que se estan editando en toda la red.
Primero borras los lck de las 2 ubicaciones, despues abres la session y despues conectas el TDabase, por último abres las tablas. En principio, al abrir una tabla, Delphi mira a que Session pertenece, si no tiene Session, mira en el TDatabase, por último conecta el TDatabase (todo lo hace automáticamente). Ya puestos a borrar, borra tambien el archivo .NET del servidor al mismo tiempo de borrar los LCK, porque se queda en un corte de luz o apagados bruscos del sistema. Para cerrar, al revés, primero cierras la Session y despues el TDatabase, Delphi lo hace automáticamente al destruir los objetos, si obtienes algún problema puedes añadirlo, total, son 2 lineas y aclaras el código .Al usar el ConfigXP no notarás nada en especial, pero se sabe que hay que retocar esas propiedades del registro, Ians Marteens lo dice en su artículo "añadiendo estabilidad a Paradox". Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#5
|
|||
|
|||
|
Creo que me estoy liando un poco.
Vamos a ver: - Los ficheros *.lck , donde se deben crear, en el servidor o en el cliente. Es decir: Con este codigo le indico al programa que los cree en el cliente, luego existiran un par de estos ficheros por cada ejecución del programa.´ ó Con este codigo le indico al programa que los cree en el servidor, luego existiran un único par de ficheros lck, independientemente del número de clientes que se este ejecutando. Cual de las dos formas es la correcta???? ; En el código que puse antes arriba esta puesta la primera. - Estos ficheros ( los lck) son los que se encargan de controlar que registros se estan editando y teóricamente si yo en un cliente estoy editando el registro dos de la tabla proveedores y ejecuto otro cliente e intento editar el resgistro dos de la tabla proveedores, debería dar un error. Es esto correcto? Por que con el código que yo he puesto antes, esto a mi no me pasa. Es decir que desde dos clientes puedo editar el mismo registro a la vez. - Ya he probado lo de desactivar la cache y los bloqueos, pero sigue dandome el mismo error al abrir las tablas. Yo creo que debe haber una incompatibilidad de winxp a win98, ya que he probado ejutando el programa en modo servidor en el equipo que tiene el winxp y habre bien las tablas. Haber si me voy aclarando un poco. ![]()
__________________
El saber no ocupa lugar. |
|
#6
|
||||
|
||||
|
Cita:
Y se crean 2 pares de archivos LCK. Un par en el servidor y otro par en la carpeta PrivateDir, y no me preguntes por qué, porque no lo sé , es más, el par de archivos LCK del PrivateDir puede que no lo veas, sólo aparece mientras se edita el registro. Cita:
Como dices, debe aparecer una excepción diciendo "no se puede editar el registro porque otro usuario lo está utilizando" (mensaje en inglés). te aconsejo hacerlo todo por código, incluso crear los alias, ¿por qué? por la configuración del driver, la ruta del servidor, etc. Cita:
MensajeAdd añade textos a un Memo para ver todos los parámetros de configuración. DtbPpal es el TDatabase Todo esto va dentro de tu procedimiento "Configuracionred". Verás que te he puesto la definición de un registro TGlobal y TParadoxConfig, lo he hecho para que solo tengas que modificar lo mínimo posible: - Buscar "dtbppal" y sustituir por el nombre de tu componente TDatabase. - sustituir las lineas "ini.ReadString...." por tus rutas de la base de datos, del .net etc. El resultado para mí es: Código:
-------------------------------
INICIO DE SESION
-------------------------------
14/06/2006 10:31:01 >> 2 Alias
14/06/2006 10:31:01 >> 2.1 Creando Alias: prog1 para la carpeta: \\prog\tablas
14/06/2006 10:31:01 >> 1 Configurar la sesion
14/06/2006 10:31:01 >> 1.1 Usando Carpeta NET: \\PC1\prog\
14/06/2006 10:31:01 >> 1.2 Usando carpeta temporal: C:\windows\TEMP
14/06/2006 10:31:01 >> 1.3 Modo Sesion: cmAll
14/06/2006 10:31:01 >> 1.4 Modo servidor: Si
14/06/2006 10:31:01 >> 3 Configurar Base de datos:
14/06/2006 10:31:01 >> 3.1 Asignando Controlador
14/06/2006 10:31:01 >> 3.2 Carpeta de Base de Datos: \\PC1\prog\tablas
14/06/2006 10:31:01 >> 3.3 Asignando parámetros de Base de Datos (dtbppal)
14/06/2006 10:31:01 >> PATH = \\PC1\prog\tablas
14/06/2006 10:31:01 >> 4 Alias: prog1
14/06/2006 10:31:01 >> 4.1 Alias asignado
14/06/2006 10:31:01 >> 5 Sesion Activa
14/06/2006 10:31:01 >> 6 **Conectado a Base de Datos**
Como verás, el archivo .Net lo tengo configurado en el mismo sitio que el ejecutable en el servidor, (no tengo una carpeta especial para él) aunque eso da igual. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 14-06-2006 a las 11:26:36. |
|
#7
|
|||
|
|||
|
Hola, perdona por no haber contestado antes, pero estoy bastante liado, por culpa de este error.
He utilizado el codigo que me has puesto, sustituyendo lo que me comentabas y creando un alias que no existia. Pero, , el problema sigue siendo el mismo. Si ejecuto el programa en el servidor (tiene win98) no hay problemas, pero si ejecuto el programa desde el cliente (tiene winxp) al abrir cualquier tabla me da el siguiente error:Código:
Detail Table Open Operation failed Table: detfacturas.DB Estoy desesperado, aburrrido y cansado, no hay manera, pero hay que seguir insistiendo. Haber si se te ocurre otra cosa. Gracias.
__________________
El saber no ocupa lugar. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Conexion de base de datos en win98 y winxp | monicasierrar | Conexión con bases de datos | 6 | 25-05-2005 19:54:51 |
| Paradox en Red con WinXP y Win98 | EstebanWeb | Conexión con bases de datos | 17 | 11-03-2005 18:10:58 |
| Capturar el usuario de WinXp y Win98?? | danytorres | API de Windows | 1 | 25-01-2005 22:08:21 |
| Mi Exe no funciona en Win98 | pcicom | OOP | 3 | 13-12-2004 16:43:38 |
| Al llevar .dpr de WinXP a Win98 no existe .dpr y problema nombres archivo largos | images | Varios | 2 | 10-09-2004 23:25:27 |
|