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 11-08-2005
Avatar de raco
raco raco is offline
Miembro
 
Registrado: ene 2005
Posts: 58
Poder: 20
raco Va por buen camino
Actualizar BD en varias maquinas

Hola, hice una aplicacion en Delphi 7 y la base de datos la instale en un servidor de la empresa, todas las demas maquinas que tengo como clientes accesan a la base de datos por medio de ese servidor.

Mi problema es que tenemos implementada una Vpnet con antenas y mi aplicacion funciona muy lenta por la red, entonces lo que pense hacer fue poner la base de datos local en cada equipo y hacer copia de las tablas del servidor a los clientes y de los clientes al servidor, pero tengo una duda, hay alguna forma de hacer esto mas facil, que me recomiendan.

Pense en comparar las tablas del servidor y el cliente y si estaban diferentes, entonces seleccionar los registros q no existen en una de las tablas y ponerlos en la otra por codigo. Existe alguna instruccion que me deje comparar 2 tablas iguales para poder seleccionar los registros que cambiaron y actualizar la tabla que no los tenga o de que otra forma lo puedo hacer?, utilizo tablas de Paradox. O

jala me pueda ayudar alguien, gracias.
Responder Con Cita
  #2  
Antiguo 11-08-2005
Avatar de raco
raco raco is offline
Miembro
 
Registrado: ene 2005
Posts: 58
Poder: 20
raco Va por buen camino
Ejemplo de lo q hago

Estoy usando la instruccion not in en varios querys para seleccionar lo que esta diferente entre 2 tablas (la del cliente y servidor) y los registros que no estan los meto a la tabla que no los tiene mediante codigo, uso un while que inserta los registros diferentes, hasta ahi esta bien, pero existen campos que se me modifican en las tablas y en este caso estos si existirian en ambas. Por ejemplo:

En una tabla tengo estos campos:

Orden (PC Servidor)
______________________
Folio Cantidad Descripcion Precio Recibidos
1-------1------lo q sea----10------0----
2 ------2------ no se------20------0----

Y en otra tabla:

Orden (PC Cliente)
______________________
Folio Cantidad Descripcion Precio Recibidos
1-------1------lo q sea----10------0----
2 ------2------ no se------20------0----

Como le puedo hacer para saber que la tabla cambio en la columna de los recibidos y actualizar la otra sin tener que copiar toda la tabla o todos los registros, nada mas los que hayan cambiado. Gracias.

Última edición por raco fecha: 11-08-2005 a las 02:25:33. Razón: se movio
Responder Con Cita
  #3  
Antiguo 11-08-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que con ese sistema te estás metiendo en un "berenjenal" sin salida, te costará un gran trabajo y esfuerzo mantener sincronizadas las mismas bases de datos en distintos equipos.

Ese sistema es además justo lo contrario para lo que sirven los sistemas informatizados, centralizar datos, disminuir riesgos, etc

Creo que lo mejor sería que mejores la red o "afinar" las consultas para optimizar los accesos al servidor y de esta manera conseguir mejor velocidad de respuesta.

Cualquier método menos ese que pretendes, aunque si aún quieres seguir con eso, puedes encontrar algún hilo donde se ha hablado de ese tipo de asuntos.
Responder Con Cita
  #4  
Antiguo 11-08-2005
Avatar de raco
raco raco is offline
Miembro
 
Registrado: ene 2005
Posts: 58
Poder: 20
raco Va por buen camino
Si, precisamente por eso consulte aqui, por que a mi tampoco me gustaria hacerlo de esta forma, el problema es que yo ya le quite a mi aplicacion todo lo que pudiera hacerla mas lenta, cerre tablas y querys que no necesitaba y uso solo los que necesito, simplifique todos los procesos que pude, en fin, la trate de hacer mas rapida en todos los procesos posibles, pero incluso al abrirla dura mucho, ¿el problema estara en la red?, tenemos la comunicacion por antenas, estas antenas se comunican a un sitio central que tiene internet (512Mb) y asi se conecta a otra ciudad, por este medio viajan voz y datos, duramos mucho tiempo para poder separar la voz y los datos por que habia un gran problema, sobre todo en la voz, en los datos no habiamos tenido problemas hasta ahora. Que mas podre hacer. Tambien habra problemas con el servidor y las maquinas que tenemos como clientes?. Gracias por tu respuesta.
Responder Con Cita
  #5  
Antiguo 11-08-2005
Yosuun Yosuun is offline
Miembro
 
Registrado: jun 2004
Ubicación: Bilbao-Bizkaia
Posts: 28
Poder: 0
Yosuun Va por buen camino
Hola Raco, estoy con casimiro en que lo que estas haciendo no es lo mas correcto para solucionar el problema, si al hecho de que el ancho de banda es pequeño le agregamos que utilizas paradox la respuesta a tu problema ya la tienes. Otra cosa supongo que la aplicacion es decir el ejecutable reside en cada maquina porque si encima reside en un servidor centrar remoto y se lo tiene que traer cada vez al equipo para ejecutarlo pues agravaria mas el problema.

Mi recomendacion es que pienses en cambiar a FireBird o Interbase, con esto en principio lo que conseguirias es reducir el trafico de red, puesto que solo viajarian las peticiones y las respuestas. Ademas como he creido entender las peticiones de datos dentro del programa las tienes con querys, pues tienes la mitad del camino andado. No me refiero no me entiendas mal a meterte ahora mismo en el berenjenal de diseñar procedimientos almacenados y trigerss sino a cambiar un "motor" de escritorio por llamarlo de alguna manera por un motor de base de datos como sistema de almacenamiento como primer paso sin mas
y luego ir limandolo con mas tiempo.

No se como tienes estructurado el acceso a datos y las reglas de negocio pero como dice raco lo que pretendes resolver es decir el informatizar por ponerter un ejemplo un almacen haciendolo como lo quieres hacer es decir poner los datos en cada maquina te va a traer mas de un quebradero de cabeza y va a ser la pescadilla que se muerde la cola.

Un saludo.
Responder Con Cita
  #6  
Antiguo 11-08-2005
Avatar de raco
raco raco is offline
Miembro
 
Registrado: ene 2005
Posts: 58
Poder: 20
raco Va por buen camino
Entonces Cambio?

Ok de acuerdo, gracias, entonces la BD de Paradox es algo mala y lenta para utilizarla en mi caso? , si uso puros querys, casi no me gusta usar tablas y la aplicacion esta en cada maquina, me podrian decir de algun sitio de donde pueda bajar manuales de FireBird o Interbase, por que solo he usado Oracle (Aqui si me defiendo, lo uso bastante bien SQL Plus, PL/SQL, etc) , tambien he usado Paradox y Access, el problema con el Oracle es que las Pc's no lo levantan, asi q por eso use Paradox, Que opinan de My SQL?, o son mejor FireBird o Interbase. Gracias.

Última edición por raco fecha: 11-08-2005 a las 22:56:29. Razón: corregir
Responder Con Cita
  #7  
Antiguo 12-08-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Sin Duda migra a Firebird, es totalmente gratis...MySQL su fuerte es con aplicaciones PHP y, además a la hora de hacer aplicaciones comerciales debes pagar licencias.

Saludos.
Responder Con Cita
  #8  
Antiguo 12-08-2005
Avatar de raco
raco raco is offline
Miembro
 
Registrado: ene 2005
Posts: 58
Poder: 20
raco Va por buen camino
Ok, muchas gracias a todos por su ayuda
Responder Con Cita
  #9  
Antiguo 05-02-2006
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Poder: 0
Chaja Va por buen camino
Red face Coneccion de Sistemas

Raco:
Hola, bueno yo tuve un problema similar, tenia Paradox y me pase a interbase y hice mis querys lo mas precisos posible, pero no andaba como yo queria, es decir rapido. Tengo clientes con mi sistema instalado en Mar del Plata (Argentina) y con suc. en Caleta Olivia (Sta.Cruz) a 1600 km. y otra en Puerto Madryn (Chubut) a 1100 km. Hice las prubas desde mi casa a la casa central dentro de la misma ciudad y una consulta de cliente por el codigo ma tardaba casi 20 segundos. Con Banda ancha, es decir con un enlace rapido. y lo que me sugirio un amigo fue instalar en la maquina de Casa central un Windows 2003 server, y conectar las terminales por terminal server. Para mi asombro fue genial . El tema pasa por las licencias de los TS. Pero si no son mas de dos equipos que acceden al servidor no hay problema, ya que en la conf. de servidor como remoto esta permitido. ahora si son mas pc que se van a conectar, necesitas las licencias. Lo unico que debes tener en cuenta que en el path de coneccion en el servidor de la base de datos figure con el nombre del servidor. Tambien te libera de actulizar los .exe en los clientes lejanos ya que ellos abren una secion en el servidor como si fuese otra maquina y ejecuta el sistema en forma remota. Lo que llega al cliente son solo las pantallas de tu sistema y todo se ejecuta en el servidor.
Espero te sirva.

Luis Roldan
Mar del Plata
Argentina
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 13:37:20.


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