Problemas con los string sql en una aplicación en Visual Basic 6.0 con una conexión DAO hacia Oracle

Tengo que dar soporte a una aplicación en VB 6.0, tengo una conexión DAO hacia Oracle pero tengo problemas con los string sql, por ejemplo cuando deseo especificar un to_date(), que es una función de Oracle, me da un error en tiempo de ejecución, pero extrayendo la cadena y probándola en Oracle si funciona.
Te adjunto las lineas del problema, por favor si puedes ayudarme te lo agradecería, tengo la limitante de que no puedo subir a ADODB por que todo el modulo funciona con DAO, gracias de antemano
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)
Carlos D.

1 Respuesta

Respuesta
1
Disculpa la tardanza, y espero que pudieras resolver el problema, en caso contrario esta es mi opinión del tema.
Aunque no domino Oracle y no conozco muy bien su sintaxis SQL (haz de saber que cada "dialecto" sql es distinto)
La sintaxis SQL que utilizas según dices no reconoce la orden to_date. Nosotros en Vb para accesar y/o escribir a datos Fecha en Access y Foxpro usamos el comando # o la función Date.
Detallaré tu instrucción para ver si es correcta.
La primera parte "Select count(*) as cuenta from mdoprecu inner join mdop... _fchini>="
La interpretas de manera correcta al Standard SQL, pero "to_date(""&...:SS')" no estoy seguro si es un campo de tu tabla o si deseas cargar la fecha y hora actual.
En todo caso tu código te esta dando algo como campo<=01/ene/2005 (por ejemplo) y visual no sabe que es 01/ene/2005 la instruccion corecta seria Para cada casos :
a)Si to_date es una función que devuelve la fecha del sistema.
"...._fchini>=#" & format(date(),"YYYY/MM/DD hh:mm:ss") & "# and "....
Nota que para poner las fechas se inicia con # el formato es campo=#fecha#
Ademas el comando date() en VB devuelve la fecha con hora del sistema y la instrucción Format() se encarga de darle formato valga la redundancia.
Sus valores son:
Y para año
M para Mes
DE para Día
H para Horas
M para minutos
Es para segundos
AMPM para formato 12 horas nada formato 24.
Entonces la sintaxis seria:
campo=#format(date(),"Formato")#
en codigo algo así:
"campo=#" & format(date(),"DD/MM/YYY hh:mm:ss AMPM") & "# and campo2=..."
b) Si to_date es campo de tu base de datos.
"...._fchini>=#" & format(to_date,"YYYY/MM/DD hh:mm:ss") & "# and "....
Nota que sustituí solo date por to_date dentro del comando format. Así tomas un campo fecha y lo comparas.
Si tienes duda sobre su uso, solo recuerda que para validar campos fecha en VB es necesario poner # # antes del dato y formatearles usando Format(). (Solo se aplica en instrucciones SQL)
Muchas gracias, el problema radicaba en que DAO no reconoce funciones propias de Oracle como to_date(), to_char(), etc., solo reconoce las de Microsoft Jet, así que lo que hice fue valerme de access para vincular mis tablas de Oracle y formatear ls sentencias SQL para Access, de manera que access me hacia la inserción en forma transparente. Ah y cierto, hacia falta el # en las sentencias.
Muchas Gracias Cuidate y estamos en contacto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas