¿Cómo insertar registros de diferentes tablas?

Como hago para insertar registros de tablas diferentes en el momento en que oprimo un botón(pej: ¿Guardar)? , como hago este tipo de join en Delphi?, yo cuando utilizo Visual basic lo hago con una variable string y luego ejecuto el recordset con esa variable y me funciona, pero no se como hacer en delphi, como escribir una consulta para que luego me muestre los resultados(la consulta con cruce de tablas), y como manipulo dichos resultados, ¿cómo hago para moverme de registro en registro(dentro de los resultados de la consulta?...

1 respuesta

Respuesta
1
Hay varias formas.
Delphi tiene la posibilidad de tener dos cursores uno Master y otro detail(Maestro/Detalle) En realidad los detalles pueden ser varios y un detalle puede ser master de tro detalle de él mismo, de manera que no hay limites para esto.
Una opción es esta, lee las propiedades MasterSource y MasterFields, de los dataset o cualquier de sus descedientes.
Esta opción es piola pero puede ser lenta en algunos casos, de manera que podes construir consultas paramétricas en los hijos, parado en un registro del padre, le pasas como parámetro su clave a los detalles y reconsultas el query para refrescar los datos, (esto es más optimo en conjuntos de datos grandes).
Finalmente podrías actualizar los datos usando un select simplemente con tablas cruzadas e intentar actualizar directamente algunas DB los oportan perfectamente otras no. Para hacer un Select simple o con múltiples joins (no viene al caso porque para delhpi es lo mismo) e intentar luego una actualización de dichos datos, podes usar un TQuery o TAdoQuery, vincular esta tabla a un DataSetpovider, y este dataset provider a un TdataSetClient, el provider ponele en false la propiedad que indica que resuelva el dataset, esto forzará al DataSetprovider a usar el SQL RESOLVER para actualizar los datos, moraleja usa SQL PURO para actualizar, en algunos casos cuando la DB le envía el nombre absoluto de los campos este sql provider es capaz de resolver que tabla debe actualizar.
Por otro lado si trabajas con Delphi 6 podes usar a esos mismos efectos y de una forma más personalizable el TUpdateSQL que es un componente que te permite personalizar o mejor dicho, hace vos mismo las instrucciones SQL de insert, update y delete, se usa con TQuery o TStoreProcedure fue ideado originalmente para trabajar con Querys que son ReadOnly (como en el caso de los joins de tablas) debés setear la propiedad Update Object del TQuery o TStoreProcedure apuntando a este objeto y luego programar los eventos del mismo.
Obviamente esto no solo te permite actualizar múltiples tablas, cuando al usuario le mostrás visualmente un solo registro, sino que también te permitiría impactar sobre distintas DB.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas