PDA

Ver la Versión Completa : Páradox En Red


ingacg
22-05-2003, 02:03:00
Hola!

Estoy desarrollando una aplicación que contiene una base de datos en páradox, a la cual deberán accesar más de una pc conectadas en red, la base está en una de ellas, pero cuando un segundo usuario desea accesar a dicha base el bde manda un error ".lck", supongo el el primer usuario tiene bloquedo el directorio donde se encuentra la bd, si alguien de uds sabe a que se debe y como puedo hacer que la accesen n usuarios a la bd, se lo agradeceré.

Ruben_Cu
22-05-2003, 02:57:09
Hola ingacg, parece que no tienes bien la configuración para el trabajo en red, leete este truco del club que te explica como hacerlo.
http://www.clubdelphi.com/vertruco.php?id=265 (http://)
Saludos

José Luis Garcí
22-05-2003, 13:35:17
Prueba en esta dirección de un tema que ya se trato en el anterior historico, pero asegurate de tener bien configurado todos los equipos de la red donde va a correr el programa.

http://www.clubdelphi.com/foros/archivo/viewtopic.php?t=18832&highlight=ayuda+en+red

Un saludo desde Canarias.

ingacg
22-05-2003, 16:44:47
Muchas gracias por haberse tomado la molestia de contestar mi pregunta, hecharé un vistaso a las ligas que me dicen y más tarde les inforaré cómo me fué. Espero poderles devolver el favor en futuras dudas que tengan.


---Pues efectivamente, eso era todo, de nuevo gracias, ya corre mi aplicación!----

Saludos desde México.

jeremiselxi
07-09-2008, 21:20:41
amigos del foro quiero pedierles si serian tan amables de los link que estan mas arriba los pusieran a funcionar ya que tambien me intereza este tema :) gracias.

hecospina
08-09-2008, 14:30:20
Hola

Debes compartir en un equipo una carpeta donde alojaras el archivo pdoxusers.net
por ejemplo "red"

Para trabajar en red las tablas paradox debes configurar el bdeadministrator en forma adecuada
Vas a encontrar una pestaña que dice configuration, dentro de ella una opcion que dice Drivers y dentro de drivers Native, dentro de esta encontraras Paradox, esto es lo que queremos configurar

En el panel derecho encontraras NET DIR "direccion de red"
en este campo debes digitar la direccion de la carpeta creada, debes tener en cuenta que en el equipo donde esta creada la carpeta compartida la direccion debe ser igual al del resto de la red

Te doy un ejemplo con un equipo llamado servidor

\\servidor\red (file://\\servidor\red)
tambien puedes digitar la ip del servidor
\\192.168.0.23\red (file://\\192.168.0.23\red)

servidor nombre del equipo donde compartiste la carpeta red
este equipo siempre debe estar encendido indiferentemente que sea el servidor de la red o no

Algo mas dentro de Configuration encontraras tambien "System" dentro de el "INIT" en el panel derecho encontraras LOCAL SHARE para la maquina donde tienes la base de datos paradox debe estar en TRUE para los demas equipos nodos que accesan a dicha base de datos debe estar en FALSE

No dejes de leer lo que te han recomendado, vas a encontrar otras cosas que te pueden mejorar el rendimiento

Consejo, si puedes migrate a firebird o interbase, son realmente bases de datos mucho mas estables que paradox:)

jeremiselxi
08-09-2008, 17:57:08
Hola

Debes compartir en un equipo una carpeta donde alojaras el archivo pdoxusers.net
por ejemplo "red"

Para trabajar en red las tablas paradox debes configurar el bdeadministrator en forma adecuada
Vas a encontrar una pestaña que dice configuration, dentro de ella una opcion que dice Drivers y dentro de drivers Native, dentro de esta encontraras Paradox, esto es lo que queremos configurar

En el panel derecho encontraras NET DIR "direccion de red"
en este campo debes digitar la direccion de la carpeta creada, debes tener en cuenta que en el equipo donde esta creada la carpeta compartida la direccion debe ser igual al del resto de la red

Te doy un ejemplo con un equipo llamado servidor

\\servidor\red (file://\\servidor\red)
tambien puedes digitar la ip del servidor
\\192.168.0.23\red (file://\\192.168.0.23\red)

servidor nombre del equipo donde compartiste la carpeta red
este equipo siempre debe estar encendido indiferentemente que sea el servidor de la red o no

Algo mas dentro de Configuration encontraras tambien "System" dentro de el "INIT" en el panel derecho encontraras LOCAL SHARE para la maquina donde tienes la base de datos paradox debe estar en TRUE para los demas equipos nodos que accesan a dicha base de datos debe estar en FALSE

No dejes de leer lo que te han recomendado, vas a encontrar otras cosas que te pueden mejorar el rendimiento

Consejo, si puedes migrate a firebird o interbase, son realmente bases de datos mucho mas estables que paradox:)

--------------------
mi amigo gracias por haberme respondido, pero quiero hacerte una pregunta, al momento de poner nuestra carpeta en red de forma compartida, y pongamos de ejemplo que una persona de mi compañia quiera aceder a mis bases de datos, y copiarla o hacer un desacato de informacion, que puedo hacer para que las personas no pongan ejemplo en el explorador \\server (file://\\server) y ahi busque la carpeta de la bd compartida y me copie mi informacion o me haga desacato valga la redundancia? puedo poner la carpeta en modo oculto? o dime k hago:). ah, otra cosa, muchisimas gracias por tu respuesta

hecospina
08-09-2008, 20:24:08
Hola
En la carpeta red no tiene que estar la aplicacion ni los datos, solo se crea para que se cree el archivo pdoxuser.net, si alguien accesa a esta carpeta solo encontrara este archivo

Te pregunto, como haces para acceder a la informacion desde las maquinas nodo?
No es necesario compartir la carpeta donde estan ?:)

Lepe
09-09-2008, 14:08:08
Como ya dijo hecospina, la base de datos debe estar compartida, de otra forma los "clientes" no tendrán acceso a la Base de datos.

Si necesitas "esa protección", entonces no puedes usar paradox (al menos que yo sepa), puedes migrar a Firebird que un SGBBDD en el que no tienes que compartir la BBDD, sino que un programa en memoria en el servidor se encarga de aceptar las solicitudes (por SQL) de las consultas y devuelven los datos.

Ahora, si en el servidor han compartido la unidad raiz o bien, tiene acceso cualquiera que pueda compartir la carpeta donde reside la BBDD... poco podrás hacer.

Saludos

hecospina
09-09-2008, 16:32:26
Como ya lo comente
La carpeta "red" no debe estar en el servidor de datos, solo debe existir en un equipo, cualquiera de los de la red, incluso no tendria que tener tu aplicacion instalada, la unica condicion es que permanezca encendido cuando desees trabajar en tu aplicacion

Lepe
10-09-2008, 10:22:01
Me parece que en lugar de aclarar cosas, estoy liando más al personal.

Yo entiendo por carpeta "red" aquella que guardará el archivo ".net", todos los clientes deben acceder a él, por tanto debe estar compartida. Hecospina dice que "no debe estar en el servidor", creo que la frase correcta es: "no tiene por qué estar en el servidor".

Ahora vamos con otro tema, la Base de datos, es decir tus archivos .db: esa carpeta sí debe estar compartida, para que obviamente todos los ordenadores puedan acceder a él y debe estar compartida con acceso global (permiso de escritura), (ya que un ordenador modificará los archivos al crear una nueva factura, etc). Paradox es una base de datos de escritorio, aunque permite que se ejecute en red y de modo compartido, pero no tiene un esquema de seguridad definido, por tanto, cualquiera que ponga \\server\< nombre carpeta base de datos> tiene acceso a la base de datos.

Faust
10-09-2008, 19:56:10
Creo que es mucho rollo usar paradox en red...

Recomendaría migrar a Interbase 6, Firebird o MySQL... gratuitos por cierto.

jeremiselxi
11-09-2008, 00:27:00
Bueno yo buscando y buscando encontre dos formas de como se puede guardar informacion poniendo las .db en una pc servidor y la aplicacion en otra pc cliente.
la primera esta yendo donde dice FTP luego CPPBuilderWin32 y luego en tutoriales el unico que esta ahi es un manual que hice de la primera forma.

el unico inconveniente de esta es que tendremos que crear un alias para ello, aunque se puede usar sin el alias. leanlo por favor y luego diganme que les parecio. la otra la baje de la pagina ajpdsoft.com
tambien subi el ejemplo en FTP luego CPPBuilderWin32 luego elige ejemplos y luego paradoxnet

en el ejemplo esta el manual en español pero hay cosas que no entendiendo, aunque ahi esta el ejemplo aqui esta la parte del codigo que no entiendo


aqui se usa un tSession, un tdatabase,un ttable y un datasource ademas de un modulo.



procedure TMDatos.DataModuleCreate(Sender: TObject);
var
ruta, servidor, rutaprivate, rutanet : string;
begin
with tinifile.create (changefileext(paramstr(0),'.INI')) do
try
ruta := readstring ('Datos', 'Ruta', '');
rutanet := readstring ('Datos', 'Ruta net', '');
rutaprivate := readstring ('Datos', 'Ruta PrivateDir', '');
servidor := readstring ('Datos', 'Servidor', '');
if ruta = '' then
begin
while not (ruta <> '') do
ruta := InputBox ('Ruta de los datos...',
'Introduzca la ruta de los ficheros *.db',
'c:\p\datos ó \\a\PRed\datos');
writestring ('Datos', 'Ruta', ruta);
end;
if rutaprivate = '' then
begin
while not (rutaprivate <> '') do
rutaprivate := InputBox ('Ruta de los *.lck...',
'Introduzca el PrivateDir (ruta de los ficheros *.lck)',
'c:\p\temp');
try
CreateDir(rutaprivate)
except
end;
writestring ('Datos', 'Ruta PrivateDir', rutaprivate);
end;
if rutanet = '' then
begin
while not (rutanet <> '') do
rutanet := InputBox ('Ruta del fichero NET...',
'Introduzca la ruta del fichero NET',
'\\a\PRed\datos\net');
writestring ('Datos', 'Ruta net', rutanet);
END;
if servidor = '' then
begin
while not (servidor <> '') do
servidor := InputBox ('Servidor...',
'¿Es este equipo el servidor?',
'si/no');
writestring ('Datos', 'Servidor', servidor);
end;
finally
end;

With mdatos.Session1 do
begin
NetFileDir := RUTANET;
PrivateDir := rutaprivate;
End;
With db do
begin
Params.Clear;
Params.Add('PATH=' + RUTA);
Params.Add('DEFAULT DRIVER=PARADOX');
Params.Add('ENABLE BCD=FALSE');

//NO HE PROBADO SI ESTO FUNCIONA
//SI NO FUNCIONA SE DEBERÁ CONFIGURAR MANUALMENTE
//COMO SE INDICA EN EL PASO 2
if uppercase (servidor) <> 'NO' then
Params.Add('LOCAL SHARE=TRUE')
else
Params.Add('LOCAL SHARE=FALSE');

Connected := true;
End;
table1.active := true;
end;

end.







Todo ese codigo lo pone el autor pero no entiendo si es en cada pc cliente k tengo k poner todos esos datos, o es en una pc cliente nada mas y luego se comparte la carpeta? o si tambien hay que ponerlo en la pc servidor o algo. chequen el ejmplo por favor. Si pudieran ponerle comentarios a estos codigos por favor:-) ademas creo k no necesitamos tantos codigos como lo dice el autor de ese tutorial.

Ahora bien mi pregunta es para k sirve el archivo PDOXUSRS.net?
Y por ultimo para k sirve donde dice LOCAL CHARE =true /false?





CPPBuilderWin32 luego elige ejemplos y luego paradoxnet.

RebeccaGL
24-09-2008, 15:44:47
Hola!

Estoy desarrollando una aplicación que contiene una base de datos en páradox, a la cual deberán accesar más de una pc conectadas en red, la base está en una de ellas, pero cuando un segundo usuario desea accesar a dicha base el bde manda un error ".lck", supongo el el primer usuario tiene bloquedo el directorio donde se encuentra la bd, si alguien de uds sabe a que se debe y como puedo hacer que la accesen n usuarios a la bd, se lo agradeceré.

Lo que tienes que haces:

Crear un componente TDatabase y un TSession

Luego tienes que direccionar, indicarle a tu sistema donde va a leer el PDOXUSRS.NET Ejemplo.

Session.NetFileDir := c:\
Session.PrivateDirr := c:\Temp

Ojo, Todas las aplicaciones deben apuntar a este archivo, al decir aplicaciones me refiero a un mismo programa y no a todos los programas que puedas hacer, osea si tienes un sistema llamado qwerty y lo instalas en tres pc's el sistema qwerty debe apuntar a un solo \qwerty\net\PDOXUSRS.NET al del servidor, pero el qwerty\PrivateDir\Temp es unico para cada sistema no debes compartirlo con ningun otro sistema sino te dara error.

Tienes que reforzar tus tablas creando rutinas de eliminacion y creacion de indices, esto es necesario cuando se te corrompan los indices y se malogren los borras y los rehaces.

Para que tu sistema funcione en red:

Asignas al componente Database y Session asi.
Supongamos que tu PC es el servidor y se llama Juan

Database.Params[0].Path := \\Juan\qwerty (file://\\Juan\qwerty)
Session.NetFileDir := \\Juan\qwerty\net (file://\\Juan\qwerty\net)
Session.PrivateDir := \\Juan\qwerty\Temp (file://\\Juan\qwerty\Temp)

Donde Juan (file://\\Juan) es el nombre de tu pc
Ahora si quieres leer las tablas de otra PC por ejemplo la pc de alberto tienes que poner es:

Database.Params[0].Path := \\Alberto\\qwerty (file://\\Alberto\\qwerty)
Session.NetFileDir := \\Alberto\qwerty\net (file://\\Alberto\qwerty\net)
Session.PrivateDir := \\Juan\qwerty\Temp (file://\\Juan\qwerty\Temp)

Ojo no debes redireccionar el PrivateDir ese dejalo donde se ejecuta tu sistema \\Juan\qwerty\Temp (file://\\Juan\qwerty\Temp)

Ahora porque se escribe dse esta manera \\Juan (file://\\Juan)
Porque segun las convenciones de red asi estan establecidas.

Mira tu Pc se llama Juan
Y lo creaste en c:\Delphi\Proyectos\qwerty

Presionas el boton derecho del mouse y compartes la carpeta qwerty y marcas las dos casillas, ahora solo tendras que poner el nombre de tu PC y la carpeta compartida osea asi: \\Juan\qwerty (file://\\Juan\qwerty) es una forma abreviada que funciona de acuerdo a las convenciones de red.

Cuando instales tu sistema en otra Pc, tienes que tener ya creado un modulo donde tu le indiques al sistema de donde va a leer las tablas por ejemplo:

Instalas el sistema qwerty en la PC Juan - servidor
Instalas el sistema qwerty en la PC Alberto - cliente
Instalas el sistema qwerty en la PC Pedro - cliente

En la pc numero 0001 servidor lo dejas como esta.
en las dos siguientes direccionas solo el Session.NetFileDir que apunten a la pc de Juan oseas asi:

PC Juan
Database.Params[0].Path := \\Juan\qwerty (file://juan/qwerty)
Session.NetFileDir := \\Juan\qwerty\net (file://juan/qwerty/net)
Session.PrivateDir := \\Juan\qwerty\Temp (file://\\Juan\qwerty\Temp)

PC Alberto
Database.Params[0].Path := \\Juan\qwerty (file://\\Juan\qwerty)
Session.NetFileDir := \\Juan\qwerty\net (file://\\Juan\qwerty\net)
Session.PrivateDir := \\Alberto\qwerty\Temp (file://\\Alberto\qwerty\Temp)

PC Pedro
Database.Params[0].Path := \\Juan\qwerty (file://\\Juan\qwerty)
Session.NetFileDir := \\Juan\qwerty\net (file://\\Juan\qwerty\net)
Session.PrivateDir := \\Pedro\qwerty\Temp (file://\\Pedro\qwerty\Temp)

Tambien tienes que crear rutinas de borrado de archivos *.LCK cuando algun usuario resete la pc, el borrado se realiza en el PRivateDir de cada PC.


Saludos.

RebeccaGL
24-09-2008, 15:45:48
Hola!

Estoy desarrollando una aplicación que contiene una base de datos en páradox, a la cual deberán accesar más de una pc conectadas en red, la base está en una de ellas, pero cuando un segundo usuario desea accesar a dicha base el bde manda un error ".lck", supongo el el primer usuario tiene bloquedo el directorio donde se encuentra la bd, si alguien de uds sabe a que se debe y como puedo hacer que la accesen n usuarios a la bd, se lo agradeceré.

Lo que tienes que haces:

Crear un componente TDatabase y un TSession

Luego tienes que direccionar, indicarle a tu sistema donde va a leer el PDOXUSRS.NET Ejemplo.

Session.NetFileDir := c:\
Session.PrivateDirr := c:\Temp

Pero tienes que direccionar de acuerdo a las convenciones de RED

Session.NetFileDir := \\Juan\qwerty\Net
Session.PrivateDirr := \\Juan\qwerty\Temp

Ojo, Todas las aplicaciones deben apuntar a este archivo, al decir aplicaciones me refiero a un mismo programa y no a todos los programas que puedas hacer, osea si tienes un sistema llamado qwerty y lo instalas en tres pc's el sistema qwerty debe apuntar a un solo \qwerty\net\PDOXUSRS.NET al del servidor, pero el qwerty\PrivateDir\Temp es unico para cada sistema no debes compartirlo con ningun otro sistema sino te dara error.

Tienes que reforzar tus tablas creando rutinas de eliminacion y creacion de indices, esto es necesario cuando se te corrompan los indices y se malogren los borras y los rehaces.

Para que tu sistema funcione en red:

Asignas al componente Database y Session asi.
Supongamos que tu PC es el servidor y se llama Juan

Database.Params[0].Path := \\Juan\qwerty
Session.NetFileDir := \\Juan\qwerty\net
Session.PrivateDir := \\Juan\qwerty\Temp

Donde \\Juan es el nombre de tu PC
Ahora si quieres leer las tablas de otra PC por ejemplo la pc de alberto tienes que poner es:

Database.Params[0].Path := \\Alberto\qwerty
Session.NetFileDir := \\Alberto\qwerty\Net
Session.PrivateDir := \\Juan\qwerty\Temp

Ojo no debes redireccionar el PrivateDir ese dejalo donde se ejecuta tu sistema \\Juan\qwerty\Temp

Ahora porque se escribe de esta manera \\Juan\qwerty
Porque segun las convenciones de red asi estan establecidas.

Mira tu Pc se llama Juan
Y lo creaste en c:\Delphi\Proyectos\qwerty

Presionas el boton derecho del mouse y compartes la carpeta qwerty y marcas las dos casillas, ahora solo tendras que poner el nombre de tu PC y la carpeta compartida osea asi: \\Juan\qwerty es una forma abreviada que funciona de acuerdo a las convenciones de red.

Cuando instales tu sistema en otra Pc, tienes que tener ya creado un modulo donde tu le indiques al sistema de donde va a leer las tablas por ejemplo:

Instalas el sistema qwerty en la PC Juan - servidor
Instalas el sistema qwerty en la PC Alberto - cliente
Instalas el sistema qwerty en la PC Pedro - cliente

En la pc Juan el servidor lo dejas como esta.
en las dos siguientes direccionas solo el Session.NetFileDir que apunten a la pc de Juan oseas asi:

PC Juan
Database.Params[0].Path := \\Juan\qwerty
Session.NetFileDir := \\Juan\qwerty\net
[B]Session.PrivateDir := \\Juan\qwerty\Temp

[B][B]PC Alberto
Database.Params[0].Path := \\Juan\qwerty
Session.NetFileDir := \\Juan\qwerty\net
Session.PrivateDir := \\Alberto\qwerty\Temp

PC Pedro
Database.Params[0].Path := \\Juan\qwerty
Session.NetFileDir := \\Juan\qwerty\net
Session.PrivateDir := \\Pedro\qwerty\Temp

Tambien tienes que crear rutinas de borrado de archivos *.LCK cuando algun usuario resetee la pc, el borrado se realiza en el PrivateDir de cada PC. y Tambien tienes que crearte rutinas de actualizacion de registros, si en la pc de Alberto se ingreso o modifico un nuevo registro este debe reflejarse en forma inmediata en el servidor. usa (CallBacks).

Conclusion:
Tres sistemas iguales puede apuntar a un mismo PDOXUSRS.NET
Mas no el PrivateDir es unico para cada Sistema.

Saludos.

jeremiselxi
27-09-2008, 15:47:01
hola como estan, mi problema esta en k no se k cual es la funcion de el archivo PDOXUSRS.net, y no se donde debo de entrar este supuesto archivo, y no se si ese archivo es hay que compartirlo para todo los usuarios o solo para la server

hecospina
29-09-2008, 13:43:32
Jeremix
El archivo pdoxuser.net no se comparte, se comparte el directorio donde se crea, paradox realiza la creacion del mismo en forma automatica cuando ingresas a la aplicacion, solo debe existir uno en la red donde trabajes con la aplicacion, regularmente se crea en el equipo donde esta el servidor de datos

en este texto encontraras como lo debes hacer :


Debes compartir en un equipo una carpeta donde alojaras el archivo pdoxusers.net
por ejemplo "red"

Para trabajar en red las tablas paradox debes configurar el bdeadministrator en forma adecuada
Vas a encontrar una pestaña que dice configuration, dentro de ella una opcion que dice Drivers y dentro de drivers Native, dentro de esta encontraras Paradox, esto es lo que queremos configurar

En el panel derecho encontraras NET DIR "direccion de red"
en este campo debes digitar la direccion de la carpeta creada, debes tener en cuenta que en el equipo donde esta creada la carpeta compartida la direccion debe ser igual al del resto de la red

Te doy un ejemplo con un equipo llamado servidor

\\servidor\red (file://servidor/red)
tambien puedes digitar la ip del servidor
\\192.168.0.23\red (file://192.168.0.23/red)

servidor nombre del equipo donde compartiste la carpeta red
este equipo siempre debe estar encendido indiferentemente que sea el servidor de la red o no

Algo mas dentro de Configuration encontraras tambien "System" dentro de el "INIT" en el panel derecho encontraras LOCAL SHARE para la maquina donde tienes la base de datos paradox debe estar en TRUE para los demas equipos nodos que accesan a dicha base de datos debe estar en FALSE

RebeccaGL
16-10-2008, 16:43:02
PDOXUSRS.NET
Gobierna los directorios

y los .LCK gobiernan los bloqueos

jeremiselxi
17-10-2008, 04:56:43
muchas gracias por su aclaracion.