Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   trabajar en red con base de datos paradox (https://www.clubdelphi.com/foros/showthread.php?t=24235)

Sayuri 12-08-2005 13:18:56

trabajar en red con base de datos paradox
 
He realizado una aplicación en Delphi con tablas paradox, quiero trabajar con ella en red con otro equipo. Tengo un alias para la base de datos, y mi equipo va a ser el servidor. El otro equipo no tiene instalado delphi ni tampoco el bde
¿cómo puedo conectarle a mi equipo para que funcione con la misma base de datos?

Lepe 12-08-2005 14:16:00

Revisa este hilo para el BDE.

Para la red, mira en la seccion Columnas, el archifamoso artículo "paradox en red".

Y ya de camino el programa Caerques, que seguro que los indices se te corromperán tarde o temprano :D

Un saludo.

Sayuri 16-08-2005 10:30:47

la verdad es que no me entero muy bien con el artículo ni con la columna. Una pregunta.
al tener un alias creado con el bde para tablas paradox, ¿que tipo de alias hay que crear? porque yo puse standard... ¿está bien?

Lepe 16-08-2005 11:26:17

Si es STANDARD.

Te aconsejo que leas ese artículo muy detenidamente, varias veces y lo vayas masticando poco a poco, aunque no lo parece tiene mucha información, y debe ser leido con mucha calma.

Si no entiendes alguna cosa, revisa la ayuda de delphi, al principio te sonará chino, despues de hacer una lectura general de todos los componentes, Tdatabase, Tsession, etc, conseguirás un concepto más claro.

Para dudas concretas tienes el foro, pero dado que hay muchas formas de conectarse, y muchos parámetros, la única solución viable es que entiendas qué tienes que hacerlo y como; no hay código que se diga "esto va así".

Un saludo

Casimiro Notevi 16-08-2005 11:52:10

Lepe se refiere a este artículo

Sayuri 16-08-2005 19:37:29

Sayuri
 
Según el artículo tienes dos opciones (al menos hasta donde llego yo a entender) o hacerlo mediante el alias (que es lo que yo hago) o sino mediante lo de TSession. Yo tengo en el ordenador cliente el alias redirigido a donde se supone que va el servidor ¿no? y la primera vez, es decir, nada más arrancar todo va bien, lo malo está en que al introducir datos en uno de los dos (servidor o cliente) el otro no lo ve, a no ser que los dos cierren la aplicación y la vuelvan a arrancar. ¿Tengo que activar / desactivar los componentes TTable para que se muestren bien?

Sayuri 17-08-2005 12:36:32

Leyendo el artículo me encuentro con :

Cita:

Siguiendo con el ejemplo anterior en nuestro DataModule deberemos tener un componente Tsesion y otro TdataBase, cuando se crea el DataModule asignamos los valores, bien manteniéndolos prefijados por programa o leyéndolos de un fichero a nuestro gusto ( un INI?),

Código Delphi [-]
MiDataModule.OnCreate;
 
Begin
 
With MiSesion do begin
NetFileDir := '\\MiServer\MisDatos\NET';
PrivateDir := 'c:\Temp';
End;
 
With MiDataBase do begin
Params.Clear;
Params.Add('PATH='+'\\MiServer\MisDatos');
Params.Add('DEFAULT DRIVER=PARADOX');
Params.Add('ENABLE BCD=FALSE');
Connected := true;
End;
 
End;

Lógicamente todas las tablas del datamodule deberán, hacer referencia a la session y la Database modificada.

y si yo utilizo un alias ¿necesito poner tambien ese código? el problema está en que aunque tengo el archivo PDOXUSRS.NET dentro de una carpeta '\NET' que a su vez está dentro de la carpeta que contiene las tablas, al ejecutar el programa, me crea por defecto ese mismo archivo 'PDOXUSRS.NET' en 'C:\' directamente.
Yo no tengo ningùn datamodule dentro del programa porque todas las tablas las asocio al alias ni tampoco tengo ningún componente TSession, porque en el artículo especifica que podría ser de las dos formas.

Sayuri 17-08-2005 23:19:41

Hola compañeros, siento ser pesada, pero necesito una respuesta.¿nadie me puede ayudar?

Muchas gracias

Lepe 18-08-2005 10:49:40

Siento no haber contestado antes, pero ayer tambien era fiesta local, por tanto, no estaba yo para usar internet ;)

Cita:

Según el artículo tienes dos opciones (al menos hasta donde llego yo a entender) o hacerlo mediante el alias (que es lo que yo hago) o sino mediante lo de TSession. Yo tengo en el ordenador cliente el alias redirigido a donde se supone que va el servidor ¿no?
No. Es una única opción, tienes que definir el alias, y además establecer las propiedades del Session.

las propiedades Privatedir y NetFileDir, pertenecen al objeto TSession, tu no creas ninguno, pero delphi cuando pones un TDatabase en tu programa, lo crea implicitamente. Por tanto, debes añadir ese código por fuerza.

En lugar de usar "MiSesion" puedes poner "Session" delphi te lo reconocerá.

Todas las tablas y consultas, deben apuntar a ese Session, es decir, en su propiedad SessionName, tienes que poner el "Default" que te deja elegir de la lista.

En cuanto a varios .Net, ten en cuenta que Delphi (el IDE de programación) es un usuario más de tus tablas, por tanto tambien crea un .Net, y el propio Database Desktop tambien, por eso puedes ver el .Net en c:\

El hecho de que un ordenador no vea al otro, es la prueba de que la session o el BDE no está bien configurado.

¿Habrás cambiado la propiedad LOCAL SHARE verdad?.

Cuando al modificar un mismo registro desde 2 ordenadores te salga el cartelito diciendo que el registro está bloqueado por otro usuario, entonces, y solo entonces, tienes bien configurado el BDE y la Session.

Un saludo

Lepe 18-08-2005 10:53:01

Por cierto, No dejes ningún cabo suelto, si el artículo dice "hay que hacer esto": hazlo, si no lo haces, ten por seguro que algo fallará.

Un saludo de nuevo y Suerte.

Sayuri 18-08-2005 10:59:29

muchas gracias lepe
 
Ante todo muchas gracias, me voy a poner ahora mismo con el tema, pero una cosa

Cita:

Empezado por Lepe

¿Habrás cambiado la propiedad LOCAL SHARE verdad?.

te diría que si... pero creo que no¿que significa que si lo habré configurado?

Gracias de nuevo

Sayuri 18-08-2005 11:23:25

pero me encuentro perdida... tengo que añadir un componente TDataBase, pero... ¿sólo eso?no necesito añadir ningún TSession?Además que tengo que poner en las propiedades del anterior. yo hasta ahora sólo usaba el alias y metía en las tablas el alias y a correr, entonces me encuentro perdida, además pone que tengo que poner el código en
Código Delphi [-]
object Label2: TLabel
  Left = 152
  Top = 112
  Width = 189
  Height = 26
  Caption = 'Nº Pacientes totales :'
  Font.Charset = DEFAULT_CHARSET
  Font.Color = 8388863
  Font.Height = -19
  Font.Name = 'Comic Sans MS'
  Font.Style = []
  ParentFont = False
end

mmmmmmm ¿que es el datamodule? jeje
lo siento, soy inutil

muchas gracias

Lepe 18-08-2005 11:24:06

Pues va a ser que no lo has modificado.

Busca por el foro por "local share", Marcos Zorrilla posteó una función para modificar esa entrada del registro de windows por código.

Debes poner el LOCAL SHARE a true en el ordenador que tiene las tablas. En el resto de ordenadores de la red local, deben estar a false.

bye

Sayuri 18-08-2005 11:46:00

he escrito más cosas antes... espero que las leas

Lepe 18-08-2005 12:01:04

TDataModule: Es un contenedor donde poner las tablas y objetos no visuales. Normalmente se utiliza para no tener desperdigadas las tablas por todos las ventanas, pero tambien, en determinadas aplicaciones, no se usa de esta forma.

En tu caso, yo añadiría un TDatamodule, File -->new --> Datamodule, como verás parece una ventana pero con fondo blanco, estará oculta en tu aplicación siempre, no tiene métodos para mostrarlo, ya que no tiene sentido, solo es un contenedor de objetos.

Ahi pones el TDatabase, solo tienes que modificar la propiedad DatabaseName, donde eliges el alias que tengas definido, y ya puedes poner el código:
Código Delphi [-]
MiDataModule.OnCreate;
 
Begin

With Database1.Session do begin
  NetFileDir := '\\MiServer\MisDatos\NET';
  PrivateDir := 'c:\Temp';
End;
 
With DataBase1 do begin
  Params.Clear;
  Params.Add('PATH='+'\\MiServer\MisDatos');
  Params.Add('DEFAULT DRIVER=PARADOX');
  Params.Add('ENABLE BCD=FALSE');

End;
  Database1.Session.Open;
  Database1.Connected:= True; 
End;

Tendrás que leer en la ayuda de delphi, que es un TDatabase, y para que se usa este componente. Como idea general, es el componente que se encarga de la conexion a las tablas, y mantiene una lista con todas las tablas que usas en tu aplicación

El TSession no lo añadas en el Datamodule. Ya ves que se accede a través del TDatabase.

Ahora a cada tabla y consulta que tengas, tienes que modificar la propiedad SessionName y elegir "Default"

Todas estas cosas pueden hacerse de mil maneras, por eso es tan lioso :(.

Te recomiendo el libro de la , la cara oculta de Delphi 4. Viene mucha información sobre lo que estas haciendo.

PD: No eres inutil, eres ignorante, como todos los que empezamos una tarea nueva. La ignorancia es pasajera si pones de tu parte ;).

Sayuri 18-08-2005 12:16:53

primero.... muchisimas gracias por tu ayuda
y segundo... siguen las preguntas :p
las propiedades del DataBase me pide nombre alias (que es donde pongo el mio)... sólo ahí verdad? porque si lo pongo en DataBaseName... es cuando da error

Sayuri 18-08-2005 12:30:19

y otra duda final ¿tengo que añadir el componente TSession? que propiedades le pongo?

Lepe 18-08-2005 16:35:49

Cita:

Empezado por Ayuda delphi
property DatabaseName: string;

Description

Use DatabaseName to specify the name of the database to use with a database component. If DatabaseName is the same as an existing Borland Database Engine (BDE) alias, then the AliasName and DriverName properties need not be set. If DatabaseName does not match an existing BDE alias, then either the application must also supply a valid alias in the AliasName property in addition to the DatabaseName, or it must supply the DriverName and Params properties.

DatabaseName can be a fully qualified path name when connecting to a Paradox or dBASE database.

Note: Attempting to set DatabaseName when the Connected property is True raises an exception.
Tip: At design time double-click a TDatabase component to invoke the Database editor and set the DatabaseName.

Cita:

Empezado por Lepe
El TSession no lo añadas en el Datamodule. Ya ves que se accede a través del TDatabase.

:confused:

Sayuri 18-08-2005 16:48:17

Siento volverte loco
gasias ;-) y perdón

Sayuri 19-08-2005 09:53:17

hola amigos,
llevaba mucho sin dar la brasa en este hilo, y no podía ser jeje, a ver sólo me queda un cabo sin agarrar, a ver si me podeis echar una mano (al cuello no vale ;-) )
El artículo acaba con

Cita:

Como no todo es perfecto o bien nuestro programa puede colgarse en un momento dado, o un usuario con prisas puede apagar el ordenador sin mas, aveces quedan ficheros *.LCK en el directorio de datos sin que este ningún usuario conectado, en este caso cuando nuestro programa intenta inicializar el BDE, este nos da un error que las tablas están "busy", siendo falso. El remedio es verificar que hay usuarios conectados y antes de abrir las tablas comprobar la existencia de tales ficheros, si no hay usuarios y los ficheros están el directorio nuestra aplicación deberá ser lo suficientemente inteligente para borrarlos y olvidares del tema. Este proceso lo haremos una vez activa la session pero sin tablas abiertas.
vale... creo que lo entiendo, corregirme si me explico mal:
Al iniciar la aplicación tengo que ver en el directorio de las tablas que no hay ningún archivo *.LCK sin que ningún usuario este conectado. Me parece muy bien, pero ¿cómo hago eso?

Se que estoy pez, pero es la primera vez que realizo un programa para trabajar en red.

Muchas gracias


La franja horaria es GMT +2. Ahora son las 05:38:28.

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