Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-05-2003
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Hola,

pon a True la propiedad RequestLive del Query.

Saludos.
Responder Con Cita
  #2  
Antiguo 19-05-2003
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
Una solucióm mucho mas sencilla, puede ser utilizar un TUpdateSQL asociado a la propiedad UpdateObject del TQuery. Lo que tenés que hacer en este objeto es definir los SQL a utilizar para hacer un Delete, Update y Insert, si solo vas a hacer Deletes, con solo establecer la propiedad DeleteSql es suficiente.

Espero que te sirva, saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 18-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Además de lo que te dice Marc ten en cuenta la propiedad CanModify del Query, pues no todos los queryes admiten modificaciones.

Un Saludo.
Responder Con Cita
  #4  
Antiguo 18-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Tendrás que decir que tipo de tablas usas y como es la Query, para ver si tiene arreglo, o simplemente no permite borrados y habría que implementarla de otra forma.

Un Saludo.
Responder Con Cita
  #5  
Antiguo 18-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues en el momento en que implicas más de una tabla lo mas probable es que no puedas borrar.

Por eso te decía que consultaras la propiedad CanModify.


If MiQuery.CanModify = True then
Delete;

De todas maneras, ten en cuenta que implicas tres tablas, no creo que quieras borrar el artículo, el cliente,....

Si dices que es exactamente lo que quieres borrar, quizás se podría plantear de otra forma.

Un Saludo.

Última edición por marcoszorrilla fecha: 18-05-2003 a las 20:42:12.
Responder Con Cita
  #6  
Antiguo 18-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Entonces solamente debes de implicar esta tabla.

Si quieres borrar todos y la tabla está en uso exclusivo.

MiTabla.EmptyTable;

Si son entre fechas montas una Query que seleccione los registros entre las fechas indicadas.

Si solamente quieres presentar los alquileres e ir borrando de uno en uno con el DbNavigator, haz un Select sobre está tabla únicamente.

Un Saludo.
Responder Con Cita
  #7  
Antiguo 18-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Como colofón quizás te interese este truco de "Marco Cantù", que consiste en establecer relaciones maestro-detalle entre querys.

y que consiste en definir un parametro con el mismo nombre que el campo a relacionar, esto en la tabla detalle, de esta manera podrías presentar varías tablas con esta estructura citada y solamente poner RequestLive a la que te interesa.

Un Saludo.
Responder Con Cita
  #8  
Antiguo 19-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Hola Ruben, aquí son las 7h:49 a ver si esta tarde tengo un rato y lo explicó con más amplitud, está tomado del libro de Delphi 6 de Marco Cantù, es extraordinariamente simple y funciona.


Un Saludo.
Responder Con Cita
  #9  
Antiguo 19-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
El truco procede del Libro de Marco Cantù - "Delphi 6" página 587. en su versión en español. Parte III - Progamación de Bases de Datos.

Para los que no tengan el libro.

Consiste en realizar una relación maestro detalle entre dos Querys, obviamente tendrán un campo en común.

Para el ejemplo podemos utilizar el alias DbDemos que viene con Delphi para los ejemplos.

Necesitamos 2 Tquerys 2 TdataSource y 2 rejillas para comprobar que todo funciona correctamente.

Yo he utilizado para la Query1 la tabla Customer y en el Sql del Tquery he escrito:
Select * From Customer

A este Query conecto el TdataSource1 y a este la primera Rejilla.

EL CAMPO EN COMUN ES: CusTNo

En el segundo Query escribo.
Select *
from orders
Where CustNo = :CustNo

Este parámetro al llamarse igual que el campo es el que hace que funcione la relación maestro detalle.

Esto lo dice Marco Cantù, pero las tablas las he elegido yo para hacer la prueba y va perfectamente.

Ojo el DataSource del Query2 será tambien el DataSource1.

Bueno un saludo a todos.


Última edición por marcoszorrilla fecha: 20-05-2003 a las 19:43:48.
Responder Con Cita
  #10  
Antiguo 19-05-2003
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Hola, como complemento a lo que escribe marcoszorrilla en la ayuda de delphi sobre la propiedad RequestLive se lee
Cita:
Note: All multi-table queries return read-only result sets
O sea que el resultado de tu query es de solo lectura de ahí tus desgracias, aplica el query solo en la tabla que te interesa.

Además Marcos haces referencia a un truco de Cantú pero no das mas referencia, ¿pudieras brindarla?¿donde se puede ver?
Saludos
Responder Con Cita
  #11  
Antiguo 18-05-2003
dvdjr dvdjr is offline
Registrado
 
Registrado: may 2003
Posts: 8
Poder: 0
dvdjr Va por buen camino
DBGrid y Query

Hola a todos, a ver si me la podiais aclarar lo siguiente:

Tengo un componente DBGrid asociado a un componente DataSource y este a un Query. Tengo que aportar la funcionalidad de eliminar los registros marcados en el componente DBGrid y no se muy bien como hacerlo.

He agregado a la ficha el componente DBNavigator pero soló me aparecen activos los controles de desplazamiento. No puedo insertar ni borrar.

Creo haber leido por ahi que podia eliminar los registros con el procedimiento Delete(), pero no se muy bien cómo hacerlo.

Espero vuestra respuesta y gracias por todo.
Responder Con Cita
  #12  
Antiguo 18-05-2003
dvdjr dvdjr is offline
Registrado
 
Registrado: may 2003
Posts: 8
Poder: 0
dvdjr Va por buen camino
Unhappy

Tengo la propiedad RequestLive a true y sigue sin ir. Saludos
Responder Con Cita
  #13  
Antiguo 18-05-2003
dvdjr dvdjr is offline
Registrado
 
Registrado: may 2003
Posts: 8
Poder: 0
dvdjr Va por buen camino
Cool

Utilizo tablas de tipo PARADOX 7 y en la query hago un select como sigue:

SELECT m.Id_articulo, m.titulo, m.Autor, m.N_cds, m.N_cop_alq_dis, c.N_cliente, c.Nombre, c.Apellidos, c.Dni, c.Direccion, c.Telefono, a.Precio_alquiler, a.Fecha_alquiler, a.Fecha_devolucion
FROM cliente AS c, alquiler_musica AS a, musica AS m
WHERE c.N_cliente = a.N_cliente
AND m.Id_articulo = a.Id_articulo
ORDER BY m.titulo

Espero vuestra respuesta, muchas gracias!!
Responder Con Cita
  #14  
Antiguo 18-05-2003
dvdjr dvdjr is offline
Registrado
 
Registrado: may 2003
Posts: 8
Poder: 0
dvdjr Va por buen camino
Hola a todos, mi intención es borrar los registros de la tabla dónde guardo los alquileres que hacen los clientes.

La tabla dónde guardo los alquileres se llama alquiler_musica y tiene los siguientes campos:

N_registro PK
N_cliente
Id_articulo
Precio_alquiler
Fecha_alquiler
Fecha_devolucion

Cómo veréis la Primary Key(PK) es el campo N_registro.
En N_cliente y Id_articulo guardo el número de registro y el número de identificativo del disco de música respectivamente.

Existen otras dos tablas dónde guardo los datos de los clientes y los datos de los discos musicales.

Saludos.
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


La franja horaria es GMT +2. Ahora son las 03:49:23.


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