Ver Mensaje Individual
  #10  
Antiguo 24-08-2011
juanlito juanlito is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: Jerez de la Frontera
Posts: 14
Reputación: 0
juanlito Va por buen camino
Muchas gracias fjcg02
Acertaste de pleno con el problema, es que como yo ya tenia las consultas hechas y sobre access me iban bien pues no pense que el formato de la fecha me cambiase ahora, pero por lo visto he de tener mas cuidado.

Al igual que dije con la consulta anterior, si este hilo ya ha perdido su razon de ser y tengo que abrir otro me lo comentais y lo hago, pero mientras tanto sigo aqui porque en realidad es todo sobre lo mismo,(o al menos asi lo creo)

Sigo modificando todo mi codigo para que me funcione con firebird en vez de access y me he encontrado otro problema, tengo una consulta algo compleja (la terminaba con codigo en delphi sacando datos de varios querys ) que he decidido hacerla con un otro SP (le estoy cogiendo el gustito) pero me da error, a continuacion voy a poner el codigo y explicar lo que quiero que haga, quizas este mal pero viendo otros hilos en el foro he creido que era la forma adecuada.

Código SQL [-]
 
CREATE OR ALTER PROCEDURE COMP_GUAN_PLATA 
returns (
    CALLING varchar(255),
    CALLT timestamp,
    CALLED varchar(255))
as
declare variable LINEA varchar(255);
declare variable LON integer;
begin
  /* Procedure Text */
 FOR SELECT GUAN.callingnumber, GUAN.callednumber, GUAN.calltime FROM guan
 INTO :CALLING, :CALLED, :CALLT    DO
 BEGIN
   LON =  CHAR_LENGTH (:CALLED);
   if (:LON > 9) then
   begin
     CALLED = left(:CALLED,:LON-4);
     CALLED = :CALLED ||'XXXX';
   end
   CALLED = :CALLED ||'%';
   SELECT PLAT.LINEA FROM PLAT WHERE (((PLAT.LINEA) = :CALLING) 
AND ((PLAT.DESTINO) Like :CALLED) AND ((PLAT.FECHA_HORA_INICIO)>DateAdd(hour,-2,:CALLT) 
And (PLAT.FECHA_HORA_INICIO)hour,2,:CALLT)))
   INTO :LINEA ;
   if (:LINEA IS NULL) then
   begin
    EXIT;
    suspend;
   end
   else
   CALLED = null;
   CALLT = null;
   CALLING = null;
  suspend;
 END

tengo 2 tablas, guan y plat, tengo que comparar si todos los registros de guan se encuentra en plat, y mostrar los que no se encuentren, hasta ahi todo simple, el problema es que tengo que modificar un campo de guan para que coincida con plat (siempre tienen la misma diferencia) y luego quiero que esos registros seo se produzca casi en la misma fecha y hora, he usado un intervalo de 2 horas arriba - 2 horas abajo.

como el SP me devuelve solo un registro, luego uso un IBquery con sql: select * from COMP_GUAN_PLATA , para que me muestre todos los registros resultantes.

Me da un error cuando lo ejecuto en el IBExpert. diciendo: "multiples rows in singleton select", esto sera debido porque puede darse el caso de que en el intervalo que uso de 4 horas pueda repetirse el registro, pero a mi solo me interesa que no se de nunca, si se da una o varias me da igual, no se mostraria en ninguno de los 2 casos, solo cuando no exista.

Espero despues de este parrafon haberme explicado con claridad.

Gracias
Responder Con Cita