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 03-06-2005
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
Volver a Incrementar y asignar a un DBtext

Hola Nuevamene con un problema que no puedo visualizar.

Bueno

En un formulario tengo varios dbText pero hay uno (txt_codigo).

Cuando ingreso por primera vez al formulario me muestra el ultimo codigo incrementado en 1 mediante un SP , y lleno todo lso DBTEXT y cuando le digo registrar me lo graba todo bien en la Tabla pero cuando le pregunto

resp2 := Application.MessageBox('Deseas Registrar a Otro Cliente','Mantenimiento',MB_YESNO+MB_ICONINFORMATION);
me sale


Project Proyecto_Clienes.exe raised exception class EIBClientError with message 'use Open for a Select Statement'. Process Stopped. Use Step o Run........

Le mando el codigo

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.IBT_Clientes.Last;
DM_Conexiones.IBT_Clientes.Insert;
DM_Conexiones.IBQuery1.SQL.Clear;
DM_Conexiones.IBQuery1.SQL.Add('SELECT num_sig FROM CODI_INCRE1');
DM_Conexiones.IBQuery1.ExecSQL;
txt_codi.Text := DM_Conexiones.IBQuery1.ParamByName('num_sig').AsString;
txt_nomb.SetFocus
end
else
begin
DM_Conexiones.IBT_Clientes.Last
end


Donde puede estar el Error ????????????

Gracias y Saludos a la Comunidad.
Responder Con Cita
  #2  
Antiguo 03-06-2005
RESP 3.0 RESP 3.0 is offline
Miembro
 
Registrado: may 2005
Posts: 29
Poder: 0
RESP 3.0 Va por buen camino
Es por la forma en la que ejecutas el Query, deberias de hacer esto

Código:
  
DM_Conexiones.IBQuery1.ExecSQL;
Responder Con Cita
  #3  
Antiguo 03-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Código Delphi [-]
 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.IBT_Clientes.Last;//No creo que sea necesario 
  DM_Conexiones.IBT_Clientes.Insert;//Podrias usar Append
  DM_Conexiones.IBQuery1.SQL.Clear;
   DM_Conexiones.IBQuery1.SQL.Add('SELECT num_sig FROM CODI_INCRE1');
  DM_Conexiones.IBQuery1.ExecSQL;//Utiliza Open, ya que ExecSql por lo regular se utiliza para Updates e Insert
  txt_codi.Text := DM_Conexiones.IBQuery1.ParamByName('num_sig').AsString;// Supongo que num_sig 
 //es una columna no un parametro, por tanto no entiendo esto
  txt_nomb.SetFocus
             end
          else
             begin
  DM_Conexiones.IBT_Clientes.Last
              end
Quizas no resuelva tu problema, pero...
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 03-06-2005 a las 02:37:29.
Responder Con Cita
  #4  
Antiguo 03-06-2005
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
Me explico mejor lo que pasa que esta consulta
DM_Conexiones.IBQuery1.SQL.Add('SELECT num_sig FROM CODI_INCRE1');

lo tengo en modo de diseño, y esta consulta lo paso al txt_codi.Text el valor de la consulta.(esto es la inicio y no tengo problemas).

Pero cuando esa consulta esta en modo de ejecucion obtengo ese errros


Pero la consulta es un Procedimieto almacenado es decir

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


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


CREATE GENERATOR SIGUIENTE_CODIGO;
SET GENERATOR SIGUIENTE_CODIGO TO 1009;



Todo esto me lo hace bien al momento de ingresar un cliente(por ejemplo CLI1020) pero cuando quiero ingresar otro usuario(CLI1021) alli es donde no lo obtengo (PARECIERA QUE NO LO LLAMARA EN TIEMPO DE EJECUCION AL PROCEDIMIENTO) y me sale ese error

Project Proyecto_Clientes.exe raised exception class EIBClientError with message 'use Open for a Select Statement'. Process Stopped. Use Step o Run........


Bueno espero que me puedan Ayudar.

Gracias y Saludos
Responder Con Cita
  #5  
Antiguo 03-06-2005
Avatar de Kreyser
Kreyser Kreyser is offline
Miembro
 
Registrado: ago 2004
Ubicación: Barcelona
Posts: 114
Poder: 20
Kreyser Va por buen camino
Post

Hola,

Creo que dieron en el clavo con esto...

Cita:
Empezado por vtdeleon
DM_Conexiones.IBQuery1.ExecSQL;//Utiliza Open, ya que ExecSql por lo regular se utiliza para Updates e Insert
Cambialo como te dicen por DM_Conexiones.IBQuery1.Open ...

Saludos.
__________________
"Es imposible hacer un programa 100% contra tontos, ya que éstos son muy ingeniosos"
Responder Con Cita
  #6  
Antiguo 03-06-2005
JoanKa JoanKa is offline
Miembro
 
Registrado: ene 2005
Posts: 92
Poder: 20
JoanKa Va por buen camino
Si lo cambien pero me sigue saliendo el mismo Error. Sera acaso del Trigger???? Que no se incrementa en uno despues de ingresar otro Cliente??????????????'
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 19:08:51.


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