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 16-06-2007
Gangster Gangster is offline
Miembro
 
Registrado: nov 2006
Posts: 36
Poder: 0
Gangster Va por buen camino
Question Problemas de Actualizacion de Datos

Hola, a Todos Tengo una aplicacion hecha en delphi7, entonces la tenemos en Red, un servidor tiene la base de datos que comparte a los demas clientes, entonces la misma aplicacion la abren a la ves dos personas, y hacen los mismo los dos pero lo que hace uno no se actualiza en la tabla que estan udsando los dos al mismo tiempo, las tablas las tengo cached updates, ademas que las abro y cierro al entrar y salir de la forma pero como que cada uno abre su session y lo que se hace nuevo en algun lado no aparece en la tabla, y si intento grabar pues sale lo de key violation, entonces como si no hiciera nada sobre la tabla, si pues ya hasta se salio del programa la persona que grabo algo en la tabla, entonces no se que este pasando ya hasta commitupdate hago y nada sigue lo mismo y lo raro es que se abre la aplicacion otra ves y si se ven los cambios pero si aquella ventana del otro cliente no se cierra se queda viendo los datos como el cliente los abrio como si no hubiera ningun solo cambio que problema tendre Espero que se entienda y alguna idea me DAN Gracias y Saludos.
Responder Con Cita
  #2  
Antiguo 26-06-2007
gabrielkc gabrielkc is offline
Miembro
 
Registrado: jun 2007
Ubicación: Chihuahua Mexico
Posts: 118
Poder: 17
gabrielkc Va por buen camino
Saludos

Te recomiendo que leas la guia de estilo o al menos uses parrafos.

Pero bueno. Varias opciones por si no entendí tu punto.

Para evitar el Key Violation te recomiendo usar Triggers, defines un trigger en el Before Insert para que le asigne la siguiente llave:
CREATE TRIGGER NUEVO_REGISTRO FOR TABLA
BEFORE INSERT
AS
BEGIN
NEW.CAMPO_LLAVE=GEN_ID(GENERADOR,1);
END;

Obviamente el generador debe ser definido con anticipacion. Buscate como hacer trigger si no sabes. Para que esto de resultado tendrias que hacer commit despues de guardar cada dato.

Si lo que quieres es que el cliente n vea en tiempo real lo que el cliente n+1 hace. Puedes usar un trigger para cada accion en la bd (en el After Insert, After Update After Delete) que genere un evento y cachar el evento desde tu aplicacion.

En Delphi6 el componente que se usa para interceptar evento es el IBEvents:
seria algo asi:

CREATE TRIGER INSERCION FOR TABLA AFTER INSERT
AS
BEGIN
POST_EVENT 'INSERCION_TABLA_X';
END;
CREATE TRIGER MODIFICACION FOR TABLA AFTER UPDATE
AS
BEGIN
POST_EVENT 'MODIFICACION_TABLA_X';
END;


y en delphi podria ser en el evento OnCreate del DataModule:

IBEvents.Events.Add('INSERCION_TABLA_X');
IBEvents.Events.Add('MODIFICACION_TABLA_X');


Y en el evento: OnEventAlert del IBEvents pondrias el codigo que controlaría la actualización de tus datos. Espero que sea de utilidad la informacion

Última edición por gabrielkc fecha: 26-06-2007 a las 17:29:48.
Responder Con Cita
  #3  
Antiguo 27-06-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Antes que todo, Que base de datos utilizas? y Que componentes?
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 27-06-2007
Gangster Gangster is offline
Miembro
 
Registrado: nov 2006
Posts: 36
Poder: 0
Gangster Va por buen camino
Talking Esto es lo que uso

Cita:
Empezado por vtdeleon
Antes que todo, Que base de datos utilizas? y Que componentes?
Utilizo Tablas Paradox y ttables y tdatasource ya ideamos algo yo y mi equipo, para resolver esto y salio gracias por sus preguntas y Respuestas.

Saludos y BYe.
Responder Con Cita
  #5  
Antiguo 27-06-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Comparte la solucion, caeria bien para otros con la misma duda

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #6  
Antiguo 28-06-2007
Gangster Gangster is offline
Miembro
 
Registrado: nov 2006
Posts: 36
Poder: 0
Gangster Va por buen camino
Talking La Solucion

Cita:
Empezado por vtdeleon
Comparte la solucion, caeria bien para otros con la misma duda

Saludos
Pues mi solucion no es algo muy asi de cientfica, lo que hize es manejar un numero aleatorio, y este se lo doy al entrar a hacer algo a algun usuario, entonces si dos usuarios entran pues cada uno toma un valor aleatorio, el que guarde primero en la base de datos se guarda con el numero aleatorio y se lo cambio por el que llevaba determinados folios, y ya despues el otro usuario que entro al mismo tiempo guarda y le toca el numero siguiente al que acabe de terminar de guardar en la tabla, esa fue mi solucion en ves de solucion es como un truquillo, y pues si me sirvio asi lo solucione si ahi mas dudas, me las preguntan y la pongo esta idea por si alguien esta atorado en lo mismo, saludos y bye.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizacion De Datos Con Sql luxus Conexión con bases de datos 2 03-08-2006 00:20:18
Actualización de Datos Palmiro Conexión con bases de datos 3 02-02-2006 16:08:58
Problemas de actualización con los DBGrid Dexter182 Tablas planas 8 21-07-2005 10:05:20
Actualizacion de datos bbjb Conexión con bases de datos 7 12-07-2004 17:52:03
problemas con la actualizacion en el dset VRO Conexión con bases de datos 2 15-05-2004 03:24:24


La franja horaria es GMT +2. Ahora son las 21:56:18.


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