FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
como utilizar el UpdateSQL
Buenas, como tengo que utilizar los UpdateSQL para modificar los datos de una consulta.
Ya pregunte la ultima vez como podria modificar los datos de una consulta, y me dijeron que con un UpdateSQL, pero n se como funciona. Os agredeceria que me respondierais pronto. Gracias. Irina. |
#2
|
||||
|
||||
Si no me equivoco yo fui quien te sugirió usarlo, y algo te expliqué de como usarlo.
Cuando uno tiene una consulta con varias tablas relacionadas, se le hace imposible al TQuery saber de donde proviene cada dato, entonces para solucionar ese problema, existen los TUpdateSQL, que a mi parecer, son una idea fantástica. Lo que uno hace en un TUpdateSql, es decirle al DataSet qué Sql´s ejecutar para cada Insert, Update o Delete, al igual que Oracle permite crear tres trigges en una vista para que esta sea modificable. Si tenemos el un TQuery con el sql: Código:
SELECT T.ID, T.NOMBRE, T.DOMICILIO, T.ID_PROVINCIA, P.DESCRIPCION FROM TRABAJADORES T, PROVINCIAS P WHERE T.ID_PROVINCIA = P.ID InsertSql Código:
INSERT INTO TRABAJADORES (ID, NOMBRE, DOMICILIO, ID_PROVINCIA, FECHA_ALTA, FECHA_MODIF) VALUES (:ID, :NOMBRE, :DOMICILIO, :ID_PROVINCIA, SYSDATE, NULL) Código:
UPDATE TRABAJADORES SET NOMBRE = :NOMBRE, DOMICILIO = :DOMICILIO, ID_PROVINCIA = :ID_PROVINCIA, FECHA_MODIF = SYSDATE WHERE ID = :ID Código:
DELETE FROM TRABAJADORES WHERE ID = :ID Bueno, espero haber sido claro, me parece que este es un tema un poco conocido o poco utilizado, aunque existe desde las primeras versiones de Delphi, te prometo que voy a hacer un ejemplo para y lo publicaré en Internet. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
Oye muchas gracias por tu respuesta, te lo has currado mogollon, todavia no le he provado, pero lo he entendidio todo.
Gracias por tu ayuda. Un saludo Irina. |
#4
|
||||
|
||||
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
No sabia que eras argentino, perdona.
'Te lo has currado mogollon' significa que has hecho un buen trabajo, que me has ayudado mucho, que sabes de que va el tema, en fin cosas asi. Por cierto me encanta tu acento. Me refiero al agento argentino, ya que el tuyo no lo conozco y no puedo opinar, ya me entiendes. Un saludo Irina |
#6
|
||||
|
||||
UpdateSql con paradox
Hola amigos, tengo problemas con con mi UpdateSQL, les explico tengo una tabla en paradox con datos de los alumnos (Matricula, Nombre, Dirección, Telefono, Reinscrp, etc.), genero el query siguiente:
Select Matricula, Nombre from Alumnos Where reinscrip = 'S' en un updateSql genero el codigo de forma automatica y me da el siguiente resultado: -------------------- delete from "ALUMNOS.DB" where MATRICULA = :OLD_MATRICULA and NOMBRE = :OLD_NOMBRE ------------------------ insert into "ALUMNOS.DB" (MATRICULA, NOMBRE) values (:MATRICULA, :NOMBRE) ------------------------- update "ALUMNOS.DB" set MATRICULA = :MATRICULA, NOMBRE = :NOMBRE where MATRICULA = :OLD_MATRICULA and NOMBRE = :OLD_NOMBRE ------------------------------- Conecto un DBNavigator y un DBGrid al query para ver los resultados y no puedo insertar, modificar ni eliminar ningun registro. delphi.com.ar comentas en este hilo que "Cuando uno tiene una consulta con varias tablas relacionadas, se le hace imposible al TQuery saber de donde proviene cada dato, entonces para solucionar ese problema, existen los TUpdateSQL,", así que hice lo propio y modifique mi consulta y updateSql para usar dos tablas relacionas pero el resultado es el mismo no puedo modificar, insertar ni eliminar registros de mi consulta, tengo estas mismas tablas en intebase así que probe copiando el sql del query y los del updateSql al IBDataset y este funciona bien. Que creen que me este faltando. Gracias
__________________
Espero poder seguir exprimiéndote el cerebro 8) Jorge Zamora Ginez Puebla, Pue. México |
#7
|
||||
|
||||
hola Jorge. No hace falta que los datos de tu Query provengan de diferentes tablas para poder usar los TupdateSQL... pero son el único mecanismo disponible en todos los motores (a excepción de oracle) para lograr modificar consultas de este tipo, que son Read-Only por "circunstancia"... valiendose de la jerga del BDE.
Creo que en tu caso simplemente podes quitar el objeto TUpdateSQL, y poner la propiedad del query RequestLive a True. Si de cualquier forma queres aprender mas sobre esta técnica... por aqui te dejo una pequeña introducción... Cita:
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#8
|
||||
|
||||
Solo añadir que las sentencias SQL que te ha generado Delphi están en perfecto estado..
|
#9
|
||||
|
||||
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#10
|
||||
|
||||
para completar la idea, y por si a alguno le interesa... los triggers se crean sobre las vistas, bajo la categoría instead of (en lugar de).
Código:
Create or Replace Trigger NombreTrigger Instead of insert on NombreVista, bla, bla, bla Hasta luego
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#11
|
||||
|
||||
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|