PDA

Ver la Versión Completa : Mantenimiento a tabla


nextor
27-06-2011, 17:54:57
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.

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.


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 (http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=D09C1D60-A13C-4479-9B91-9E8B9D835CDC) 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.

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.