Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-04-2004
ronimaxh ronimaxh is offline
Miembro
 
Registrado: jun 2003
Ubicación: Rep. Dominicana
Posts: 307
Poder: 21
ronimaxh Va por buen camino
ayuda al llamar un procedimiento...

Hola amigos, les quiero preguntar como llama el valor de un procedimiento desde delphi, explico, tengo una tabla con un generador y un tragger ahora bien, tengo un procedimiento que dice cual es el codigo del generador.

Uso ibexpert si lo ejecuto desde el ibexpert me da el codigoid bien,
ahora desde delphi, no se como hacer para que me devuelva el valor.

Nota: estoy aprendiendo a usar los precedimientos, es mi primer procedimiento, desde ya gracias.
__________________
ronimaxh
Rep. Dominicana
Responder Con Cita
  #2  
Antiguo 26-04-2004
celades celades is offline
No confirmado
 
Registrado: may 2003
Ubicación: Torroella de Montgrí (Girona)
Posts: 42
Poder: 0
celades Va por buen camino
Hola

supongamos tener el procedimiento

create procedure genera_codi_id
returns
( codigo_id integer)
as
begin
codigo_id=gen_id(generador,1);
suspend;
end

desde delphi con un componente ibquery u otro

ibquery.sql.text:=' select codigo_id from genera_codi_id'
ibquery.open;
variable_x:=ibquery.fieldbyname('codigo_id').asinteger;

o sea el procedimiento se puede consultar igual que una tabla cualquiera
pero debe tener returns y suspend

Hay mas formas de hacerlo con ibquery o IBStoredProc
ibquery.sql.text:='execute procedure genera_codi_id';
ibquery.execproc;
variable_x:=ibquery.parambyname('codigo_id').asinteger;

Lo he hecho sin probarlo pero espero no haber cometido errores de sintaxis

Saludos
Responder Con Cita
  #3  
Antiguo 26-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
hola celades. te recomiendo que aprendas a utilizar la etiqueta code (vinculo en mi firma) para que tus trozos de código se vean correctamente indentados.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 26-04-2004
ronimaxh ronimaxh is offline
Miembro
 
Registrado: jun 2003
Ubicación: Rep. Dominicana
Posts: 307
Poder: 21
ronimaxh Va por buen camino
gracias, lo probare y luego les digo...
__________________
ronimaxh
Rep. Dominicana
Responder Con Cita
  #5  
Antiguo 26-04-2004
ronimaxh ronimaxh is offline
Miembro
 
Registrado: jun 2003
Ubicación: Rep. Dominicana
Posts: 307
Poder: 21
ronimaxh Va por buen camino
Aqui les digo que probe el procedimiento y todo salio bien, pero note algo, cada ves que ejecuto el procedimiento me incrementa el generador, sin hacer nungun tipo de transaccion; como se contrala eso....

Esto lo hago usando ibx y firebird 1.03.
__________________
ronimaxh
Rep. Dominicana
Responder Con Cita
  #6  
Antiguo 26-04-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Los generadores funcionan independientemente de las transacciones, por lo que siempre te van a incrementar su valor, aunque hagas un Rollback de la transacción en las que se les llamó.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 26-04-2004
ronimaxh ronimaxh is offline
Miembro
 
Registrado: jun 2003
Ubicación: Rep. Dominicana
Posts: 307
Poder: 21
ronimaxh Va por buen camino
gracias guillotmarc por la atencion; pero habra una forma de consultarlo y que el store precedure no lo incremente.....
__________________
ronimaxh
Rep. Dominicana
Responder Con Cita
  #8  
Antiguo 26-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
nunca lo he hecho, pero si dentro del sp llamas a gen_id con un incremento de 0, simplemente te devolverá el valor actual de la secuencia...

Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 27-04-2004
sanxpue sanxpue is offline
Miembro
 
Registrado: jul 2003
Posts: 196
Poder: 21
sanxpue Va por buen camino
asi es como dice..

asi es como dice nuestro amigo jachguate, aunque nunca lo halla hecho si funciona, ami me funciona con un IBStoredProcedure

creamos el procedimiento

Código:
Create Procedure REG_IND
Return(IND Integer)
As
Begin
  IND = Gen_ID(Nombre_Generador,0);
End
pones un IBStoredProcedure, lo ligas al IBDataBase llamas el procedimiento

a la hora de ejecutarlo

Código:
IBStoredProcedure.Prepare
Try
  IBStoredProcedure.ExecProc;
  Variable := IBStoredProcedure.ParamByName('IND').AsInteger;
Finally
  IBStoredProcedure.UnPrepare;
End;
__________________
saludos desde Puebla Mexico..
asanxt@hotmail.com
"como siempre a sus ordenes y siempre con buena cara"
'lolita me excitas, perversa piel de melocotón'
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


La franja horaria es GMT +2. Ahora son las 20:47:42.


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