Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-04-2010
sizne sizne is offline
Miembro
 
Registrado: mar 2010
Posts: 104
Poder: 15
sizne Va por buen camino
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

Código Delphi [-]
DM.Table1.Open;
DM.Table1.Refresh;
.....
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
Responder Con Cita
  #2  
Antiguo 21-04-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 21-04-2010
sizne sizne is offline
Miembro
 
Registrado: mar 2010
Posts: 104
Poder: 15
sizne Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
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.
Hola efcisa, tengo las TAdoTable en un DataModule y tambien ahi sus DataSource para para tabla.
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

Gracias..
Responder Con Cita
  #4  
Antiguo 21-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

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...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 21-04-2010 a las 22:38:25.
Responder Con Cita
  #5  
Antiguo 21-04-2010
sizne sizne is offline
Miembro
 
Registrado: mar 2010
Posts: 104
Poder: 15
sizne Va por buen camino
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!!!
Responder Con Cita
  #6  
Antiguo 21-04-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 17
afunez2007 Va por buen camino
Lightbulb

Cita:
Empezado por sizne Ver Mensaje
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

Código Delphi [-]DM.Table1.Open; DM.Table1.Refresh; .....

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
A mi en lo particular el refresh no me simpatiza, a veces pasa por temas de indices y claves primarias y suele dar errores.

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:
Código Delphi [-]
DM.Table1.Active:=False;
DM.Table1.Active:=True;

Este es infalible aun si tienes mal configurados los indices o si no tienes.

Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
Responder Con Cita
  #7  
Antiguo 21-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por sizne Ver Mensaje
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!!!
Si tuviste error deberias comentarnos ¿cual?.
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 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:
Código Delphi [-]
procedure TForm1.ZQuery1AfterPost(DataSet: TDataSet);
begin
DataSet.Refresh;
end;
Claro que segun veo 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. hummm... habría que hacer la prueba....
Saludos....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #8  
Antiguo 22-04-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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 , 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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 22-04-2010
sizne sizne is offline
Miembro
 
Registrado: mar 2010
Posts: 104
Poder: 15
sizne Va por buen camino
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...

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 graaaaacias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizacion automatica de un EXE. Caral Varios 7 12-04-2008 22:16:12
instalacion automatica alfil123 Conexión con bases de datos 14 08-02-2008 11:34:28
Asignacion Automatica frholguin Varios 9 19-10-2006 10:24:54
Actualización automática del archivo EXE acalderonr Varios 5 08-07-2004 21:31:29
Actualizacion automatica de registros Eklypsex Firebird e Interbase 2 19-05-2004 13:05:49


La franja horaria es GMT +2. Ahora son las 00:33:35.


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
Copyright 1996-2007 Club Delphi