FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Recuperar el valor de Returning
Buenas, tengo lo siguiente:
Hasta aquí todo bien, resulta que quiero recuperar el valor que viene en Returning y no se como hacerlo. ¿Alguna sugerencia? Uso Delphi 7, Firebird 2.1, MDO version 0.8.8. Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. Última edición por santiago14 fecha: 01-09-2010 a las 21:14:26. Razón: Errores en el código |
#2
|
||||
|
||||
Esto dice en la página 49 de Firebird 2.1 Release Notes
Rules for Using a RETURNING Clause ... 2 - The presence of the RETURNING clause causes an INSERT statement to be described by the API as isc_info_sql_stmt_exec_procedure rather than isc_info_sql_stmt_insert. Existing connectivity drivers should already be capable of supporting this feature without special alterations. Creo entender que los componentes que estamos usando deberían de alguna manera capturar el dato que viene en Returning sin demasiado problema... la pregunta es como. Bueno, espero que aporte algo esto. Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#3
|
||||
|
||||
procedure insert_con_returning(query:TMDOQuery);
Código:
var tVardelTipodelField: tipo; begin with query do begin Close; sql.Clear; SQL.Add('Insert into familias (cod_familia, fecha_ingreso_familia, estado_familia) '); sql.Add('Select gen_id(Select ibe$log, 1), current_timestamp, '); sql.Add('''A'' From rdb$database '); sql.Add('returning cod_familia '); try ExecSQL; Código:
tVardelTipodelField := FieldbyName('cod_familia').as....; raise; end; end; end;
__________________
online |
#4
|
||||
|
||||
Hola Combat
Al hacer lo que sugieres me sale el siguiente error: query: Field 'cod_familia' not found
__________________
Uno es responsable de lo que hace y de lo que omite hacer. Última edición por santiago14 fecha: 02-09-2010 a las 17:03:49. Razón: Errores de ortografía |
#5
|
|||
|
|||
bueno y si en lugar de execsql se usa open?
|
#6
|
||||
|
||||
Usando Open me dice lo mismo: query: Field 'cod_familia' not found.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#7
|
||||
|
||||
Ya le encontré la vuelta... un segundo por favor que ya lo publico...
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#8
|
||||
|
||||
Bueno la cosa viene así:
Pongo el código y luego lo explico, aunque es muy claro.
En primer lugar debemos usar un TMDOSQL en lugar de un TMDOQuery, la consulta va igual, asignamos los parámetros de entrada con Params.ByName. Hacemos ExecQuery en lugar de ExecSQL y recuperamos el valor a través de FieldByName... Bueno esto funcionó bien. Abajo pongo un Message para ver en la pantalla el id devuelto. Con eso podemos recuperar de una sola vuelta los valores generados por gen_id sin tener que hacer cosas raras. Espero haber ayudado, gracias a todos por los aportes. Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#9
|
||||
|
||||
Hola Amigos como estan.. Estoy tratando de Recuperar el valor del returning.
Me emocione al ver que lo han logrado con el MDO. Pero yo utilizo DELPHI XE y Firebird 2.5 y al parecer no existen mas los componentes MDO para el XE de delphi.. alguna sugerencia? he buscado mucho y no lo encuentro... |
#10
|
||||
|
||||
Quizás puedas adaptarlos fácilmente. En todo caso podrás usar IBX que viene con delphi, son casi iguales, pero algo más avanzados.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
Estoy peleando con los DBX pero no le encuentro el lado aún.
Si encuentro una solución la publico |
#12
|
||||
|
||||
De todas formas he dicho IBX, no DBX.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
||||
|
||||
Ok probare con los IBX
|
#14
|
||||
|
||||
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#15
|
||||
|
||||
Claro, es que "returning" es posterior a la última versión de MDO, por eso no lo implementa.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#16
|
||||
|
||||
hola todo mal con IBDataBase
Cuando intento conectarme tengo los siguientes mensajes. Si coloco en el DatabaseName = C:\BD\bd_local.FDB Me lanza el siguiente mensaje "Unavailable database" En cambio si coloco de esta manera = 127.0.0.1:C:\BD\bd_local.FDB me lanza lo siguiente "connection rejected by remote interface." Lo curioso es que en el mismo DM tengo un TSQLConnetion el cual apunta a la misma BD y se conecta sin ningún problema. Les ha pasado esto alguna vez? |
#17
|
||||
|
||||
Poco podemos hacer si no explicas algo más, pones código, etc.
Yo diría que estás conectando cuando ya está conectada.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#18
|
||||
|
||||
Lo que pasa es que no hay mucho codigo mas que los componentes en el IDE.
Solo inserte el componente IBDataBase en mi DataModule Le coloque la ruta de mi BD, el usuario y contraseña y al darle TRUE en la propiedad connected del IBDataBase ya tira ese error. |
#19
|
||||
|
||||
http://www.clubdelphi.com/foros/showthread.php?t=68708
http://www.intitec.com/varios/Delphi...rd_con_ibx.pdf
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#20
|
||||
|
||||
Muchas gracias Casimiro por los enlaces, los he leído pero de igual manera era lo que yo ya estaba haciendo.
Cuando seleccione Local me sale un mensaje luego de apretar el test. Y cuando selecciono remote me da el otro mensaje de error. No creo que sea mi gds32.dll ni el fbclient.dll por que en el mismo DataModule tengo un TSqlConnetion que apunta a la misma base de datos en los parámetros y se conecta perfectamente, como también me conecto desde el IBExpert. Es por eso que me parece muy raro que me cree problemas el IBDatabase que estoy intentando conectar. Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Funcionamiento de la Clausula Returning | Ricardojosep | Firebird e Interbase | 4 | 01-02-2010 02:14:01 |
ClientDataSet y returning de Firebird | jconnor82 | Firebird e Interbase | 0 | 10-11-2009 04:20:47 |
Recuperar un valor de una tabla | Pollo2004 | Varios | 3 | 10-10-2008 14:40:50 |
Como recuperar el valor de una variable en un ciclo... | Arturo | Varios | 2 | 10-11-2006 19:33:52 |
¿Como recuperar un valor de un campo autoincrementable? | SyncMaster | Firebird e Interbase | 3 | 11-05-2004 09:08:04 |
|