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)
-   -   Mantenimiento a tabla (https://www.clubdelphi.com/foros/showthread.php?t=74580)

nextor 27-06-2011 17:54:57

Mantenimiento a tabla
 
Buen dia a todos !!!
pues queria molestarlos con unas pequeñas consultas:

1.- Actualmente tengo un mantenimiento de datos a una tabla con delphi 7 y el muy util BDE (MS SQL), y funcionaba bastante bien, ahora tengo el problema de que a las tablas a las cuales hago referencia son muy grandes y aunque haga filtros, al parecer siempre abre toda la tabla. y se tarda demasiado. quisiera pedirle su opnion sobre como deberia de cambiar esto para hacerlo mas efeciente.

2.- como les he comentado estoy utilizando el componente BDE para conectarme mediante ODBC a MSSQL 2005, mi problema radica en que cada vez que instalo en una maquina cliente, debo instalar el BDE y por politicas de la empresa estan bloqueados los setups o instaladores, y si lo intento instalar manualmente, siempre me da error al registrar la libreria, mi pregunta es: ¿Existe algun otro componente u otra forma de hacer mis conexiones sin tener que instalar nada adicional?

3.- y mi ultima pregunta es: como puedo llevar el control de datos que se modifican, es decir si tengo un mantenimiento a la tabla de clientes como puedo controlar que si se modifico un campo de esta tabla saber que valor tenia antes y que valor tiene ahora. solo para aclarar: si manejo una tabla de bitacora y tambien se que usuario esta conectado. pero realmente se necesita saber el detalle de todas la modificaciones que el usuario realice sobre un determinado registro.

Agradesco de ante mano todas las sugerencias que me puedan dar

duilioisola 27-06-2011 23:08:51

En cuanto a la pregunta nro. 1, supongo que deberás filtrar la consulta en el servidor:
No solo utilizar la propiedad Filter del TDataset, sino enviar el SQL apropiado para que te traiga solo la información relevante.

Código SQL [-]
SELECT * FROM TABLA WHERE EJERCICIO=2011

Con respecto a la pregunta nro. 3, creo que la solución es generar triggers que guarden la información que necesitas.

Código SQL [-]
Trigger BeforeUpdate
begin
   insert into LOG (fecha, valor_anterior, valor_actual) values ('Now', old.valor, new.valor);
end
No conozco SQL Server, pero debe ser algo parecido a lo que escribo.

Puedes hacer lo mismo con un trigger Before_Delete para saber cuando se ha borrado y qué valor tenía.

olbeup 28-06-2011 08:19:35

Sobre la pregunta Número 2, por que no utilizas ADO, solo necesitas instalar el controlador de conexión de SQL SERVER 2005, el cual yo manejo bastante, mira este enlace, tienes que descargar el sqlncli.msi
Un saludo.

olbeup 28-06-2011 08:23:37

Sobre la pregunta número 3, se puede hacer esto.
Código SQL [-]
UPDATE Tabla
  SET
    CODIGOANT = CODIGO
    ,CODIGO = VALORNUEVO
  WHERE IDTABLA = ???
Lo que hace es actualiza el CODIGOANT con el CODIGO en este caso el antiguo que se tenia, después actualiza el CODIGO con el VALORNUEVO.

Un saludo.

nextor 28-06-2011 15:06:56

Gracias a todos por sus sugerencias y consejos voy a probar la conexion ado y para llevar el control de cambios a una tabla voy a ver que puedo hacer con los eventos after y before post.


La franja horaria es GMT +2. Ahora son las 18:43:54.

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