Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
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?
Responder Con Cita
  #2  
Antiguo 12-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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

Un saludo.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 16-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 16-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 16-08-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.264
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lepe se refiere a este artículo
Responder Con Cita
  #6  
Antiguo 16-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
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?
Responder Con Cita
  #7  
Antiguo 17-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 18-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
Hola compañeros, siento ser pesada, pero necesito una respuesta.¿nadie me puede ayudar?

Muchas gracias
Responder Con Cita
  #9  
Antiguo 18-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 18-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #11  
Antiguo 18-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
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
Responder Con Cita
  #12  
Antiguo 18-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
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
Responder Con Cita
  #13  
Antiguo 18-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #14  
Antiguo 18-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
he escrito más cosas antes... espero que las leas
Responder Con Cita
  #15  
Antiguo 18-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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 .
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #16  
Antiguo 18-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
primero.... muchisimas gracias por tu ayuda
y segundo... siguen las preguntas
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

Última edición por Sayuri fecha: 18-08-2005 a las 13:28:01.
Responder Con Cita
  #17  
Antiguo 18-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
y otra duda final ¿tengo que añadir el componente TSession? que propiedades le pongo?
Responder Con Cita
  #18  
Antiguo 18-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #19  
Antiguo 18-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
Siento volverte loco
gasias ;-) y perdón
Responder Con Cita
  #20  
Antiguo 19-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 20
Sayuri Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:01:32.


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
Copyright 1996-2007 Club Delphi