![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
#1
|
|||
|
|||
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. ![]() |
#2
|
||||
|
||||
Hola,
pon a True la propiedad RequestLive del Query. Saludos. |
#3
|
||||
|
||||
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. |
#4
|
|||
|
|||
![]() Tengo la propiedad RequestLive a true y sigue sin ir. Saludos
|
#5
|
||||
|
||||
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. |
#6
|
|||
|
|||
![]() 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!! |
#7
|
||||
|
||||
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. |
#8
|
|||
|
|||
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. |
#9
|
||||
|
||||
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. |
#10
|
||||
|
||||
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. |
#11
|
|||
|
|||
Hola, como complemento a lo que escribe marcoszorrilla en la ayuda de delphi sobre la propiedad RequestLive se lee
Cita:
Además Marcos haces referencia a un truco de Cantú pero no das mas referencia, ¿pudieras brindarla?¿donde se puede ver? Saludos |
#12
|
||||
|
||||
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. |
#13
|
||||
|
||||
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. |
#14
|
||||
|
||||
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. ![]() |
![]() |
|
|
![]() |
|