Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   borrar archivos lck (https://www.clubdelphi.com/foros/showthread.php?t=30612)

david duarte 11-04-2006 16:12:02

borrar archivos lck
 
Como le puedo hacer para borrar los archivos lck que se crean en el servidor???

Ya los trate de borrar directamente desde el servidor, pero me dice que no los puede borrar, que me asegure de que no estan siendo utilizados por otra persona o que tengo los permisos necesarios para hacer esa operacion.

como puedo saber si algun usuario esta conectado? con esto me refiero al scktsrv, o solamente tengo que poner las tablas en falso y con eso??

La verdad es que no puedo borrarlos, ya se me quemó el cerebro de tanto pensar!!
Saludos!!!!
Gracias

alapaco 11-04-2006 16:19:14

Tenes que tener cerradas todas las aplicaciones que usen el BDE y este apuntando a ese servidor..

Incluidos el Database Desktop, SQL Explorer, tu aplicación, etc..

david duarte 12-04-2006 15:01:27

Hola!!

Que quieres decir con tener cerradas todas las aplicaciones que usen el bde???

Entonces necesito hacer otro programa para poder borrarlas,

Como puedo saber si algun cliente esta haciendo uso del bde o de alguna otra cosa del sistema??

Cómo le puedo hacer para bloquear el sistema y que nadie mas se conecte (que nada mas se puedan desconectar los que ya estaban conectados).
Necesito hacer que esto sea automático.

p.e. si se crearon archivos lck a la media noche o cerca de la media noche (que casi no hay usuarios del sistema), bloquear la aplicacion, desconectar a los usuarios que lo esten y borrar los archivos lck.

No encuentro la solucion, ahorita voy a probar cerrando las tablas.

Gracias por su atencion.!!!!
Saludos

alapaco 12-04-2006 16:37:01

Yo lo que hacía era que el primero que entraba a la aplicación eliminaba los .lck y los .net y mientras hacía esto no dejaba a nadie entrar al sistema, tal vez deberías hacer lo mismo.

david duarte 12-04-2006 17:44:22

ok, estoy de acuerdo, pero como hago eso??, no tengo idea.

Tienes algun ejemplo o idea en codigo. Sorry, pero no se me ocurre nada.

Hay otro problema, que te comente hace rato, como se que es el primero en entrar o que no hay otro usuario conectado???
ese es mi problema, que no encuentro la solucion a esto

Saludos!!!!
Seguire probando.

alapaco 12-04-2006 18:08:01

Guarda un valor en un archivo .ini, si ese valor es 0 no hay ningun usuario conectado, cuando se conecte el primer usuario le pones el valor 1, si tiene el valor no dejas entrar a nadie hasta que el primero borró todos los archivos y volvió a poner el valor en 0, se entiende ?

Lepe 12-04-2006 18:13:13

Otra solución:

Usando GetUsers

Debes tener el Tdatabase abierto y la session para poder preguntar.Por tanto:
-Abres el tdatabase y Session
- preguntas el número de usuarios.
- si nada más que hay 1 usuario (el que pregunta)
  • - Creas un archivo en el servidor como semaforo (Mantenimiento.txt)
  • - cierras la session y el Tdatabase
  • - mandas a borrar los archivos lck y el .net (que tambien se queda a veces).
  • - borras el semaforo (Mantenimiento.txt)
- Abres de nuevo el Tdatabase y Session para entrar normalmente a la aplicación.

Para borrarlos, lo fácil es mandar a borrar y listo:
- si hay más usuarios, windows no deja borrarlo
- Si no hay más usuarios, se borran.

Para que nadie entre al programa:
- Antes de conectar la base de datos, miras si existe el archivo Mantenimiento.txt en el servidor, si existe, mensaje al usuario y con timer de 20 segundos preguntas hasta que no exista el archivo.

Saludos

david duarte 28-04-2006 00:47:15

Hola!!!!

Voy a checar eso que me recomiendan. Ahora paso lo siguiente:

Borre el archivo lck de el servidor.
Pero ahora al querer mostrar el reporte me dice que no se puede porque todavia existe el archivo pdoxusrs.lck, lo cual es incorrecto. ya lo verifique en el servidor y nada mas tengo el .net.

Porque hace esto?? Alguien sabe, necesito mostrar el reporte, porque si no no sirve de nada el sistema.

Muchas gracias!!!!
Saludos!!!!

Lepe 28-04-2006 10:58:31

Mira en el directorio privateDir puede que allí esté el archivo .lck, si no, haz una búsqueda en todo el PC del servidor y cliente.

Si el te dice que existen.... es que existen ;)

saludos

david duarte 05-05-2006 18:06:56

Hola!!!!

Fijate que sigo con el mismo problema.
El error me lo marca cuando quiero ver un reporte.
Tengo 4 laboratorios ó 4 modulos, y en 3 de ellos no hay ningun problema, no me marca ni un error en cuanto al pdoxusrs.lck, pero en 1 de ellos me dice que tiene otro controlados .Net. la verdad es que no se que hacer. estoy que se me quema el cerebro de tanto checar y checar.

A alguien le ha pasado esto??
tienen alguna idea de que esta pasando???

Por cierto, otra pregunta, como puedo saber si esta inicializado el bde, ya que cuando quiero saber cuantos usuarios estan conectados, al inicializar el programa, me dice que no se puede inicializar el bde, y ya lo instale otra vez, pero me sigue marcando lo mismo.

Disculpen por poner dos preguntas en un solo tema.

Muchas gracias
Saludos!!!!

Lepe 06-05-2006 08:37:20

Si te dice que está controlado por oro .Net, es porque tiene una session distinta, es decir, esa query / TTable, en su propiedad SessionName no tiene lo mismo que el resto de TTables y Querys.

Tambien puede ser que la tengas abierta desde diseño la consulta y en ejecución te dé esos problemas.

En cuanto a lo del bde, te comenté antes que en tiempo de ejecución tienes que tener abierto el TDatabase y el Session antes de usar el GetUsers.

Si no usas ningun Session, mira en el objeto TDabase.Session (creo recordar).

Saludos

david duarte 10-05-2006 19:13:35

La verdad es que no entiendo nada.

Tengo un programa que es el que funciona como servidor, en ese programa tengo las tablas, y ese programa esta ejecutandose en un servidor

Y en mi programa cliente, tengo cliendatasets. Entonces no se como hacerle. no uso ningun tdatabase ni tsession. es por eso que no comprendo nada, estuve investigando, pero no entiendo.

Si no es mucha molestia me podrian explicar bien como hacer lo del tsession o tdababase??
o alguna pagina en donde pueda encontrar paso a paso como crear el tsession o tdatabase.

Muchas gracias por tu tiempo.
Te lo agradezco de antemano
Saludos!!!!

Lepe 11-05-2006 17:45:46

En cuanto tú pones un objeto TTable/Tquery en u programa, delphi automáticamente añade un objeto TDatabase y TSession, pero claro, son ocultos, es decir, si donde tienes las tablas escribes "Session." delphi entenderá lo que estas poniendo y no aparecerá errores de compilacion.

Lo mejor para estos casos es poner tú mismo un objeto TDatabase y un TSession, hace las cosas más comprensibles al principio.

Y ahora si. Todas las tablas que tengas tienes que enlazarlas con el TDatabase y por ejemplo, en las Querys tiene la propiedad SessionName, que debe coincidir con la propiedad Session.SessionName.

El Tdatabase tambien debe estar enlazado al TSession mediante sus propiedades.

Busca en el foro por NetFileDir que debe estar correctamente configurado para poder usar paradox en red.

Y ahora, relee los mensajes anteriores ;).

Saludos

david duarte 11-05-2006 19:57:18

Primero que nada, antes, podia entrar y podia ver los reportes normalmente, pero no se que le paso, que tiene como 15 dias que no me deja ver el reporte de un laboratorio, y todo esto es cuando activo el query.

En mi forma en donde se capturan los datos. puse un dbgrid, una datasource y un query, en el query(propiedad sql) le pongo mi query y posteriormente la activo y si me muestra los registros correspondientes, entonces no se porque cuando quiero activar el query en tiempo de ejecucion me marca que el directorio esta controlado por otro .Net.

Volviendo a lo del programa servidor, que es donde tengo las tablas.
En el programa cliente, te comentaba que solamente tengo clientdatasets, y no se si eso tenga que ver, ademas, desde el principio, le ponia al session de cada tabla default, Crees que si termino mi programa servidor y lo reinicio, pueda llegar a funcionar, estuve checando el codigo de los demas laboratorios para compararlo con el que no funciona, y no hay ninguna diferencia.

La verdad es que ya me esta sacando canas verdes.
Probe poniendo en el programa que funciona como servidor el session y el tdatabase, pero al momento de querer activar el tdatabase, me pide una contraseña y se supone que tengo todos los privilegios para ese servidor.
y en cada tabla no encuentro la opcion para ligarla con el TDatabase.

Es un problema con esto.
Bueno voy a seguir buscando en la red y pfobando a ver si puedo encontrar algo

Muchas Gracias por tu tiempo y consejo
Saludos!!!!

Lepe 12-05-2006 18:43:09

Que funcione no significa que esté bien.

Para comprobar que todo está bien, como ya he dicho en más de una ocasión en estos foros, tienes que editar el mismo registro desde 2 ordenadores distintos. Si te aparece un cartel diciendo que no se puede editar porque lo está usando otra persona.... entonces ¡¡¡ EUREKA !!! todo está perfecto.

Si no sale el cartel entonces tienes fallos por ahí, no necesariamente de código fuente, sino de conceptos.

Antes de empezar a marearte, haz la prueba que he comentado. Despues puedes continuar evisando este hilo donde se habla extensamente del tema, de hecho son 41 mensajes hablando de paradox, las sessiones y demás.

Lamentablemente el artículo "paradox en red" del que se habla aún no está disponible por el fallo del servidor de ClubDelphi, pero si sigues todo el hilo verás que se habla de TODO.

Saludos.

david duarte 15-05-2006 16:37:21

Hola!!!!

Primero que nada quiero comentarte que no se que haya pasado, pero ya solucionè el problema que tenia.
Simplemente termine el socketserver y mi programa que funciona como servidor y los volvi a arrancar y funcionó el reporte del laboratorio que no mostraba los reportes, creo que el usuario se trabado, como si estuviera utilizando el bde o paradox, por eso me decia que existia el archivo .lck aunque fisicamente no existiera.

Con respecto a lo de paradox en red, ya he impreso y leido muchas veces ese articulo, y ya lo entendi, lo que no entiendo es. Que en mi programa cliente, no tengo ninguna tabla como tal, sino que tengo utilizo clientsdataset.

No importa que las tablas residen en el servidor???,
En el programa que funciona como servidor, tengo los TTables y TDataSources, y TDataSetProvider( entonces desde mi programa cliente me enlazo a ellas por medio de un ClientDataset.

O es mejor tener las TTables en el programa Cliente? y en el servidor alojar solamente las tablas(paradox). ya que en el servidor( windows nt) ejecuto el socket server y mi programa servidor, no se si sea necesario tener un programa que funcione como servidor o como lo dije anteriormente solamente ejecutar el socket server? Creo que ya me hice un poco de bolas.

Muchas gracias por su tiempo
Saludos!!!!


La franja horaria es GMT +2. Ahora son las 05:00:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi