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

Formularios con campos de tipo memo

Estas en el tema de Formularios con campos de tipo memo en el foro de ASP Clásico en Foros del Web. Hola compañeros, esta vez mi problema se trata de un sencillo formulario en el cual tengo un "textarea" para rellenar como caja de texto y ...
  #1 (permalink)  
Antiguo 16/08/2005, 03:43
 
Fecha de Ingreso: mayo-2004
Mensajes: 20
Antigüedad: 20 años
Puntos: 0
Formularios con campos de tipo memo

Hola compañeros, esta vez mi problema se trata de un sencillo formulario en el cual tengo un "textarea" para rellenar como caja de texto y luego almacenarla en una base de datos. Lo que pasa es que, si me paso de los 256 caracteres en la caja de texto, me da un error.

El codigo ASP en el que hago la llamada a la base de datos es este, especifico cual es la linea problematica:

Set cm = Server.CreateObject("ADODB.Command")
Set obj = Server.CreateObject("ADODB.Connection")
objQuery = "Select * From actividades Where nombre = '"& campo(6) & "'"
obj.open objProvider

cm.ActiveConnection = obj
cm.CommandText = "Insert Into actividades(titulo,programa,lugar,profesores,fecha _real,fecha_realizacion,nombre,precios,pdf,imagen, video) Values (?,?,?,?,?,?,?,?,?,?,?)"

Set objParam = cm.CreateParameter(, 201, , 255, campo(0))
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 201, , 255, campo(1))'AQUI EL ERROR
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 201, , 255, campo(2))
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 201, , 255, campo(3))
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 200, , 255, campo(4))
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 201, , 255, campo(5))
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 201, , 255, campo(6))
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 201, , 255, campo(7))
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 201, , 255, campo(8))
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 201, , 255, campo(9))
cm.Parameters.Append objParam
Set objParam = cm.CreateParameter(, 201, , 255, campo(10))
cm.Parameters.Append objParam
cm.execute

La linea que tengo señalada es donde se produce el problema, supongo q será a causa del valor 201 que le da al parámetro la propiedad de ser tipo cadena larga, y no se como hacer para que llegue a ser lo que en access llama "memo" que permite mucho más de 256 caracteres.

asias!
  #2 (permalink)  
Antiguo 16/08/2005, 05:43
 
Fecha de Ingreso: mayo-2005
Mensajes: 156
Antigüedad: 19 años, 1 mes
Puntos: 0
mira cono tiene en la bbdd el campo, como texto o memo o numerico
__________________
Programador & Diseñador Web
www.ascariz.es
www.ascariz.com
www.telefonica.net/web/tiempoderol
  #3 (permalink)  
Antiguo 16/08/2005, 06:04
 
Fecha de Ingreso: mayo-2004
Mensajes: 20
Antigüedad: 20 años
Puntos: 0
La Base de datos tiene el campo establecido de tipo memo, pero cuando intento introducir más de 255 caracteres aparece este mensaje de error:

"La aplicación utiliza un valor de tipo no válido para la operación actual."

Sin embargo, cuando introduzco a mano, desde el access, una cadena más larga, la acepta y la guarda normalmente. También puede leer tal cadena y mostrarla desde ASP sin problemas. No se porque no puedo insertar entonces.
  #4 (permalink)  
Antiguo 16/08/2005, 10:43
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Pues si, porque le estas mandando un parametro que dice que va a aceptar unicamente 255 caracteres

Código:
Set objParam = cm.CreateParameter(, 201, , 255, campo(1))'AQUI EL ERROR
cm.Parameters.Append objParam
Ahora, la verdad nunca lo he hecho asi con Access, para MS SQL el tipo de dato es adLongVarChar, que corresponde a un ntext, realmente no se cuantos caracteres soporte en Access, hay otra deficiencia y es que no estas especificando el nombre del parametro y me parece que no debiera ser un argumento opcional

Código:
Set objParam = cm.CreateParameter("unNombre", adLongVarChar, 40000, campo(1))
cm.Parameters.Append objParam
Trata con 40000, yo siempre le mando 100000 a un ntext de 16, pero repito, no se en access cual sea el equivalente.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 17/08/2005, 04:53
 
Fecha de Ingreso: mayo-2004
Mensajes: 20
Antigüedad: 20 años
Puntos: 0
Gracias u_goldman, el problema era el de especificar los bytes, no sabía que significaba ese parámetro y no me había parado a verlo. En access se permite tb un cantidad muy grande de datos para los campos tipo memo, por ej, me ha aceptado poner la cantidad q tu decias 100000.

Por lo del nombre, no es un parámetro necesario, funciona bien así, supongo q pq lo incluyo antes en estos comandos:

cm.CommandText = "Insert Into actividades (titulo,programa,lugar,profesores,fecha,nombre,pre cio,imagen) Values (?,?,?,?,?,?,?,?)"


Gracias de veras, me traia de cabeza este problema
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:17.