Ver Mensaje Individual
  #13  
Antiguo 22-08-2007
JosepGA JosepGA is offline
Miembro
 
Registrado: jun 2007
Ubicación: Tarragona
Posts: 166
Reputación: 18
JosepGA Va por buen camino
Guardar registros

Hola, como bien dices es la forma de implementar el acceso a la base de datos con dbexpress, el ClientDataSet el el componente que te permite navegar con una tabla unidireccional a traves del DataSetProvider. Para guardar registros, en el momento que te interese, deberas llamar al metodo ApplyUpdates( nRegistrosConErroresPermitidos ) para que guarde los cambios realizados en el componente ClientDataSet (mirate la implementación del ReconcileError ). Tanto en el SQLDataSet como en el ClientDataSet, tendrás que indicar en las columnas de estos componentes (FieldColumns), cuales son los campos clave para la actualización (propiedad ProviderFlags, las tres primeras a TRUE, y en el resto de campos solo la primera a TRUE ). Tambien deberás aplicar los parametros pertinentes al DataSetProvider para permitir eliminación de registros en cascada, actualización de varios registros, etc...

Si quieres establecer una relación maestro-detalle, deberas conectar dos SQLDataSet mediante un DataSource y dos ClientDataSet, conectando el segundo al primero mediante su propiedad DataSetField, el cual es una columna del primer ClientDataSet ( al añadir las columnas en el ClientDataSet, el ultimo campo es del tipo ClientDataSet ). La sentencia SQL para el segundo SQLDataSet es del tipo siguiente:

Código SQL [-]
SELECT * FROM TABLA2 WHERE CAMPOCLAVE = :CAMPOCLAVE ORDER BY CAMPOCLAVE2

la declaración
Código:
:CAMPOCLAVE
significa que agui tienes que poner el nombre del campo del SQLDataSet1 que se identifica con el del SQLDataSet2, al poner los dos puntos indicas que es un parametro que se recibe del SQLDataSet1 en forma de campo de la tabla y sin que tu lo tengas que especificar.

Espero que te aclare un poco el uso de DBExpress.

un saludo
Responder Con Cita