Visual Basic.NET - datos no filtrados en un procedimiento almacenado

 
Vista:

datos no filtrados en un procedimiento almacenado

Publicado por Alex (2 intervenciones) el 19/10/2005 00:18:35
Hola, tengo un problema que para mi es ilógico. Estoy ejecutando un procedimiento almacenado en oracle que retorna registros, además el procedimiento almacenado recibe como parametro una fecha que debe filtrar los datos devueltos al ejecutar el procedimiento almacenado, el problema esta ahí que no filtra datos, devuele todo el conjunto de registros de la tabla.

Aquí esta el código del proc almacenado: note q recibe como parametro de entrada un valor tipo fecha

CREATE OR REPLACE PROCEDURE Datositem (fecha DATE,c_item OUT Indemnizaciones.ReservasPendientesROW)
IS
BEGIN
OPEN c_item FOR SELECT i.ID,
TO_NUMBER(TO_CHAR(REPLACE(DECODE(SUBSTR(dir.gpsx,1,1),'.',SUBSTR(dir.gpsx,2),',',SUBSTR(dir.gpsx,2),dir.gpsx),',','.')),'9999999999.00') x,
TO_NUMBER(TO_CHAR(REPLACE(DECODE(SUBSTR(dir.gpsy,1,1),'.',SUBSTR(dir.gpsy,2),',',SUBSTR(dir.gpsy,2),dir.gpsy),',','.')),'9999999999.00') y
FROM TRATADO tr,CONTRATOREASEGURO cr,REPARTOCONTRATOITEMS rc, ENDOSOITEMGRUPOCOBERTURA eg,
ENDOSOITEM ei, ENDOSO e, POLIZA p, ENDOSOESTADO et, DOCUMENTO d, ASIENTO a,
PREDIO pre, ITEM i, DIRECCION dir, ENTIDAD ent, CLIENTE cli, MATERIALCONSTRUCCION matc,
TIPOPREDIO tpre, TIPOPREDIOGENERAL tpreg, CLASEPOLIZA cp
WHERE cr.tratadoid = tr.ID
AND tpreg.ID = tpre.tipoprediogeneralid
AND rc.contratoreaseguroid = cr.ID
AND eg.ID = rc.endosoitemgrupocoberturaid
AND ei.ID = eg.endosoitemid
AND e.ID = ei.endosoid
AND p.ID = e.polizaid
AND P.clasePolizaId = cp.id
AND rc.ultimo = 'S'
AND e.ID = et.endosoid
AND et.esactual = '1'
AND d.ID = et.facturaid
AND a.claseid = d.ID
AND et.estadoid = '13'
AND TRUNC(e.vigenciaDesde) <= fecha--ojo esta línea
AND TRUNC(e.vigenciaHasta) >= fecha--ojo esta línea
AND i.ID = ei.itemid
AND pre.ID = i.ID
AND e.sucursalid = '87'
AND dir.ID = pre.direccionid
AND ent.ID = cli.entidadid
AND e.clienteid = cli.ID
AND matc.ID = pre.materialconstruccionid
AND tpre.ID = pre.tipopredioid
AND p.tipoContenedor = '1'
AND (dir.gpsx IS NOT NULL AND dir.gpsy IS NOT NULL)
AND (NVL(dir.gpsx,'0') NOT IN ('.','0') AND NVL(dir.gpsy,'0') NOT IN ('.','0'))
AND dir.gpsx <> dir.gpsy
--and tpre.id = '2847277056'
GROUP BY
i.ID,
dir.gpsx,
dir.gpsy;
END;

Aqui esta el código VBN que ejecuta el proc:

cn.Open()
Dim cmd As New OracleCommand(nombreprocedimiento, cn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("fecha", OracleType.DateTime).Value = fecha
cmd.Parameters.Add("c_item", OracleType.Cursor).Direction = ParameterDirection.Output
Dim da As OracleDataReader = cmd.ExecuteReader
Datagrid.DataSource = da
Datagrid.DataBind()

Nota: fecha es una variable tipo date de VBN y nombreprocedimiento es tipo string
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:datos no filtrados en un procedimiento almacena

Publicado por Ivan Galindo (26 intervenciones) el 20/10/2005 10:20:25
Hola, la verdad no tengo experiencia manejando oracle.....sin embargo, al manejar datos tipo fecha en mySql....hay un problema de compatibilidad entre las fechas; la onda esta mas o menos así:

Si lees la fecha a partir de un control como DateTimePicker o Calendar;en la propiedad value...y la pasas como parámetro para inserción o actualización....este es interpretado por la Base de Datos como un formato incorrecto...a lo k responde con el valor default para el campo en cuestion.

La verdad no tengo el codigo a la mano para hacer esto mas practico....sin embargo el problema lo resolví pasando como parámetro una cadena que siga con el formato correcto de la Base de datos y despues lo convierto a tipo fecha....

Si te interesa, responde este mensaje y despues agrego un poco de codigo......si no t interesa....pues ni modo.....al menos lo intenté...jeje!

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:datos no filtrados en un procedimiento almacena

Publicado por Alex (2 intervenciones) el 20/10/2005 20:32:24
Te agradezco el interés prestado a mi pregunta. Pues si, eso de los formatos es conflictivo pero te comento que ya encontre la solución al problema. Consistia en el nombre del parametro que recibe el stored procedure, este coincidia con el nombre de un campo de una de las tablas en las que se hacia el select. Solo cambiando el nombre del parametro, el problema se solucionó.

De igual manera muchas gracias

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar