![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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:
Última edición por duilioisola fecha: 26-06-2014 a las 18:17:58. |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
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í:
Última edición por duilioisola fecha: 26-06-2014 a las 21:55:17. |
#5
|
|||
|
|||
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.. |
#6
|
||||
|
||||
[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
|
#7
|
|||
|
|||
[quote=duilioisola;478385]
Cita:
Saludos |
#8
|
||||
|
||||
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
|||
|
|||
Logre hacerlo
Logre hacerlo con componentes SQLQuery. Si quieren dejen su opinion.
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
mostrar campo con clave foranea | georgeliners | Conexión con bases de datos | 3 | 11-06-2014 22:57:43 |
identificar un error de clave foranea... | pnsd_89 | SQL | 5 | 25-03-2011 13:01:03 |
Campo puede ser clave foranea de dos tabla | richy08 | Conexión con bases de datos | 4 | 26-01-2010 18:38:54 |
problema al crear clave foranea | anubis | Firebird e Interbase | 4 | 28-06-2008 16:24:49 |
Saber a quien se refiere una clave foránea | Cecil | Conexión con bases de datos | 2 | 27-09-2007 19:17:50 |
![]() |
|