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
|
|||
|
|||
si entiendo la utilidad,,, pero lo que no se es como se utiliza por ejemplo yo tengo un DBGRID el cual esta enlazado a un DataSource,TQuery y en la propiedad UpdateObject del TQuery tengo un TUpdateSQL , el TUpdateSQL ya lo tengo configurado con:
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. |
#8
|
|||
|
|||
Listo... gracias por el aporte.... lo que logre hacer es insertar datos en un dbgrid en tiempo de ejecucion. Yo utilize... TDATABASE TDBGRID en evento: DataSource: TDataSourceen propiedades: opciones: dgEditing: True TUPDATESQL en propiedades: modifySQL: //Codigo SQL que genere al entrar al Componente TUpdateSQL (haciendo DobleClick) TQUERY en propiedades: CacheUpdates: True UpdateObject: TUPDATESQL TDATASOURCE en propiedades: DataSet: TQueryen evento: ONDATACHANGE: TUPDATESQL.Apply(ukModify); Espero y me haya explicado bien ... y les sirva... |
#9
|
||||
|
||||
Si en el evento OnDataChange haces un ApplyUpdates, no tiene mucho sentido, quizás debieras quitar la Cache.
Es cierto que en algunos casos puntuales, puede servir, no sé si es tu situación. Normalmente se hace cuando el servidor de la BBDD está lejos, así añades 50, 100 registros y por último se mandan todos de una sola vez para insertar físicamente. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#10
|
||||
|
||||
Otra explicación mas vieja: http://www.clubdelphi.com/foros/show...=&threadid=985
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
Temas Similares | ||||
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 |
|