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: 19
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
  #8  
Antiguo 14-01-2007
gama_blind gama_blind is offline
Registrado
 
Registrado: ene 2007
Posts: 8
Poder: 0
gama_blind Va por buen camino
Smile


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: TDataSource
en 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: TQuery
AutoEdit: True
en evento:
ONDATACHANGE: TUPDATESQL.Apply(ukModify);



Espero y me haya explicado bien ... y les sirva...
Responder Con Cita
  #9  
Antiguo 15-01-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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.
Responder Con Cita
  #10  
Antiguo 15-01-2007
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
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.
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 08:33:37.


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