![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Para que sirve el componente TUpdateSQL
hola
Sé que se enlaza con la propiedad UpdateObject del TQuery . Al hacer doble clic , se muestran los campos y en la segunda page tiene propiedades delete , insert y modify . Pero realmente no sé su utilidad , veo la ayuda , pero tampoco me aclara demasiado . Alguien me puede poner un ejemplo de utilidad de este componente . Saludos |
#2
|
|||
|
|||
Intentémoslo:
Este componente permite indicar al TQuery cómo debe hacer las actualizaciones y se usa junto a la propiedad CacheUpdates del mismo.
Imagina que tienes la siguiente consulta: Código SQL [-] SELECT P.CODIGO, P.FECHA, P.IMPORTE, P.COD_CLIENTE, C.NOMBRE_CLIENTE FROM PAGOS P LEFT JOIN CLIENTES C ON P.COD_CLIENTE = C.COD_CLIENTE WHERE P.COD_CLIENTE = :Codigo Con esta consulta traemos los pagos efectuados de un cliente, pero no podemos actuar directamente contra ella para hacer INSERT, UDPATE o DELETE, ya que el BDE no sabrá cómo manejarse. Poniendo la propiedad CacheUpdate a True y asignando un TUpdateObject puedes definir cómo se debe actualizar los datos: Para insertar: Código SQL [-] INSERT INTO PAGOS (CODIGO, COD_CLIENTE, FECHA, IMPORTE) VALUES (:CODIGO, :COD_CLIENTE, :FECHA, :IMPORTE) Para Borrar: Código SQL [-] DELETE FROM PAGOS WHERE CODIGO = :CODIGO e idem para actualizar. Cuando ejecutes sobre el TQuery el método ApplyUpdates se ejecutarán las sentencias SQL apropiadas para cada acción llevada a cabo con cada uno de los registros del TQuery mientras ha estado en Caché. Como ves, el funcionamiento es muy parecido a lo TIBDataSet de las IBX. Es muy útil para hacer modificaciones masivas a datos sin que se tengan que ir grabando en la BD hasta que el usuario dé conformidad. ¿Aclarado? |
#3
|
|||
|
|||
No lo entiendo .
![]() Vamos a ver , en la consulta que has sacado sacas los pagos que ha realizado cada cliente . Estos pagos estan en la tabla pagos , los clientes estan en la tabla clientes . Cuando aplicas del ApplyUpdate del Query , que es lo que hace , por que que es lo que inserta y donde lo inserta , que es lo que borra y donde lo borra y que es lo que modifica y donde lo modifica . Además supongo que hará alguna de esta acciones , insertar ,modificar y eliminar , pero obviamente no las tres a la vez . Saludos |
#4
|
||||
|
||||
Cita:
Yo tengo un par de ejemplos de uso pero son algo complejos... A ver que trato de simplificarlo un poco. |
#5
|
||||
|
||||
¿qué inserta?
Pues inserta en la tabla PAGOS, el código, código de cliente, fecha e importe. ¿de donde? Pues de los DBEdits asociados a la consulta original de tu Form, o de tu DBGrid. ¿Qué o cuando se realiza cada acción? Si tienes un DBNavigator asociado a esa consulta, cuando pulses el boton de: - Eliminar.... ¿Qué sentencia SQL crees que se va a ejecutar? ![]() - Insertar ... lo mismo - Guardar ... lo mismo - etc. Añadir una cosita más: Cuando tienes el CacheUpdate a true, significa que todos esas inserciones que haces o modificaciones se harán en memoria, (lo ves en el grid que tengas) pero realmente no se han hecho en las tablas. Cuando Apliques los cambios (ApplyUpdates) entonces, y solo entonces se llevan a cabo todas y cada una de las modificaciones que has hecho previamente. ¿Ahora sí? Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 23-10-2006 a las 19:51:37. |
#6
|
|||
|
|||
![]() ![]() update integrantes_cursos set CALIFICACION_CURSO = :CALIFICACION_CURSO where ID_CURSO = :OLD_ID_CURSO and ID_ALUMNO = :OLD_ID_ALUMNO and ID_MAESTRO = :OLD_ID_MAESTRO and CALIFICACION_CURSO = :OLD_CALIFICACION_CURSO lo que no se es donde invocar updateSQL1.Apply(ukModify); si es que esta es correcta forma de invocarlo. el DBGrid no me deja escribir en un campo,,, ya revise todas las propiedades para escritura del dbgrid y el Datasource y el Tquery, he realizado pruebas tambien con un DBEdit y me pasa lo mismo se coloca el cursor para escribir pero no acepta ninguna tecla,, porfavor tengo dias con el miismo problemita a ver si alguien ayuda... YA ENCONTRE EL PEQUEÑO DETALLE FALTABA EN EL TQUERY HABILITAR EL CACHEUPDATES pero como aplico cambios y en que propiedad de que componente? Última edición por gama_blind fecha: 13-01-2007 a las 05:37:02. |
#7
|
||||
|
||||
No suelo trabajar con cacheUpdates, pero en principio, sería llamando a los métodos del Tquery, por ejemplo query1.Edit, modificas los datos y despues query1.Post, realizas todos los cambios que quieras y por último, para aplicarlos fisicamente a la tabla (ya que al estar en cacheupdate se hacen en memoria local), tienes que acceder al método query1.ApplyUpdates(0);
Revisa que el DBGrid no esté en solo-Lectura. Si alguien puede ampliar la información, bienvenida será ![]() Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿Para que sirve Delphi? | MARVIALI | Varios | 6 | 14-10-2010 18:48:00 |
¿Para que sirve MouseDownSpot? | Jan_polero | API de Windows | 5 | 15-02-2007 16:41:19 |
dbo.num ?? para que sirve? | sakuragi | SQL | 2 | 15-12-2005 10:46:22 |
¿para qué sirve delphi? | MARVIALI | Varios | 3 | 18-11-2004 22:49:19 |
Para que sirve DBExpress ? | David | Conexión con bases de datos | 2 | 19-01-2004 21:30:44 |
![]() |
|