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 10-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Error "Problem in BindingCursor"

Hola a todos, lo que quiero es trasladar todos los registros que cumplen una cierta condición de una tabla a otra.

Para ello uso una función EXTRACTMONTH de la UDF rFunc.

Cree este procedimiento:
Código SQL [-]
CREATE PROCEDURE MOVER_MOV_TEMP_A_FINAL
AS
BEGIN
  // inserto
  INSERT INTO MOV_FINAL (ID_MOV, REF_CARGO, ENTRADA, SALIDA)
    SELECT * FROM MOV_TEMP
    WHERE SALIDA IS NOT NULL
    AND EXTRACTMONTH(SALIDA) < EXTRACTMONTH('NOW');

  // borro
  DELETE FROM MOV_TEMP
    WHERE SALIDA IS NOT NULL
    AND EXTRACTMONTH(SALIDA) < EXTRACTMONTH('NOW');
END^

el procedimiento se ejecuta bien desde el IBOConsole, pero me devuelve el error "Problem in BindingCursor".

pero desde C++Builder con los IBX directamente se me cuelga todo.

si elimino la condición que usa el EXTRACTMONTH todo funciona bien.

Alguien sabe a que puede ser?
__________________
[Crandel]
Responder Con Cita
  #2  
Antiguo 12-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
resp

Mira me parece un poc extraño ya que he usado esa funcion y no m eda ningun problema no has probado usas la mismo instruccion sobre esa bade de datos pero solo pra seleccionar haber si hay algun dato que esta corrupto y te genera el problema o quisas sea el formato o lago a si
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #3  
Antiguo 13-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Es muy extraño no logre deducir que es el error.

Verifique toda la tabla y no tengo tengo datos corrupto.

Tambien proble ejecutar solo la parte del select y todo funciona bien.

estoy confundido
__________________
[Crandel]
Responder Con Cita
  #4  
Antiguo 13-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Solucionado, estaba intentando insertar con ID repetido cuando mi tabla no lo permitia

supuestamente no debían estar repetidos, pero bueno ...
__________________
[Crandel]
Responder Con Cita
  #5  
Antiguo 13-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Unhappy No esta solucionado

Pues no, no esta solucionado, lo de los ID repetidos era solo producto de varios códigos de prueba.

es un misterio

si ejecuto el INSERT y el DELETE por separado funcionan perfecto, pero dentro del procedimiento no ... aaaarrrrrgggggg

si pongo uno solo el INSERT o el DELETE dentro del procedimiento tampoco funciona.

que loco

rastafarey podrias probar si vos podes usar la función EXTRACTMONTH o FIRSTDAYMONTH dentro de un procedimiento por favor?
__________________
[Crandel]
Responder Con Cita
  #6  
Antiguo 13-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Ya que no veo el problema comencemos por el principio.

Que version de de interbase o firebird usas y desde donde ejecutas dicho procedure.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #7  
Antiguo 13-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Cita:
Empezado por rastafarey
Que version de de interbase o firebird usas y desde donde ejecutas dicho procedure.
Firebird 1.5.algo, el último estable.
Si lo ejecuto desde C++Builder con los IBX o desde wSQL, se cuelga.
Si lo ejecuto desde IBOConsole, me da este error.
__________________
[Crandel]
Responder Con Cita
  #8  
Antiguo 13-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
resp

Me puedes enviar un script con la strutura de la bd para hacer la prueva
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #9  
Antiguo 14-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Hola rastafarey, perdona que recien conteste a esta hora, la verdad es que hoy fue un día dificil y largo.

Bueno, La idea es crear una DB llamada PRUEBA o lo que sea, genere una mini DB para simular el problema que tengo sin perder tiempo en el resto.

Este es el código para generar la DB
Código SQL [-]
/* Creamos las tablas MOV_TEMP y MOV_FINAL
   ======================================= */
CREATE TABLE MOV_TEMP (
    ID_MOV INTEGER NOT NULL PRIMARY KEY, 
    REF_CARGO INTEGER NOT NULL,
    ENTRADA TIMESTAMP DEFAULT 'now' NOT NULL,
    SALIDA TIMESTAMP);

CREATE TABLE MOV_FINAL (
    ID_MOV INTEGER NOT NULL PRIMARY KEY, 
    REF_CARGO INTEGER NOT NULL,
    ENTRADA TIMESTAMP DEFAULT 'now' NOT NULL,
    SALIDA TIMESTAMP);
    
/* Generador para el ID */   
CREATE GENERATOR INC_MOV;
  
    
/* Declaramos la función externa */   
DECLARE EXTERNAL FUNCTION FIRSTDAYMONTH
   TIMESTAMP
   RETURNS TIMESTAMP
  ENTRY_POINT 'fn_firstdaymonth'  MODULE_NAME 'rfunc';
  
  
SET TERM ^ ;

/* Trigger que incrementa el ID */   
CREATE TRIGGER BI_MOV FOR MOV_TEMP
ACTIVE BEFORE INSERT AS
BEGIN
  MOV_TEMP.ID_MOV = gen_id(INC_MOV, 1);
END^

/* Procedimiento que me da error
  Es para mover los registros del mes anterior a la otra tabla */ 
CREATE PROCEDURE MOVER_MOV_TEMP_A_FINAL
AS
BEGIN
  INSERT INTO MOV_FINAL (ID_MOV, REF_CARGO, ENTRADA, SALIDA)
    SELECT * FROM MOV_TEMP
    WHERE SALIDA IS NOT NULL
    AND SALIDA < FIRSTDAYMONTH('NOW');

  DELETE FROM MOV_TEMP
    WHERE SALIDA IS NOT NULL
    AND SALIDA < FIRSTDAYMONTH('NOW');
END^

SET TERM ; ^
y con estas instrucciones la usamos
Código SQL [-]
/* Ejecutamos esto unas cuantas veces para generar datos */   
/* con ambas fechas */
INSERT INTO MOV_TEMP(REF_CARGO, ENTRADA, SALIDA)
VALUES(1, '2005/08/13 23:39:05', '2005/08/13 23:39:05');

INSERT INTO MOV_TEMP(REF_CARGO, ENTRADA)
VALUES(1, '2005/08/13 23:39:05');

INSERT INTO MOV_TEMP(REF_CARGO, ENTRADA)
VALUES(1, 'now');


/* Ejecuto el procedimiento */
EXECUTE PROCEDURE MOVER_MOV_TEMP_A_FINAL
Si ves el error te lo agradecería.
__________________
[Crandel]
Responder Con Cita
  #10  
Antiguo 14-09-2005
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Mira no probe el script ya que pienso que tienes un problema de antemano. El formato de fecha ya que ib/fb usan la fecha en formato gringo mes/dia/año y no año/dia/mes. Comiensa por solucionar eso ya que si tratas de sacar el mes te daria un mes fuera del rango. Aunque no entiendo si has insertado un afecha de esa forma el manejador no te alla dado un error.

Espero te sirva de ayuda.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #11  
Antiguo 14-09-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
La realidad es que no uso esta forma de insertar las fechas, este es solo un ejemplo para poder ejecutarlos desde alguna consola sin hacer ninguna aplicación.

Yo inserto las fechas desde mi programa, el formato que puse arriba es para que lo hacepte IBOConsole, con el formato que vos me decis da un error de conversión.

Ademas es sólo la forma de insertar, despues cuando listo los datos, estos se muestran de forma correcta.
__________________
[Crandel]
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 04:23:56.


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