Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question Recuperar el valor de Returning

Buenas, tengo lo siguiente:

Código Delphi [-]
procedure insert_con_returning(query:TMDOQuery);
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;
    except
      raise;
    end;
  end;
end;

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 20:14:26. Razón: Errores en el código
Responder Con Cita
  #2  
Antiguo 02-09-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 02-09-2010
Avatar de Combat-F2D
Combat-F2D Combat-F2D is offline
Miembro
 
Registrado: may 2003
Ubicación: Toletum
Posts: 454
Poder: 22
Combat-F2D Va por buen camino
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....;
except
raise;
end;
end;
end;
__________________
online
Responder Con Cita
  #4  
Antiguo 02-09-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
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 16:03:49. Razón: Errores de ortografía
Responder Con Cita
  #5  
Antiguo 02-09-2010
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
bueno y si en lugar de execsql se usa open?
Responder Con Cita
  #6  
Antiguo 02-09-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Funcionamiento de la Clausula Returning Ricardojosep Firebird e Interbase 4 01-02-2010 01:14:01
ClientDataSet y returning de Firebird jconnor82 Firebird e Interbase 0 10-11-2009 03:20:47
Recuperar un valor de una tabla Pollo2004 Varios 3 10-10-2008 13:40:50
Como recuperar el valor de una variable en un ciclo... Arturo Varios 2 10-11-2006 18:33:52
¿Como recuperar un valor de un campo autoincrementable? SyncMaster Firebird e Interbase 3 11-05-2004 08:08:04


La franja horaria es GMT +2. Ahora son las 11:55:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi