Foros del Web » Programando para Internet » ASP Clásico »

ASP con BD Oracle9i

Estas en el tema de ASP con BD Oracle9i en el foro de ASP Clásico en Foros del Web. Hola, a ver si alguien me puede ayudar, tengo el siguiente problema, a la hora de actualizar la siguiente tabla desde un formulario de mi ...
  #1 (permalink)  
Antiguo 30/05/2007, 05:08
 
Fecha de Ingreso: mayo-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
ASP con BD Oracle9i

Hola, a ver si alguien me puede ayudar, tengo el siguiente problema, a la hora de actualizar la siguiente tabla desde un formulario de mi web, pues tengo problemas para modificar la FECHA, digo la fecha pq si no actualizo la fecha de dicha tabla desde el formulario de la web, todo me lo hace bien. La sintaxis que utilizo es la siguiente, pero he probado otras cosas, como to_Date, en fin que no me modifica la fecha, esto utilizo:

sql = "UPDATE waldiainh SET " & _
"wdi_fecha = " & request("fecha") & ", " & _
"wdi_id_causa = " & request("causa") & ", " & _
"wdi_descripcion = " & request("descripcion") & ", " & _ "wdi_franja = " & request("franja") & _
" WHERE wdi_id = " & request("diaID") & ""
cn.Execute(sql)

Y esto es la consulta que se supone se ejecuta, pero me da este error:
OraOLEDB error '80040e14'
ORA-00911: invalid character
/a_calendarioFestivos.asp, línea 76 --> Es la linea cn.Execute(sql)


UPDATE waldiainh SET
wdi_fecha = '01/06/2007',
wdi_id_causa = '501600000090161',
wdi_descripcion = Dia festivo',
wdi_franja = 'C'
WHERE wdi_id = '500900000090207'

A ver si alguien me puede decir que tengo que hacer con la fecha. Saludos y gracias.
  #2 (permalink)  
Antiguo 30/05/2007, 05:25
Avatar de eoes  
Fecha de Ingreso: diciembre-2003
Ubicación: Puerto Ordaz
Mensajes: 78
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: ASP con BD Oracle9i

UPDATE waldiainh SET
wdi_fecha = to_date('01/06/2007','dd/mm/yyyy'),
wdi_id_causa = '501600000090161',
wdi_descripcion = Dia festivo',
wdi_franja = 'C'
WHERE wdi_id = '500900000090207'


tambien debes conocer para otras cosas to_char, to_number.

Saludos espero que te funcione.
__________________
Fran Ros.
  #3 (permalink)  
Antiguo 30/05/2007, 05:49
 
Fecha de Ingreso: mayo-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
Re: ASP con BD Oracle9i

Decir que el campo wdi_fecha es un campo DATE supuestamente se suponia. Eso que me dices lo he probado tambien directamente desde SQL*Plus y me da el siguiente error:

SQL> UPDATE waldiainh SET
2 wdi_fecha = to_date('01/06/2007','dd/mm/yyyy'),
3 wdi_id_causa = '501600000090161',
4 wdi_descripcion = Dia festivo',
5 wdi_franja = 'C'
6 WHERE wdi_id = '500900000090207'
7 ;
ERROR:
ORA-01756: quoted string not properly terminated

Aunque aqui ya no me funciona, a mi lo que me interesa es hacerlo dentro de mi pagina ASP para que el navegador lo interprete, supongo que seria asi:

sql = "UPDATE waldiainh SET " & _
"wdi_fecha = " & to_date(request("fecha")," ' DD/MM/YYYY ' ") & ", " & _
"wdi_id_causa = " & request("causa") & ", " & _
"wdi_descripcion = " & request("descripcion") & ", " & _
"wdi_franja = " & request("franja") & _
" WHERE wdi_id = " & request("diaID") & ""
cn.Execute(sql)

Pero tambien me da el siguiente error:

Error de Microsoft VBScript en tiempo de ejecución error '800a000d'
No coinciden los tipos: 'to_date'

/a_calendarioFestivos.asp, línea 70

Gracias de todos modos.
  #4 (permalink)  
Antiguo 30/05/2007, 05:54
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 4 meses
Puntos: 7
Re: ASP con BD Oracle9i

Vayamos por partes:

1

UPDATE waldiainh SET
wdi_fecha = to_date('01/06/2007','dd/mm/yyyy'),
wdi_id_causa = '501600000090161',
wdi_descripcion = Dia festivo', <----------- LE FALTA LA COMILLA AL INICIO
wdi_franja = 'C'
WHERE wdi_id = '500900000090207

2

Fijate en la cadena que estas montando. Chequea las comillas y la funcion to_date es para Oracle no para que la interprete ASP:

sql = "UPDATE waldiainh SET " & _
"wdi_fecha = to_date('" & request("fecha") & "', ' DD/MM/YYYY ' ), " & _
"wdi_id_causa = '" & request("causa") & "', " & _
"wdi_descripcion = '" & request("descripcion") & "', " & _
"wdi_franja = '" & request("franja") & _
"' WHERE wdi_id = " & request("diaID") & ""


Por cierto, te recomiendo que compruebes lo que metes en la tabla no vaya a ser que te hagan un sql injection.

Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -

Última edición por tammander; 30/05/2007 a las 05:59
  #5 (permalink)  
Antiguo 30/05/2007, 06:25
 
Fecha de Ingreso: mayo-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
Re: ASP con BD Oracle9i

1 Si, la comilla me la comi al copiarlo.
2 Gracias por el consejo, pero no hay problemas, pero bueno comprabre lo que meten.
3 Y entonces sabrías decirme que tengo que hacer con la fecha para que la interprete?.

Desde SQL*Plus tambien me falla, solo si antes hago esto:

ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY';

Y luego esto:

UPDATE waldiainh SET
wdi_fecha = '01/06/2007',
wdi_id_causa = '501600000090161',
wdi_descripcion = 'Dia festivo',
wdi_franja = 'C'
WHERE wdi_id = '500900000090207'

Me actualiza, pero claro yo quiero que todo esto se interprete desde asp, por lo tanto tendria que hacer algo para que se interprete esto:

ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY';

y esto pues es una funcion de oracle como tu dices con to_date, y ya no se que hacer.

Saludos y gracias.

Última edición por igualitoajbs; 30/05/2007 a las 06:38
  #6 (permalink)  
Antiguo 30/05/2007, 06:31
Avatar de eoes  
Fecha de Ingreso: diciembre-2003
Ubicación: Puerto Ordaz
Mensajes: 78
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: ASP con BD Oracle9i

Fijate que a ->'Dia festivo' le falta una comilla (') antes...
__________________
Fran Ros.
  #7 (permalink)  
Antiguo 30/05/2007, 06:40
Avatar de eoes  
Fecha de Ingreso: diciembre-2003
Ubicación: Puerto Ordaz
Mensajes: 78
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: ASP con BD Oracle9i

tambien recuerda que to_date es de parte de la instrucion SQL no de ASP. entonces seria asi:

sql = "UPDATE waldiainh SET " & _
"wdi_fecha = to_date('" & request("fecha") & "," ' DD/MM/YYYY ' ") , " & _
"wdi_id_causa = " & request("causa") & ", " & _
"wdi_descripcion = '" & request("descripcion") & "', " & _
"wdi_franja = " & request("franja") & _
" WHERE wdi_id = " & request("diaID") & ""
cn.Execute(sql)

Igual recuerda que para los demas campo tipo VARCHAR debes colocar la comilla dentro de la SQL, por ejemplo nota que tambien le coloque las comillas a la descripción.

En la siguiente pagina busca to_date y ve tambien la implementación.
http://www.duiops.net/curso/asp.htm
__________________
Fran Ros.
  #8 (permalink)  
Antiguo 30/05/2007, 06:58
 
Fecha de Ingreso: mayo-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
Re: ASP con BD Oracle9i

Guauuuu!!...perfecto, gracias a todos, al final lo solucione asi:

sql = "UPDATE waldiainh SET " & _
"wdi_fecha = to_date('" & request("fecha") & "','DD/MM/YYYY')" & ", " & _
"wdi_id_causa = " & to_sql(trim(request("causa")),"text") & ", " & _
"wdi_descripcion = " & to_sql(trim(request("descripcion")),"text") & ", " & _
"wdi_franja = " & to_sql(trim(request("franja")),"text") & _
" WHERE wdi_id = " & to_sql(trim(request("diaID")),"text") & ""
cn.Execute(sql)
  #9 (permalink)  
Antiguo 30/05/2007, 07:03
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 4 meses
Puntos: 7
Re: ASP con BD Oracle9i

El problema de las fechas y las bases de datos es sempiterno Lo primero que tienes que hacer es tener claro en qué formato lo vas a guardar ya que la mayoria de las BDs usan el formato americano: MM - DD - AAAA. Es decir Mes-Dia-Año mientras que el europeo o continental mas bien usan el de DD-MM-AAAA.

Para evitar tantos dolores de cabeza te recomiendo que hagas lo que yo: lo convierto a un numero:

AAAAMMDD

Asi el 7 de enero de 2007 (07/01/2007 en el sistema continental, 01/07/2007 en el americano) se convierte en 20070107. Cuando hago busquedas es tan simple como

SELECT * FROM table WHERE fecha BETWEEN 20070101 AND 20070130

Me busca fechas entre el 1 de enero y el 30 de enero.

Nunca he vuelto a tener problemas con las fechas


Si no quieres usar este maravilloso método, te recomiendo que chequees en qué formato quiere tu BD que le guardes la fecha y luego te hagas una funcioncita para poner todo en su sitio:

Código:
function to_USFormatDate(fecha)
    if isDate(fecha) then 
        USFormatDate = Month(fecha) & "-" & Day(fecha) & "-" & Year(fecha)
    else
        USFormatDate = ""
    end if
end function
o algo parecido



Un saludo

NOTA: Llegé tarde Me alegro que lo solucionaras
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -

Última edición por tammander; 30/05/2007 a las 07:04 Razón: Tarde pero sin desmerecer
  #10 (permalink)  
Antiguo 31/05/2007, 01:24
 
Fecha de Ingreso: mayo-2007
Mensajes: 22
Antigüedad: 17 años
Puntos: 0
Re: ASP con BD Oracle9i

Ok, gracias, lo probare.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:44.