![]() |
Actualización automática
Holas Foreros!
Quisiera saber, cómo realizar actualizaciones automaticas... Tengo tablas realizadas en SQL Server debidamente relacionadas. Esas tablas tengo en el DataModule o en algun Form. Y en varios Form con los botones usuales de Agregar, Guardar, Editar, Eliminar... Por decir Table1 tengo sus campos en el Form1, Form2, Form3... En el Form1 tengo las opciones de Agregar, Guardar, Editar, Eliminar... Por Xrazon realizo una modificacion, por decir estaba en el campo NOMBRE=Maria y lo cambio NOMBRE=Maritza...y lo guardo. Pero cuando me voy al Form2 ese dato que modifiqué no se muestra actualizado, sigue con la informacion de NOMBRE=Maria. Coloque antes de ingresar al Form2, en el evento OnActive o Oncreate No funciona....Además realizar este paso cada vez....si precisaria en varios forms el Table1? Pienso que debe haber otra opcion... Alguna idea? Espero que me hayan entendido :p |
Hola sisne.
Para que me ayudes a ayudarte, te hago unas preguntas: 1. ¿ Usas transacciones ? 2. ¿ Usas CachedUpdates ? 3. ¿ Usas un TDataSource dentro de un TDataMoudule, o lo declaras en cada Form ? 4. ¿ Usas un (TTable,TIBTable,TADOTable) dentro de un TDataModule, o la declaras en cada Form ? Saludos. |
Cita:
Y en un Form1 tengo los botones usuales de Agregar, Modificar, Guardar, Eliminar,..etc... Tengo DBGrid 1 ó DBedit que estan relacionados con el DataSource respectivo de la TAdoTable1. En otro Form2 tengo los mismos campos ... solo que es un Form2 para realizar una busqueda y de igual manera uso DBGrid2 ó DBedit q también estan relacionados con el DataSource1 de la TAdoTable1. Sucede q la informacion modificacada en el Form1 no se actualizan cuando estoy en el Form2. A pesar que lo guardo cuando realizo los respectivos cambios en el Form1. La 1. y 2. no entiendo muy bien. Soy nueva haciendo estas cosas..aprendiendo, lo siento:o Gracias.. |
La linea de código de refrescar(Refresh) debe ir siempre al final de cada insercion,elimimacion,edicion y no al principio.;)
En otras palabras haces la eliminacion o edicion o insercion y al final recien haces ejecutar un refrescamiento de los registros.;) Para mas informacion puedes ver éste hilo ;). Saludos...:) |
Hola rgstuamigo:
Te comento que estaba haciendo lo que me dijiste, pero me aparecia error... En TAdoTable en la parte de Properties-Events estan: AfterRefresh, AfterEdit, AfterInsert....etc...BeforeInsert, BeforeRefresch...etc.. La pregunta es, que si por ese medio tb se podrian actualizar??? Quisiera saber un poquito mas sobre events... Alguna sugerencia...? Muchas gracias!!! |
Cita:
Aunque si coincido con algunos que han comentado que debe ir despues del proceso de Insert/Update/Delete, y no al principio. Yo lo que suelo utilizar es:
Este es infalible aun si tienes mal configurados los indices o si no tienes. Saludos |
Cita:
Sobre los eventos ..por supuestos que puedes utilizarlos, claro ésta que en éste caso sería mejor usar todos los After.....;), y en cada uno poder hacer el refrescamiento, aunque :rolleyes: en ese caso según veo sería mucho más mejor usar un solo evento ,estoy hablando del evento AfterPost de tu Dataset y poner el siguiente código: Claro que segun veo :rolleyes: en algunos casos talves no se dispararía ya que a veces se inserta,edita o elimina registro atraves de Sentencias SQL y no sé si en ese caso se ejecutaría dicho evento.:rolleyes: hummm... habría que hacer la prueba...;). Saludos....:) |
Hola sizne.
Perdón por el retraso pero me surgió un problema, aunque veo que ya estás en buenas manos.;) Mirá, nunca trabajé con ADO, por lo que reproduje la situación que explicaste a los palos :D, pero bueno lo que hice fué: Form1: TDBGrid + TDBNavigator. Form2 (DataModule): TADOTable + TDataSource Form3: TDBGrid (para visualizar los cambios) + TDBLoockupComboBox (para consultar) Luego probé: ADOTable.ConnectionString -> DBDEMOS.udl TableName -> country Y también: ADOTable.ConectionString ->Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Common Files\Borland Shared\Data\dbdemos.mdb;Persist Security Info=False TableName -> country Puse que al ejecutar Form1 habriera la ventana Form3 para poder visualizar los cambios. Con las dos ventanas abiertas a la par, modifico en Form1, directo en el DBGrid y al cambiar de campo o aceptar en el DBNavigator, al instante veo reflejada la modificacion en el DBGrid del Form3, sin necesidad de hacer Refresh. No utilicé código alguno, lo cuál me indica que la actualización la realiza en forma automática y correctamente. Si no supongo mal el ingreso lo haces mediante un TButton u otro componente, en el evento OnClick. Si fuera así, ¿No nos pondrías el código de ese procedimiento ? Saludos. |
Hoooola a TODOS/AS:
Ya no estoy colocando el codigo puesto que con lo que dijo afunez2007 Código Delphi [-] Table1.active := False; Table1.active := True; Con ello si se me actualiza en todas los Forms tuve que colocar en el evento OnActivate.;) Cierto rgstuamigo, para cuando se realizaba las consultas no se actualizaba en algunas actualizaciones que hice, asi que en algunas si......... coloqué Refresh...:p ecfisa, gracias como siempre estás ahi :) Te cuento que hice lo que mencionas, solo que a veces utilizaba consultitas.......Intente en el form3 volver a colocar la tabla1(q estaba en el DataModule) de la que no me actualizaba en otros Form3. Pero ahora con el Active:=False y True se me actualiza :p graaaaacias. |
La franja horaria es GMT +2. Ahora son las 07:40:13. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi