Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 22
David Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 23-10-2006
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
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?
Responder Con Cita
  #3  
Antiguo 23-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 22
David Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 23-10-2006
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 20
kuan-yiu Va camino a la fama
Cita:
Empezado por David
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
Borrará, insertará y modificará lo que tú le digas, para eso escribes el contenido de cada consulta.
Yo tengo un par de ejemplos de uso pero son algo complejos... A ver que trato de simplificarlo un poco.
Responder Con Cita
  #5  
Antiguo 23-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿qué inserta?
Código SQL [-]
INSERT INTO PAGOS (CODIGO, COD_CLIENTE, FECHA, IMPORTE)
VALUES (:CODIGO, :COD_CLIENTE, :FECHA, :IMPORTE)

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.
Responder Con Cita
  #6  
Antiguo 13-01-2007
gama_blind gama_blind is offline
Registrado
 
Registrado: ene 2007
Posts: 8
Poder: 0
gama_blind Va por buen camino
Unhappy

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.
Responder Con Cita
  #7  
Antiguo 13-01-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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.
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
¿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


La franja horaria es GMT +2. Ahora son las 13:03:55.


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