![]() |
![]() |
| Paypal | 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
|
||||
|
||||
|
Hemos hablado otras veces de este tema.
La primera opciçon es intentar hacerlo utilizando transacciones. Deberías probar a realizar la inserción y consulta en la misma transación (tal vez debas jugar con el Isolation Level de la transacción). La segunda la uso para SQL Server, desconozco si en FB hay algo similar (algun experto en FB que nos lo confirme). En SQL Server existe una opción de para saber cual es el último AUTOINCREMENTAL insertado. Utilizandolo puedes crear un Stored Procedure que inserte en registro y a la vez devuelva el valor del autoincremental (utilizando parámetros).
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#2
|
||||
|
||||
|
Creo que con un procedimiento almacenado harias lo que quieres, por lo menos asi lo he hecho yo... al procedimiento almacenado le paso tanto los datos generales de la orden como los detalles con el array de elementos.
el mismo procedimiento te creará la orden y los detalles en las respectivas tablas dentro de la misma transacción evitandote los problemas actuales.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
|
#3
|
|||
|
|||
|
gracias movorack, voy a investigar esto de los procedimientos almacenados.
Me podrías exponer un ejemplo del codigo que debiese utilizar para realizar esto. Adicionamente, los datos que el usuario introsuzca, estoy hablando de por ejemplo el cliente, detalles de la orden... estos antes de ser enviados al procedimiento para ser almacenados, donde los tendre que guardar? en variables locales? Espero me puedas acercar un ejemplo y asi poder entenderlo mejor. Saludos |
|
#4
|
||||
|
||||
|
Por alguna razón no puedo insertar la imágen pero bueno... http://lh4.ggpht.com/_IuT93QvTKI0/S3...endepedido.png
el anterior es el formulario... todo está en edits y variables locales... los elementos de la orden están en un TStringGrid y cuando solicito crear la orden armo la consulta. se me olvidaba un pequeño detalle ... yo uso Postgres no firebird. aún así este es el codigo del procedimiento...
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
|
#5
|
|||
|
|||
|
Se me ocurre otra idea, es posible detectar la transacción y el usuario que inserto el registro en la tabla COMPRAS, esto con el fin de devolverle a ese usuario el campo con el registro autoincrementado?
Así de esta forma, y dentro de la misma transacción insertar el detalle de la orden de compra... ya que necesito el campo aotoincrementado de la tabla COMPRAS, para relacionar estas últimas. No se si será una buena idea, pero me gustaría saber si se puede hacer esto. Investigue con el componente TIBEvent, que se puede detectar movimientos en la BD, pero no se si asosiarlo a un usuario específico. Bueno, les dejo planteada la idea, se alguien tiene alguna mejor, me gustaría mucho leerla. Slaudos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Como contar ordenes de impresion? | JuanErasmo | C++ Builder | 2 | 25-01-2006 20:35:17 |
|