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 04-06-2005
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
Mostrar valor de DBEDIT con Procedimiento Almacenado

Bueno esta rutina de aumentarle una unidad al codigo anterior ya me esta volviendo cabezon !!!!!

Les explico tengo dos DBEDIT (Uno que corresponde al codigo:txt_codi y el otro al nombre: txt_nomb)

Dentro de un formulario los tengo a los dados y en un Datamodule a los objetos de conexion.

En Firebird he creado un Generador
CREATE GENERATOR SIGUIENTE_CODIGO;
SET GENERATOR SIGUIENTE_CODIGO TO 1025;

Asi mismo un Trigger

CREATE TRIGGER CODIGO_CLIENTE FOR CLIENTES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
new.codi_cli = 'CLI' || CAST(gen_id(SIGUIENTE_CODIGO,1) AS VARCHAR(7));
end

y por ultimo un Procedimiento almacenado
CREATE PROCEDURE CODI_INCRE1
RETURNS ( NUM_SIG VARCHAR(10))
AS
begin
num_sig = 'CLI' || CAST(gen_id(siguiente_codigo,0)+1 AS VARCHAR(7));
suspend;
end

Ahora es cuando lo pongo en Accion (en la Tabla clientes tengo como ultimo codigo el CLI1025)

Entoces ejecuto el formulario y en el txt_codi me coloca automaticamente el codigo : CLI1026 (esto es correcto puesto que al ejecutar el programa me ha llamado el procedimiento almacenado , entonces al momento de grabar me lo registra en mi tabla (debido al lanzamiento del trigger asi como el generador) y todo ok.

AHORA ES DONDE VIENE EL PROBLEMA AL EJECUTAR ESTA RUTINA, ES DECIR DESPUES DE GRABAR EL CODIGO CLI1026, ES DECIR, CUANDO DESEO HACER OTRO INGRESO EN EL DBEDIT (TXT_CODI) ME DEBERIAAAAAAAA SALIR EL CODIGO CLI1027 PERO NO LO PUEDO OBTENER.

Esta es la rutina cuando le doy click en el boton

*********************************************
procedure Tfrm_Mant_Clie.BotonClick(Sender: TObject);
var
resp1 : integer;
resp2 : integer;
begin
resp1 := Application.MessageBox('Estas seguro que Deseas Grabar este Cliente','Mantenimiento de Clientes',MB_YESNO+MB_ICONINFORMATION);
if resp1=6 then
begin
DM_Conexiones.IBT_Clientes.Post;
Application.MessageBox('Cliente Registrado con éxito','Mantenimiento de Clientes');
resp2 := Application.MessageBox('Deseas Registrar a Otro Cliente','Mantenimiento de Clientes',MB_YESNO+MB_ICONINFORMATION);
if resp2=6 then
begin
DM_Conexiones.IBTransaction1.Commit;
DM_Conexiones.IBT_Clientes.Active := True;
DM_Conexiones.IBQuery1.Close;
DM_Conexiones.IBQuery1.SQL.Clear;
DM_Conexiones.IBQuery1.SQL.Add('SELECT num_sig FROM CODI_INCRE1');
DM_Conexiones.IBQuery1.Open;
txt_codi.Text := DM_Conexiones.IBQuery1.ParamByName('num_sig').AsString;
txt_nomb.SetFocus
end
else
begin
DM_Conexiones.IBT_Clientes.Last
end
end
else
begin
DM_Conexiones.IBT_Clientes.Cancel;
showmessage('Sus datos Ingresados han sido cancelados')
end
end;

*********************************************

Me sale este Error:

Project Ingreso_Clientes.exe raised exception class EDATABASEError with messagr ''IBQUERY1: Parameter 'num_sig' not found'. Process stopped .............

Pero Hay algo curioso les cuento

Puse un marcador en la linea :
txt_codi.Text := DM_Conexiones.IBQuery1.ParamByName('num_sig').AsString;
Entonces coloque el puntero del mouse sobre txt_codi.Text y me di cuenta que si obtenia el codigo CLI1026, pero en el formulario no obtenia el codigo CLI1026 y luego me arojaba el error que antes lo escribi.

Que puede ser este error. Sera algo de estructura o sintaxis al momento de escribir.

Espero que me puedan ayudar ya que estoy parado en esto y no puedo continuar.

Gracias y saludos a todos por dedicarse un tiempo a mi respuesta.
Responder Con Cita
  #2  
Antiguo 04-06-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 22
Crandel Va por buen camino
Tenes dos errores:

1. No captures el parametro por el nombre si no por el número (número 0).

2. Nunca insertas el registro, por lo que nunca se incrementa.

Suerte
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 05-06-2005
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Faltan los dos puntos

Te doy esta respuesta pensando en que lo que quieres es tener el valor en una sql y no el de ingresar un parametro, así pues debes cambiar la siguente linea:
Código Delphi [-]
 txt_codi.Text :=  DM_Conexiones.IBQuery1.ParamByName('num_sig').AsString;

por la siguiente linea

Código Delphi [-]
  txt_codi.Text := DM_Conexiones.IBQuery1.FieldByName('num_sig').AsString;
Responder Con Cita
  #4  
Antiguo 05-06-2005
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
Gracias amigo diste en el Clavo.


Ese era el error. El error de uno que recien esta empezando!!!!
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 18:10:23.


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