![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Caral
Hola Caral , lo que sucede es lo siguiente, si bien el Dbgrid no es mas que un reflejo de los datos de una tabla o una consulta, dependiendo de la configuracion del Dataset asociado, este (el dbgrid) actualiza automaticamente los registros de la tabla cuando el usuario edita un dato (es es el caso de TADOQuery). Ahora bien lo que yo necesito es una forma de poder editar los campos y mantenerlos en una especie de buffer hasta que yo le ordene a la aplicaion actualizar los cambios en la(s) tabla(s) correspondientes. Para esto neftali me recomendo que usara TClientDataset que retiene en memoria los datos de otro Tdataset, sin embargo no me funciono ya que ahora el dbgrid me muestra los datos, pero no me deja modificarlos (editarlos).
Saludos y gracias por tu interes. |
|
#2
|
||||
|
||||
|
Hola TEO127
Para estos casos lo que hago es crear una tabla temporal, se hacen todas las cosas que se quieran y una vez hechas se verifican los datos en esta tabla temporal, si son los correctos o los que me interesan, actualizo la tabla original y a la vez elimino los datos de la temporal. Para mi es la manera mas sencilla de hacerlo, y ademas evito que el usuario se pueda equivocar directamente sobre la tabla. No se si sera una medida optima, pero funciona y es facil. Saludos |
|
#3
|
||||
|
||||
|
Revisa cómo lo estás haciendo.
¿Cómo es la consulta? Aquí te pongo un simple ejemplo; Trabaja con la tabla "dbdemos.mdb" que suele estar en el directorio: "C:\Archivos de programa\Archivos comunes\Borland Shared\Data\" Una consulta ADO carga los datos de la tabla "Country" y se modifican sin problemas. Lo que ya no he realizado es la actualización final. Para eso usas el método ApplyUpdates de TClientDataSet.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#4
|
||||
|
||||
|
Hola Neftali
Pregunto: porque un DataSetProvider1 y no un AdoConnection? Me parece casi lo mismo. En que se diferencian? Saludos |
|
#5
|
||||
|
||||
|
Hola
Me contesto a mi mismo. El DataSetProvider1, trabaja con el ClientDataSet, para mantener la ejecucion de la consulta en memoria. El adoConnection se puede utilizar siempre, pero se liga al ADoquery y va bien. Saludos |
|
#6
|
|||
|
|||
|
Solucionado
Funciono todo ok, luego de unos pequenos ajustes.
1. Declare los campos en forma persistente. 2. Cambie el modo de actualizacion del DatasetProvider.UpdateMode=upWhereChanged. Gracias por todo, Neftali y Caral. |
|
#7
|
||||
|
||||
|
Bueno, creo que son componentes distintos. TDataSetProvider trabaja con el TClientDataset y este su vez trabaja con cualquier Base de Datos; Podrías enganchar el TDataSetProvider a un:
* TADOQuery * TIBQuery * TQuery * ... En cambio el TADOConnection es el componente de conexión que se usa para trabajar con ADO. Por ejemplo (imagen) -los componentes se conectan en horizontal-: (1) El primer caso es una conexión ADO normal, sin ClientDataSet (2) El segundo caso es la misma conexión ADO, pero utilizando TClientDataSet. (3) Y el tercer caso es una conexión con TClientDataset, pero en este caso utilizando el BDE. No se si aclara algo, o lía más... ![]() ![]() EDITO: Bueno, ya veo que está todo OK...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| PickList DBGrid (Pregunta acerca de los DBGRID) | lazarous | Varios | 1 | 10-01-2006 09:53:12 |
| Como extraer datos de un DBgrid a otro DBgrid | mickey | Conexión con bases de datos | 13 | 29-01-2004 05:05:30 |
|