PDA

Ver la Versión Completa : Dos aplicaciones y sola base de datos..?


kia
14-04-2006, 11:56:02
Hola a todos.:)
Como novata llevo un para de meses, hice un programa con D5, Wxp, y tablas planas paradox. Lo ejecuto en un solo ordenador, todo bien. Ahora debido a que funciona me piden que lo ponga en dos ordenadores mas.
Habia pensado en que todos los ordenadores emplearan la misma base de datos que hay en la primera instalción, direccionando los otros ordenadores hacia dichos datos, como se podria hacer ? :rolleyes: (con los alias...).Gracias

amadis
14-04-2006, 15:16:45
Eso te tendria que funcionar muy bien. (buena deduccion)

Lo que tienes que hacer es modificar los 2 nuevos alias.

Entras al BDE en las 2 nuevas maquinas y modificas tu alias de la BD, cambias el path por la ruta en la red de la base PRIMERA que esta funcionando.

el path te queraria algo así

PATH: -> \\NOMBREDEMAQUINA\C\Archivos de Programa\Miprograma\BD

Porsupuesto que deberas escribir el nombre de la maquina en la red y la ubicacion de tu BD ya sea en el disco C, D E etc.

Despues tendras que contemplar los errores que se producen al abrir un mismo registro desde 2 maquinas a la vez y personalizar tus errores!

Suerte con eso y Felices Pascuas

kia
15-04-2006, 20:18:14
Hola Amadis.:)
He tenido algún error por que en algun lugar de mi programilla en vez del alias figura la ruta.:rolleyes:
He captado la modificación del BDE, y funciona no tego errores con XP, ya que sale un aviso de aplicación ocupada. Pero si en W98.
Kaikatsu por tu respuesta.:D

amadis
15-04-2006, 21:56:07
Asegurate de que en el programa esten la base de dato y las tablas asociadas al ALIAS.

Entonces unicamente desde panel de control --> BDE modificas la ruta de tu alias y listo.

Suerte y felices pascuas

Maury Manosalva
25-04-2006, 16:58:21
Hola envio un archivo escrito por JVC para este tipo de conexion, yo la estoy utilizando y esta muy buena, pero hay que tener en cuenta hacer los cambios en los formularios, para que cuando haya concurrencia no aparezcan key violation o registros en blanco.

Adjunto Archivo


Maury manosalva
Bucaramanga, colombia.

kia
26-04-2006, 12:04:38
Ante todo gracias a todos.:)
Los ordenadores pueden utilizar la Base de datos con sus tablas que estan en uno de ellos, solo he cambiado el path del alias de los ordenadores llamados "terminales". Lo efectuo con un formulario donde configuro dicho path. Y va bien hasta cierto punto. Los accesos a datos se efectuan sin problemas y sin errores pero aviso los datos no se actualizan en forma real, ya que para que sean visibles se deben reindexar (actualizar indices) sino no aparecen, aunque estan grabados en disco y si el terminal es lento peor. Se pueden producir errores en los datos (paradox). Por ello seguire probando. Salu2 Kia:o

Colgueit
26-04-2006, 12:28:47
Hola,

Yo ando con el mismo problema que aquí se plantea, pero soy un poco novato y no se hacer casi nada de lo que decis. Tengo unas preguntas que espero alguna persona amable me las responda:

¿Como cambio la ruta de los alias de los otros ordenadores sin tener delphi instalado?

¿necesitare instalar la base de datos en los demas ordenadores no? ?eso como lo hago?

'Kia' me puedes pasar el formulario que has hecho para cambiar los alias? me sería d mucha ayuda.

Gracias de antemano :)

Lepe
27-04-2006, 08:47:57
No solo hay que cambiar el alias:

- Que todos los ordenadores apunten al .net del servidor en una carpeta del servidor. (session.netfiledir). Buscar en el foro por TSession o Session Paradox. Hay mucho sobre el tema.

- Quitar la cache en segundo plano de windows XP

procedure TForm1.btCacheSegundoPlanoClick(Sender: TObject);
var r:TRegistry;
begin
//HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem\
// DriveWriteBehind = 00 (DWORD)
Memo1.Lines.Add('');
Memo1.Lines.Add('CACHE DE ESCRITURA EN SEGUNDO PLANO');
Memo1.Lines.Add('-----------------------------------');
Memo1.Lines.Add('Desactive la cache en los ordenadores clientes.');
Memo1.Lines.Add('');
r := TRegistry.Create;
r.RootKey := HKEY_LOCAL_MACHINE;
if r.openkey('\System\CurrentControlSet\Control\FileSystem\',False) then
begin
if r.ValueExists('DriveWriteBehind') then
begin
Memo1.Lines.Add('valor: '+ IntToStr(r.Readinteger('DriveWriteBehind')));
Memo1.Lines.Add(' Cero es interpretado como "cache desactivada"');
end
else
Memo1.Lines.Add('La cache se encuentra activada');
end
else
begin
Memo1.Lines.Add('No existe ruta de registro para la cache');
Memo1.Lines.Add('RUTA: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem\');
end;


end;


- Configurar el LOCAL_SHARE tanto en el servidor como en los clientes.Buscar LOCAL_SHARE en los foros, hay una rutina para ello.

Aquí para instalar el BDE (http://www.clubdelphi.com/foros/showthread.php?t=16821&highlight=bdeinfosetup)

La base de datos no tienes que copiarla, sino hacer que todos los ordenadores apunten al servidor mediante el alias y el netfiledir.

kia, ¿haces un ttable.Flushbuffers en el evento afterpost de cada tabla??, si no lo haces no se graban a disco los cambios, se mantienen en el buffer. Si quieres que aparezcan los cambios, debes poner el Query.RequestLive a true.



Saludos.

Colgueit
27-04-2006, 12:14:51
Antetodo 'Lepe' muchas gracias por la respuesta.

Ya configuré el BDE en la otra maquina y he cambiado el alias de la maquina terminar para que apunte a la del servidor y ya me funciona!
No he necesitado hacer lo del TSession, ni lo de la caché , ni lo del LOCAL_SHARE. No se si debería hacer algo de esto pero me funciona correctamente sin haberlo hecho.
También he puesto el table.Flushbuffers para asegurarme que me realiza los cambios.

Hasta ahora casi todo bien, y digo casi porque los cambios que realizo en una maquina no se visualizan en la otra, solo cuando reinicio el programa ya si puedo visualizarlos. Dices que para que aparezcan los cambios se ponga Query.RequestLive a true pero eso es para las consultas, ¿como visualizo los cambios en tiempo real de una tabla, si por ejemplo tengo un DBGrid, añado una fila en una maquina y se muestre en la otra maquina?.

Una última cosa, la configuración del BDE la hago manualmente , pero me gustaría que el usuario lo pudiera hacer facilmente con un formulario o algo así, para así el mismo poder configurar la red ¿Como se hace esto? o ¿alquien tiene o sabe de un programa que haga esto?.

Un saludo y gracias.

Lepe
27-04-2006, 13:29:29
Reindexar los índices es necesario cuando la configuración del BDE,SESSION y demás parámetros no están bien configurados o cuando hay un corte de luz.

Saludos

Colgueit
27-04-2006, 14:56:23
Hola,
He estado mirando en el foro acerca de la reindexación de índices, por lo que veo lo mas apropiado es usar Caerques; Pero lo he buscado en todas partes y no lo encuentro; En teoría estaba en esta página en la sección ejemplos pero ésta sección dejo de funcionar hace tiempo.
Lepe ¿me puedes pasar el Caerques? o cualquier persona que lo tenga que me lo pase porfavor, ponedlo en el mensaje como adjunto o maddadlo a mi email please.

Gracias otra vez!

kia
27-04-2006, 20:26:05
Hola de nuevo:)
Una lleva un mes detras de paradox para conseguir una base tres ordenadores.:mad:
Siento decirte Colgueit que Lepe tiene razón, si no aseguras las SESSION perderas datos por un tubo, hablo por que me ha pasado.:confused:
Configurar el Bde tocando el registro para mi a sido muy difilcultoso y delicado para una novata como yo. Pero entiendo que es necesario.:cool:
Ademas todavia hay mas cosas que Lepe no menciona pero segun el sistema Operativo de la maquina el Bde debe configurarse de un manera o de otra.
Yo abandone por las perdidas de datos y tiempo. Trato de hacerlo con Interbase, y volver a empezar. De verdad a todos Gracias. Kaikatsu, Kia.;)

Colgueit
27-04-2006, 21:31:57
Hello again,

Pues tendré en cuenta el hacerlo con Interbase la proxima vez pero ahora ya es tarde para cambiar, ya tengo casi terminado el software y no es plan...

Ya aprobecho para repetir 2 cosas que dije antes:

1) Para 'Kia': Mencionabas antes que habías creado un formulario para cambiar el path del alias, me puedes explicar como se hace o lo que sería mejor me lo puedes pasar?

2) Para Todos : Alguien me puede pasar el Caerques? este estaba en la sección ejemplos pero ésta no va de hace tiempo y he buscado por todas partes y no está. Quien lo tenga que lo ponga en un mensaje como adjunto o me lo pase al mail.

Muchas Gracias!

Lepe
28-04-2006, 11:14:16
Kia: Me alegro enormemente que te hayas decidido por otra cosa, te recomiendo Firebird (www.firebird.com.mx) y tambien www.ibphoenix.com donde estan los manuales.

Firebird es la evolución gratuita de Interbase. Con interbase sólo puedes tener (creo) que 3 o 5 usuarios conectados, si quieres más ususarios, tienes que pasar por caja. Con Firebird no hay límite.

Para atacar la base de datos, te recomiendo los MDOLIB (http://www.clubdelphi.com/foros/showthread.php?t=24960)(Mercury Database Object) es el equivalente a los componentes IBX de la paleta de delphi. Tambien son OpenSource.

Como sustituto del Database Desktop, puedes usar el Ib Expert Personal (gratuito tambien).

Colgueit No puedo subir el programa caerques porque lo tengo adaptado a mis necesidades, difiere mucho del original.

Crear un alias nuevo es bastante sencillo:

uses bde;

with session do
begin
config := cmall;
if not IsAlias('pepe') then
addstandardalias('pepe', '\\servidor...\tablas');
saveconfig;
end;



Edito: Enlaces corregidos

Saludos

Lepe
28-04-2006, 14:35:29
Ademas todavia hay mas cosas que Lepe no menciona

Por supuesto, Sin nombrar como hacer copias de seguridad y restaurarla, compactar la base de datos, hacer el instalador del programa incluyendo el BDE, creando los alias y configurando qué ordenador tiene la base de datos y cuales acceden a través de la red, lo del ttable.flushbuffers.....

Todo viene a ser lo mismo. Paradox fue bueno en su tiempo, pero ya ha caducado. Hacer un programa hoy en día, como lo espera un usuario final, con paradox, es demasiado trabajo.

Hacerlo con Interbase / Firebird simplifica las cosas para el cliente y para nosotros. El "pero" viene porque hay que estudiar nuevos conceptos y técnicas de trabajo, pero merece la pena.

saludos

Maury Manosalva
28-04-2006, 19:02:25
Pasos para tener una aplicación de manejo de tablas Paradox en red.

1. En la PC que va ha ser servidor (creo que dices será la tuya), se debe tener instalado el BDE.
2. Defines o creas la carpeta (o carpetas) donde estará el .exe que maneja las tablas y también dónde estarán las tablas. (Por ejemplo: Supongamos que en una carpeta llamada MiAplicación tiene dentro otra carpeta llamada Databases. Tenemos en la carpeta MiAplicación el .exe que maneja las tablas en Paradox y en la carpeta Database todas las tablas con los indices, etc.).
3. Con el Explorador de Windows (u otra forma) compartes la carpeta MiAplicación con todos aquellos usuarios que trabajarán con ella.
4. En tu Explorador buscas en entorno de red la carpeta que acabas de compartir y la mapeas poniéndole una letra identificativa (ej: Z) y que se conecte cada vez que se inicie Windows. Esto es importante por lo que verás adelante.
5. Con el Database Desktop defines el alias que susas en tus tablas dándole el camino a la carpeta Databases pero entrando por la torre Z. (te quedaría Z:\Databases).
6. Puedes crear un acceso directo al .exe en tu escritorio de la misma forma, entrando por Z:
7. Debes ejecutar el BDEAdmin y entonces definir lo siguiente: En la pestaña Databases, debe aparecer el alias que acabas de crear. Das clic en él y a la derecha compruebas que aparece el PATH a través de Z:\Databases (según el ejemplo), que es la torre mapeada.
8. Ahora dos cosas importantes: Primero: En la pestaña Configuración, despliegas Drivers, despliegas Native y das clic en Paradox. A la derecha en NETDIR debe aparecer C:\. Das clic encima de C:\ y a la derecha de la línea aparece un botón con tres puntos. Das clic en él y pones Z:\Databases. Segundo: Despliegas System, das clic en INIT, y a la derecha compruebas en Default Driver que dice Paradox y en Local Share cambias a TRUE. Ya. Estas son las dos cosas para garantizar que todo marche bien.


Ya en este punto debes poder desde tu PC ejecutar sin problemas tu aplicación, y lista para que se conecten a ella los usuarios desde otras PCs.


Ahora para cada PC que se conectará a tu aplicación debes hacer lo siguiente:

9. Instalar el BDE. Si tienes problemas con ello, te mando luego cómo resolver esto sin muchas complicaciones.
10. En el Explorador de Windows entras a entorno de red y buscas la PC servidor, y el ella la carpeta compartida (en nuestro ejemplo es MiAplicación) y la mapeas con el mismo identificador de torre que en cada otra PC, incluyendo el servidor, o sea, en nuestro caso la letra Z. Asegúrate de esté marcada la opción Conectar al iniciar Windows.
11. Con el Database desktop creas el alias de tus tablas dándole el camino igual que en tu PC, o sea, Torre Z:\databases.
12. Con El BDEAdmin compruebas lo del paso 7 y haces lo mismo que en el paso 8.
13. Creas un acceso directo al .exe , o copies edl .exe que está en el servidor en el escritorio (u otro lado) de la PC entrando por Z.

Ya todo debe estar OK. Como te podrás dar cuenta, en cada PC usuario no se copia ni el .exe ni las tablas. Ambos residen solo en el servidor. Solo es necesario en cada PC instalar el BDE, y realizar los pasos del 10 a 13.

LUCHO
28-04-2006, 20:42:02
Hola a todos.:)
Como novata llevo un para de meses, hice un programa con D5, Wxp, y tablas planas paradox. Lo ejecuto en un solo ordenador, todo bien. Ahora debido a que funciona me piden que lo ponga en dos ordenadores mas.
Habia pensado en que todos los ordenadores emplearan la misma base de datos que hay en la primera instalción, direccionando los otros ordenadores hacia dichos datos, como se podria hacer ? :rolleyes: (con los alias...).Gracias

Puedes probar escribiendo la direccion completa en el inspector de objetos en la propiedad databasename....

Lucho....

kia
29-04-2006, 16:02:24
hola :)
Maury que significa el punto 4 cuando dices "mapear", mi vocabulario en castellano es limitado.:( Lepe las MDO una maravilla. Gracias:o

Maury Manosalva
29-04-2006, 17:37:09
Hola Kia, que quiero decir con mapear, vas a compartir en tu Pc la carpeta de tu proyecto, por el explorador de windows, conectar a unidad de red(Mapear, antiguamente) y le asignas una letra en el combo ej. (Z:\), la IP de tu maquina y nombre de compartido, te recomiendo en el compartir cuando le estes dando el nombre le coloques $, con esto se hace oculta la carpeta en la red pero si tu le das desde otro PC \\ # ip\nombre compartido$ lo va a ver.., bueno despues en los otros PC vas a colocarles la misma unidad de red(Z:\) y con el numero de ip (\\ # ip\nombre compartido$) y listo, y despues seguir con los pasos, si tienes dudas me puedes contactar por MSN, mmanosal2001@hotmail.com, yo estoy conectado.

Maury manosalva.
Bucaramanga, Colombia.

Lepe
01-05-2006, 18:08:20
Quiero hacer especial incapié en un detalle. Si usamos Interbase/Firebird no tenemos que compartir nada en el servidor. (Para algo está el Firebird Guardian instalado en el servidor).

Saludos