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

Que es mejor insertar utilizando RECORDSET o INSERT

Estas en el tema de Que es mejor insertar utilizando RECORDSET o INSERT en el foro de ASP Clásico en Foros del Web. El problema lo tengo cuando pongo Now() porque si lo quito si que me inserta bien el otro campo US_FECNAC Gracias de todas formas....

  #31 (permalink)  
Antiguo 20/04/2005, 05:16
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
El problema lo tengo cuando pongo Now() porque si lo quito si que me inserta bien el otro campo US_FECNAC

Gracias de todas formas.
__________________
Silvia - Castellón :arriba:
  #32 (permalink)  
Antiguo 20/04/2005, 05:18
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Asi no puede ser INSERT INTO usuarios (US_FECNAC, FECHA_ALTA) VALUES ("'#" & fecha_nac & "#', '#" & Now() & "'#") porque al poner la primera ' me comenta toda la linea
__________________
Silvia - Castellón :arriba:
  #33 (permalink)  
Antiguo 20/04/2005, 05:23
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 7 meses
Puntos: 18
cambia ' por dos comillas dobles
  #34 (permalink)  
Antiguo 20/04/2005, 05:34
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 20 años, 3 meses
Puntos: 9
Cita:
Iniciado por silvia1977
Asi no puede ser INSERT INTO usuarios (US_FECNAC, FECHA_ALTA) VALUES ("'#" & fecha_nac & "#', '#" & Now() & "'#") porque al poner la primera ' me comenta toda la linea
Así:

INSERT INTO usuarios (US_FECNAC, FECHA_ALTA) VALUES ("#" & fecha_nac & "#, #" & Now() & "#")
__________________
..:: moNTeZIon ::..
  #35 (permalink)  
Antiguo 20/04/2005, 05:39
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Cita:
Iniciado por moNTeZIon
Así:

INSERT INTO usuarios (US_FECNAC, FECHA_ALTA) VALUES ("#" & fecha_nac & "#, #" & Now() & "#")
No me funciona me vuelve a dar el error de antes:

[Microsoft][ODBC SQL Server Driver][SQL Server]El nombre '#20' no es válido en este contexto. Sólo se permiten constantes, expresiones o variables. No se permiten nombres de columna.

Bueno creo que al final voy a dejar la insercion de usuarios con un recordset ya que estoy perdiendo mucho tiempo. Ya utilizare los inserts en otras paginas.

Gracias por vuestra ayuda
__________________
Silvia - Castellón :arriba:
  #36 (permalink)  
Antiguo 20/04/2005, 07:42
Avatar de renton  
Fecha de Ingreso: enero-2004
Ubicación: BCN (PPCC)
Mensajes: 573
Antigüedad: 21 años, 3 meses
Puntos: 1
Un caso en el que es necesario hacer el recordset en lugar de el Execute:

Cuando has de hacer una inserción en una tabla donde el id es autonumerico e inmediatamente has de realizar una insercion en otra tabla con el id del insert anterior.

Ejemplo:

Código:
dim claveUno
rs.open ("select idTabla, campo1 from tabla1", conexion)
rs.Addnew
rs("campo1") = Request("nombre")
claveUno= rs("idTabla")
rs.Update
rs.Close

(Y aki ya se puede hacer un execute o otro recordset)

conexion.execute("Insert into tabla2 (idTabla1,campoX) values("& claveUno &",'"& Request("direccion") &"');")
(Suponemos que en tabla2 la clave primaria es tb autonumerica y obviamente no hace falta insertarla)

Como véis en el recorset a la vez q insertamos pillamos el que será su ID, y así lo podemos utilizar en la siguiente tabla como clave externa.

Un saludo!
__________________
"No et limites a contemplar aquestes hores que ara venen, baixa al carrer i participa.
No podran res davant un poble unit, alegre i combatiu!!"
  #37 (permalink)  
Antiguo 20/04/2005, 08:25
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 20 años, 3 meses
Puntos: 9
Vamos a ver...

Silvia1977.. Por qué en el error te sale esto: '#20'

La variable que estás metiendo es más larga no? consta de dia, mes y año.. digo yo.

Intenta mostrar por pantalla ese valor a ver qué estás metiendo exactamente en la BD. Una vez te cerciores que la aplicación va bien, sólo te tienes que preocupar de formatear correctamente esa fecha (Investiga la funcion FormatDateTime) para que sea aceptada por la BD.

Espero que tengas suerte. Esto ya está tardando..

__________________
..:: moNTeZIon ::..
  #38 (permalink)  
Antiguo 20/04/2005, 10:00
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años, 1 mes
Puntos: 2
Validacion

Esto va mas alla de las puras comillas, debes tener una funcion que se encargue de quitar todos los caracteres que no quieres que sea capaz de pasar, por ejemplo, tu decides desde el principio que caracteres son validos para el usuario t contraseña, como A-Z a-z 0-9 y los caracteres especiales _, entonces en las cadenas que lees te fijas que no haya ningun otro caracter, y si existe marcas el error.

Tambien si tu preocupacion es por parte del SQL cuando consultas, pues bien, debes tener otra funcion de validacion donde haces algo como:

Sql = SqlConsultaLimpia("select * from tabla1 where user = '" & user & "' and clave = '" & clave & "')

rs = conn.execute(Sql)

Entonces esa funcion se encarga siempre de revisar que todo es correcto para pasarlo a la base de datos.

Suerte!!
  #39 (permalink)  
Antiguo 20/04/2005, 10:12
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Al final he dejado mi insercion de usuarios con un INSERT y el problema de la fecha que tenia me daba porque yo insertaba en la tabla de usuarios la fecha en la que se da de alta el usuario y lo hacia asi:

INSERT INTO usuarios (FECHA_ALTA) VALUES ('20/04/2005 12:43:52 p.m.')

donde esto 20/04/2005 12:43:52 p.m. es lo que devuelve la funcion Now. Como asi me daba error por cual del espacio que hay entre la fecha y la hora, ahora inserto la fecha de alta asi:

alta = FormatDateTime(Now(), 2) donde la variable alta me devuelve solo la fecha 20/04/2005 sin la hora

entonces ahora ya no me da error:
INSERT INTO usuarios (FECHA_ALTA) VALUES ('" & alta & "')

Pero, y si quisiera tambien insertar la hora?? como se haria?

Respecto a evaluar lo que introducen los usuarios, lo unico que hago es esto:

nombre = trim(Request.Form( "fnombre" ))
nombre = replace(nombre,"'","")
nombre = replace(nombre,"""","")

con todos los campos del formulario porque creo que la ' y la " son los unicos caracteres que me pueden dar error al hacer un INSERT.

Alguien sabe algun caracter más que deberia tratar para que no me falle el INSERT??

Gracias
__________________
Silvia - Castellón :arriba:
  #40 (permalink)  
Antiguo 20/04/2005, 11:14
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años, 1 mes
Puntos: 2
Hola

Entonces el problema que tenias es que tu campo en la base de datos es tipo DATE solamente, y deberia haber sido DATETIME, porque realmente creo que vas a necesitar tambien la hora.

Pruebalo, y nos dices que paso.
  #41 (permalink)  
Antiguo 21/04/2005, 01:14
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Cita:
Iniciado por Neuron_376
Entonces el problema que tenias es que tu campo en la base de datos es tipo DATE solamente, y deberia haber sido DATETIME, porque realmente creo que vas a necesitar tambien la hora.

Pruebalo, y nos dices que paso.
El campo fecha_alta lo tengo declarado como datetime de 8

Saludos
__________________
Silvia - Castellón :arriba:
  #42 (permalink)  
Antiguo 21/04/2005, 01:33
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 20 años, 3 meses
Puntos: 9
Parece que el problema se ha resuelto.

Para formatear los valores para campos hora... Sigue investigando la función FormatDateTime...
__________________
..:: moNTeZIon ::..
  #43 (permalink)  
Antiguo 28/04/2005, 02:31
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Ayudame porfo

Cita:
Iniciado por moNTeZIon
Parece que el problema se ha resuelto.

Para formatear los valores para campos hora... Sigue investigando la función FormatDateTime...

Estuve investigando de como poner tambien la hora pero me da error. Mira yo inserto asi:

fecha = FormatDateTime(Now(),2)
hora = FormatDateTime(Now(),3)
fecha_incluido = fecha&" "&hora

gr="INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (250,300, '" & 1 & "', '" & 1 & "', '" & 0 & "', '" & 0 & "', '" & 1 & "', '" & 0 & "', 1, '"& fecha_incluido &"')"

Set rs = conexionBD.Execute(gr)

pero me dice el error:

[Microsoft][ODBC SQL Server Driver][SQL Server]Error de sintaxis al convertir una cadena de caracteres a datetime.

Ya no se que hacer, porque si pongo directamente Now() tambien me dice ese error

Me podrias ayudar?

Gracias
__________________
Silvia - Castellón :arriba:
  #44 (permalink)  
Antiguo 28/04/2005, 02:46
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 4 meses
Puntos: 144
Prueba a ver si te funciona así:

fecha_incluido = fecha&" "&hora
fecha_incluido= CDate(fecha_incluido)
  #45 (permalink)  
Antiguo 28/04/2005, 03:40
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
No me funciona

Cita:
Iniciado por 3pies
Prueba a ver si te funciona así:

fecha_incluido = fecha&" "&hora
fecha_incluido= CDate(fecha_incluido)
Me dice el mismo error:

INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (40011, 20523, '1', '1', '0', '0', '1', '0', 1, '28/04/2005 11:39:18 a.m.')

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Error de sintaxis al convertir una cadena de caracteres a datetime.

No se que hacer ya!
__________________
Silvia - Castellón :arriba:
  #46 (permalink)  
Antiguo 28/04/2005, 03:52
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 4 meses
Puntos: 144
En realidad
Código:
fecha = FormatDateTime(Now(),2)
hora = FormatDateTime(Now(),3)
fecha_incluido = fecha&" "&hora
response.write fecha_incluido
Es lo mismo que
Código:
response.write now
Prueba a meter en la BD el Now, directamente. ¿Probaste tb meterlo con el símbolo de la almohadilla delante y detrás?. No se me ocurren más cosas. Quizás los expertos puedan echarte una mano.
  #47 (permalink)  
Antiguo 28/04/2005, 04:07
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Me dice lo mismo con las #

Yo hago:

gr="INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (40011, 20523, '" & 1 & "', '" & 1 & "', '" & 0 & "', '" & 0 & "', '" & 1 & "', '" & 0 & "', 1, '#"&Now()&"#')"
Set rs = conexionBD.Execute(gr)

Y me dice por pantalla:

INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (40011, 20523, '1', '1', '0', '0', '1', '0', 1, '#28/04/2005 12:05:03 p.m.#')

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Error de sintaxis al convertir una cadena de caracteres a datetime.

A ver si alguien me puede ayudar... por favor expertos!

Gracias
__________________
Silvia - Castellón :arriba:
  #48 (permalink)  
Antiguo 28/04/2005, 07:34
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Ya no se si la cosa es que alguien pueda ayudar o alguien pueda hacer el trabajo. Digo, tantos mensajes para un error de sintaxis en una sentencia.
Simplemenete hay que probar las sentencias en el mismo gestor de BD (y ver en la ayuda del programa) antes de meterlas al ASP, ahí de van depurando.
  #49 (permalink)  
Antiguo 28/04/2005, 08:57
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Cita:
Iniciado por Myakire
Ya no se si la cosa es que alguien pueda ayudar o alguien pueda hacer el trabajo. Digo, tantos mensajes para un error de sintaxis en una sentencia.
Simplemenete hay que probar las sentencias en el mismo gestor de BD (y ver en la ayuda del programa) antes de meterlas al ASP, ahí de van depurando.
Perdona pero se supone que me he dado de alta en este foro para escribir cuando ya lo he probado todo y no me funciona, se supone que escribes aqui cuando estas desesperado, porque sino no perderia el tiempo ya que estoy trabajando y tengo bastante faena.

Si hay tantos mensajes tambien es porque yo voy insertando mis resultados buenos por si a alguien le puede servir, con lo cual entre todos nos ayudamos.

Para tu información ya he solucionado yo solita mi duda. La solucion es hacer un insert en sql server 2000 de Now en vez de Now(), de esta forma:

gr="INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (500, 300, '" & 1 & "', '" & 1 & "', '" & 0 & "', '" & 0 & "', '" & 1 & "', '" & 0 & "', 1, '"&Now&"')"

Set rs = conexionBD.Execute(gr)

Muchas gracias por tu ayuda
__________________
Silvia - Castellón :arriba:
  #50 (permalink)  
Antiguo 28/04/2005, 09:05
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Hay, Myakire, Myakire... ¿ves lo que lográs? Que la gente se enoje
Eres malo, malo, malo!



PD: Es una broma, silvia, no te me enojes (más de lo que estás )

__________________
...___...
  #51 (permalink)  
Antiguo 28/04/2005, 13:11
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
mmmmmm AZ, es que si no es así, no podrían decir con taaaaaanto orgullo:
Cita:
ya he solucionado yo solita mi duda
  #52 (permalink)  
Antiguo 28/04/2005, 13:29
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
Iniciado por u_goldman


Este si fué para aumentar mis posts



(ah, y pa que no se me acuse de lo mismo agrego lo siguiente)

Myakire, claro que lo anterior fue también en broma para vos ;)
__________________
...___...
  #53 (permalink)  
Antiguo 28/04/2005, 15:41
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Marito AZ!!!!

En represalia a lo que le hiciste a mi post, pues no solo me lo quitaste sino que lo sumaste a los tuyos, publicaré las fotos que subiste en el foro de colaboradores donde te paseabas desnudo por la casa de CVander totalmente alcoholizado y decapitando unas gallinas, minutos después de que CV accedió a lo del cambio de nick!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #54 (permalink)  
Antiguo 28/04/2005, 17:14
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Noooooooooooooo!!!!! Por favor, no lo hagas.
Repito: N-o l-o h-a-g-a-s!!! (que hay menores de edad en éste foro, al menos hacelo por ellos ¿si?)

;)
__________________
...___...
  #55 (permalink)  
Antiguo 28/04/2005, 17:45
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Solo por mis pequeños amigos que se encuentran merodeando estos lugares, no lo haré , pero ya pensaré en la venganza!

Pre-Salú!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #56 (permalink)  
Antiguo 28/04/2005, 23:31
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 23 años, 3 meses
Puntos: 2
Cita:
Iniciado por trasgukabi
usuario = Replace(request.form("usuario"), """", "")
aqui ahi una funcion muy buena de nuestro

Y LES ACLARO NO SOY WOMAN SOY MEN

varios en el MSN piensan que soy mina por el avatar pero esa es mi amorcito la Kylie Minogue.. (muy sexy y rica... www.kylie.com)

so no massss...
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #57 (permalink)  
Antiguo 29/04/2005, 06:09
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 20 años
Puntos: 0
Venga no me enfado si me ayudais en esto jijijiji http://www.forosdelweb.com/f15/correo-formato-html-para-cliente-webmail-293164/

venga ayudarmeeeeeeeeeeeee
__________________
Silvia - Castellón :arriba:
  #58 (permalink)  
Antiguo 29/04/2005, 07:21
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Cita:
Iniciado por dobled
Y LES ACLARO NO SOY WOMAN SOY MEN
, cielos, tener que especificar eso debe ser poco común
  #59 (permalink)  
Antiguo 29/04/2005, 14:52
Avatar de dobled  
Fecha de Ingreso: enero-2002
Ubicación: Rancagua - Chile
Mensajes: 1.328
Antigüedad: 23 años, 3 meses
Puntos: 2
Cita:
Iniciado por Myakire
, cielos, tener que especificar eso debe ser poco común
No Myakire lo que ha pasado que me han contactado como 5 veces por el msn y me dicen eres de FDW? Eres Chica? creo que es por lo del avatar..
__________________
Usa títulos específicos y con sentido
En las listas de correo o en los grupos de noticias, la cabecera del mensaje es tu oportunidad de oro para atraer la atención de expertos cualificados en aproximadamente 50 caracteres o menos. No los desperdicies en balbuceos como "Por favor ayúdame" (de "POR FAVOR AYÚDAME!!!" ya ni hablamos). No intentes impresionarnos con lo profundo de tu angustia; mejor usa ese preciado espacio para una descripción lo más concisa posible del problema.
  #60 (permalink)  
Antiguo 29/04/2005, 15:19
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Cita:
Iniciado por dobled
No Myakire lo que ha pasado que me han contactado como 5 veces por el msn y me dicen eres de FDW? Eres Chica? creo que es por lo del avatar..
Jojojo... a mi me pasaba lo mismo con.. errr.. mi anterior nick, que sonaba muy femenino
__________________
...___...
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 00:14.