![]() |
no se puede agregar la clave foranea
Tengo un datamodule con 3 sqlquery (sqlquery1, sqlquery2, y aux).
Y en la bd tengo una tabla persona y una tabla cliente. En la tabla cliente tengo el idpersona, pero algo falla al querer agregar un cliente, mne agrega los datos de la tabla madre solamente. Los procedimientos son:
Espero alguien pueda ayudarme, los sqlquery tienen los parametros en la propiedad TParams.. agregados. Gracias |
En tu código ejecutas el query de aux. En su lugar deberías abrirlo.
Si lo ejecutas no obtendrás resultados. Esta instrucción está pensada para ejecutar cosas como un insert/update/delete que no devuelvan nada. No recuerdo si la instrucción es Open u OpenSQL.
De todos modos yo organizaría un poco mejor el código y creo además que te falta liberar el objeto creado (Tconsultas). Si me permites:
|
Gracias
Gracias por responder, voy a probar el codigo.
Lo que me han dicho otros colegas, es que sirve solo si un solo usuario puede insertar en una tabla. Porque si varios acceden, por concurrencia, no devolvera exactamente el ultimo id insertado. Para esto se debe usar mas bien que devuelve el de la sesion. Pero no se me ocurre como resolver esto, ya que deberia usar el mismo TSQLQuery? Saludos |
Yo utilizo IDs para cada registro de la tabla y luego otros campos para los números de orden, pedido, factura, etc.
El ID es un campo obtenido de un generador y el número del documento se calcula en los triggers. Todo lo hecho en un trigger está dentro de una misma transacción, por lo que si no hay errores al insertar/modificar, la base de datos se ha encargado de que no haya duplicados. Yo trabajo con Firebird. Esta base tiene generadores que devuelven el número siguiente del actual. En los eventos BeforePost es donde obtengo un número para mi ID y se lo asigno al parámetro del dataset. Este ID es imposible que se duplique, por lo solo queda esperar a que el SQL se complete y refrescar los datos que sean necesarios (NRO_DOCUMENTO, TOTALES, etc.)
El trigger sería algo así:
|
bueno
entiendo tu forma de hacerlo. Y esta buena, lo que si es que obtengo el error
Aux:Parameter idp not found, y SI esta declarado en el value de la propiedad PARAMS del componente, es como que no lo esta cargando. Saludos.. |
[quote=giulichajari;478382]lo que si es que obtengo el error Aux:Parameter idp not found, y SI esta declarado en el value de la propiedad PARAMS del componente, es como que no lo esta cargando.
QUOTE] Creo que esto se debe a que la sintaxis es incorrecta
|
[quote=duilioisola;478385]
Cita:
Saludos |
|
Logre hacerlo
Logre hacerlo con componentes SQLQuery. Si quieren dejen su opinion.
|
La franja horaria es GMT +2. Ahora son las 00:02:06. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi