SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Mellileo en Martes 8 de Julio de 2003, 01:26
-
Ayuda genios!!
Necesito filtrar un recordset que contiene registros de una Base de Datos Oracle según un número de solicitud y año de la misma utilizando una sentencia SQL.
El código que tengo es el siguiente:
With frmSolicitudes.datSolicitudes
mSql = "Select * From tblEstablecimientos Where Nro_Solicitud = " & Val(txtSolicitud) & _
" And Year(Fecha_Solicitud) = " & Val(txtAnio)
.RecordSource = mSql
.Refresh
If .Recordset.RecordCount <= 0 Then
mMensaje = "La solicitud buscada no se encuentra registrada"
MsgBox mMensaje, vbExclamation, "Error de Busqueda"
.RecordSource = "Select * From tblEstablecimientos Order By Fecha_Solicitud, Nro_Solicitud"
.Refresh
End If
End With
Al ejecutar el código anterior saca un error con la función YEAR dentro de la sentencia SQL cuando trata de ferescarla con .Refresh!
Alguien me puede ayudar?
Gracias de antemano por cualquier ayuda!
Saludos Mellileo!
-
Indudablemente el problema estriba en que la variable Fecha_Solicitud no te la reconoce como de tipo Date... Cambia su formato.
Saludos y suerte
-
La que tu llamas variable Fecha_Solicitud en realidad es un campo de la tabla tblEstablecimientos.
Ahora, si estoy equivocado, me gustaría que por favor me explicaras cómo debo hacer para cambiar el formato.
Ten en cuenta que la sentencia mSql está aplicada a un control Adodc que se conecta a SGDB de Oracle, y ésta se ejecuta después de concetado a las tablas. Será que el motor de BD no reconoce la función Year()?
Será que al ser propia del VB 6.0 y no se reconoce en Oracle?
Cómo hago para que en Oracle a travéz de una sentencia SQL se listen los registros de una tabla que correspondan a determinado año?
Gracias por tu ayuda!
Saludos Mellileo!
-
Efectivamente, he denominado como variable un dato que no hay duda de que es un campo... Ya perdonarás... Pero es que no existe explicación para que te dé error la función Year() si se refiere a un dato (sea variable o campo) de tipo Date...
Yo tomo registros de Oracle para el control de las vacunaciones... Como unas veces me interesan los nacidos en el año actual, otras veces los que van a cumplir los 6 años (siempre referido al año en curso...) utilizo la siguiente función, que indudablemente tú conoces:
"DateDiff('yyyy', FecNac, Date)"; me funciona sin problemas...
Y digo yo: Sabiendo que esto te va a funcionar, ¿no te interesaría generar una variable FechadelAnio con "01/01/" & txtAnio y seleccionar los registros en que DateDiff('yyyy', Fecha_Solicitud, FechadelAnio) sea igual a cero? Al menos habremos descartado el posible error de Year()...
"No me llames iluso..."
Suerte y un afectuoso saludo
-
Hola señor JMMovilla:
Primero: Nunca fue mi intensión "Llamarte Iluso...". Disculpa si te sentiste ofendido!!!
Seguno: He encontrado una función función distinta pero muy funcional, es la siguiente:
to_char(Fecha_Solicitud,'yyyy')
Esta función es propia del Oracle y es muy útil al igual que la función "to_number(variable) para el tratamiento de fechas.
De nuevo, lo siento si mal entendiste las cosas, al parecer nos expresamos de distinta forma.
Saludos Mellileo!!
-
Que no, hombre, que no...
Ya se ve que no estás al tanto de una de nuestras canciones más en boga "No me llames iluso porque tenga una ilusión..." Yo reconozco que la solución que te proponía era un tanto quimérica, por eso "te cantaba" esa canción de moda... Pero en ningún momento se me ocurrió sospechar que tú me ofendieras o me insultaras... Perdona el que te haya inducido involuntariamente a pensar en esa posibilidad...
Gracias por las soluciones que apuntas, totalmente desconocidas para mí, y un afectuoso saludo
-
:beer: