Ayuda Urgente en VB con Oracle!

Saludos,
Tengo poca experiencia en VB y tengo que dar mantenimiento a una aplicación, tengo una conexión DAO entre VB y Oracle, pero al ejecutar el string sql no me reconoce las funciones nativas de Oracle, ejemplo: to_date() para las fechas, en ejecución me bota el error 3085, lo curioso es que extraigo la cadena sql y la pruebo en Oracle y si funciona. La cadena en VB es:
sSQL = "select count(*) as cuenta from mdoprecu inner join mdop" & sTabla & " on mdoprecu.recu_indi = mdop" & sTabla & "." & sTabla & "_recu where recu_sort > 0 and " & sTabla & "_fchini >= to_date('" & sFechaIni & "','YYYY/MM/DD HH24:MI:SS') and " & sTabla & "_fchini <= to_date('" & sFechaFin & "','YYYY/MM/DD HH24:MI:SS')"
Set TB = dbLocal.OpenRecordset(sSQL, dbOpenDynaset)
Como podría hacer para corregir este problema, te agradecería un mundo si me ayudas, ya que pasarme a ADODB implicaría recodificar todo nuevamente
Carlos

1 respuesta

Respuesta
1
¿El error que le sale se lo devuelve VB u Oracle?
Es muy probable que el problema esté en los campos sFechaIni y sFechaFin. Conviértalos a cadena de caracteres y utilice las variables del tipo cadena de caracteres en su string sql.
Pruébelo a ver si se soluciona.
He estado investigando sobre el error que vd. me comenta y he encontrado la siguiente dirección:
http://support.microsoft.com/default.aspx?scid=kb;en-us;209864
Como podrá vd. comprobar, no son buenas noticias. En resumen: cuando vd. utiliza DAO, sólo puede utilizar en sus consultas funciones de MS Jet. Las demás, (to_date, to_char, etc) las considera definidas por el usuario (en este caso por Oracle) por lo que no las admite.
Si le puedo ayudar en algo más no dude en consultarme.
Gracias por responder,
El error lo devuelve VB es el 8035 y dice que la función 'to_date' no esta definida en la expresión, tal parece que estuviera revisando la cadena sSQL antes de ejecutarla contra la base Oracle, y el problema abarca ademas todas las funciones de la base NVL, TO_DATE, TO_CHAR, etc.
Tal vez necesite algo más para ejecutar correctamente la sentencia... y necesito en este caso el incluir el to_date por que al pasar la cadena a oracle la variable de fecha se carga como un string y por ende el problema se transforma a una inconsistencia de tipos de datos.
Mil gracias por la ayuda, en efecto no podía usar las funciones de Oracle así que me valí de access para vincular las tablas de Oracle, de manera que formatenado las sentencias sql con funciones de access la inserción era transparente.
Gracia de nuevo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas