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

Error en cuadros de texto

Estas en el tema de Error en cuadros de texto en el foro de ASP Clásico en Foros del Web. Que tal. Mi pregunta es la siguiente. Tengo un formulario en el cual se agregan algunos datos a un base de datos. El problema es ...
  #1 (permalink)  
Antiguo 06/01/2004, 17:15
Avatar de Cuezaltzin  
Fecha de Ingreso: diciembre-2003
Ubicación: Frente al Monitor
Mensajes: 252
Antigüedad: 21 años, 5 meses
Puntos: 0
Exclamación Error en cuadros de texto

Que tal.

Mi pregunta es la siguiente. Tengo un formulario en el cual se agregan algunos datos a un base de datos.

El problema es cuando en los cuadros de texto el usuario escribe o una comilla doble o simple (",'). Marca el siguiente error :

Tipo de error:
Microsoft JET Database Engine (0x80040E14)
Error de sintaxis (falta operador) en la expresión de consulta

Como puedo evitar este error. Aqui pongo el codigo el cual estoy utilizando:

<%
Response.Buffer = True

' load object
Dim load
Set load = new Loader

' calling initialize method
load.initialize

' File binary data
Dim fileData
fileData = load.getFileData("file")
' File name
Dim fileName
fileName = LCase(load.getFileName("file"))

Dim Id
Id = load.getValue("Id")

' Value of text input field "Seccion"

Dim SeccionInput
SeccionInput = load.getValue("Seccion")

Dim AutorInput
AutorInput = load.getValue("Autor")

Dim FechaInput
FechaInput = load.getValue("Fecha")

Dim TituloInput
TituloInput = load.getValue("Titulo")

Dim CortoInput
CortoInput = load.getValue("Texto_Corto")

Dim CompletoInput
CompletoInput = load.getValue("Texto_Completo")


' Path where file will be uploaded
Dim pathToFile
pathToFile = Server.mapPath("..\..\IA") & "\" & fileName
' Uploading file data
Dim fileUploaded
fileUploaded = load.saveToFile ("file", pathToFile)

' destroying load object
Set load = Nothing
%>

<html>
<head>
<title>File Uploading with ASP</title>
<style>
body, input, td { font-family:verdana,arial; font-size:10pt; }
</style>
<meta name="Microsoft Theme" content="-a- 011">
</head>
<body background="../../../_themes/-a-/probkgnd.gif" bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#FF0000" alink="#FF0000"><table width="700" border="1" align="center" bordercolordark="#666666" bordercolorlight="#999999">
<tr>
<td>Nombre del Archivo</td><td><%= fileName %>&nbsp;</td>
</tr><tr>
<td>Sección</td><td><%= SeccionInput %>&nbsp;</td>
</tr><tr>
<td>Autor</td><td><%= AutorInput %>&nbsp;</td>
</tr><tr>
<td>Fecha</td><td><%= FechaInput %>&nbsp;</td>
</tr><tr>
<td>Titulo</td><td><%= TituloInput %>&nbsp;</td>
</tr><tr>
<td>Texto Corto</td><td><%= CortoInput %>&nbsp;</td>
</tr><tr>
<td>Texto Completo</td><td><%= CompletoInput %>&nbsp;</td>
</tr>

</table><br><br>
<p style="padding-left:220;">

<%
Dim BDD
Dim TABLA
Dim SQL


Set BDD = Server.CreateObject("ADODB.Connection")
Set TABLA = Server.CreateObject("ADODB.Recordset")

BDD.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=" + Server.MapPath ("../../home.mdb"))

SQL = "UPDATE "&request.QueryString("Tabla")& " SET Seccion='"&SeccionInput&"',Autor='"&AutorInput&"', Fecha='"&FechaInput&"', Titulo='"&TituloInput&"', Texto_Corto='"&CortoInput&"', Texto_Completo='"&CompletoInput&"', IMG='"&fileName&"' WHERE Id LIKE "&Id&" "

BDD.Execute SQL
%>

</p>




</body>
</html>


Por su ayuda mil Gracias.

Cuelzaltzin.

Última edición por Cuezaltzin; 06/01/2004 a las 18:22
  #2 (permalink)  
Antiguo 06/01/2004, 22:29
 
Fecha de Ingreso: abril-2001
Ubicación: Puerto Montt
Mensajes: 89
Antigüedad: 24 años, 1 mes
Puntos: 1
Puedes utilizar un Replace en la variable, para sustituir las comillas simples antes de insertarla en la base de datos, puedes sustituirlo por comillas dobles o un asterisco o cualquier otro simbolo, luego cuando tienes que mostrar el dato utilizas la misma funcion pero a la inversa... sustituyes el simbolo por la comilla simple, ejemplo:

Para insertar el valor en la base de datos
variable = Request.Form("valor")
Replace(variable,"'","*")


Para mostrar el valor
variable = RS("valor")
Replace(variable,"*","'")


Saludos
  #3 (permalink)  
Antiguo 07/01/2004, 11:02
 
Fecha de Ingreso: noviembre-2003
Ubicación: Distrito Federal
Mensajes: 225
Antigüedad: 21 años, 5 meses
Puntos: 0
Ese problema por lo regular se debe a la comilla simple. La respuesta de arlin es buena, sin embargo que va a pasar cuando alguien en el texto coloque un asterisco, y despues le aplicas el proceso inverso ???, el asterisco te lo va a cambiar a comilla simple. Mejor guarda la informacion tal y como es. Para evitar el problema de la comilla simple utiliza un Replace y en donde la cadena a substituir sea la comilla simple y la substituyes por dos comillas simples. Ojo es por dos comillas simples no por comillas dobles. Este es el codigo:

Replace(tu_variable,"'","''")

Espero que esto te sirva
  #4 (permalink)  
Antiguo 14/01/2004, 18:26
Avatar de Cuezaltzin  
Fecha de Ingreso: diciembre-2003
Ubicación: Frente al Monitor
Mensajes: 252
Antigüedad: 21 años, 5 meses
Puntos: 0
Hola de nuevo.

Todavia tengo el mismo problema ya probe las dos respuestas y me marca el siguiente error:

Tipo de error:
Error de compilación de Microsoft VBScript (0x800A0414)
No se puede utilizar paréntesis al llamar a Sub

En esta linea me marca el error:

Replace(Marca,"'","''")

Aqui les agrego mi codigo para que me ayuden.Mil Gracias


<!--#include file="Loader.asp"-->

<%
Response.Buffer = True

' load object
Dim load
Set load = new Loader

' calling initialize method
load.initialize

' File binary data
Dim fileData
fileData = load.getFileData("file")
' File name
Dim fileName
fileName = LCase(load.getFileName("file"))


' Value of text input field "Producto"

Dim ProductoInput
ProductoInput = load.getValue("Producto")

Replace(Marca,"'","''")

Dim MarcaInput
MarcaInput = load.getValue("Marca")

Dim ModeloInput
ModeloInput = load.getValue("Modelo")

Dim PrecioInput
PrecioInput = load.getValue("Precio")

Dim Valor1Input
Valor1Input = load.getValue("Valor1")

Dim Valor2Input
Valor2Input = load.getValue("Valor2")

Dim Valor3Input
Valor3Input = load.getValue("Valor3")

Dim Valor4Input
Valor4Input = load.getValue("Valor4")

Dim Valor5Input
Valor5Input = load.getValue("Valor5")

Dim Valor6Input
Valor6Input = load.getValue("Valor6")

Dim CaracteristicasInput
CaracteristicasInput = load.getValue("Caracteristicas")

' Path where file will be uploaded
Dim pathToFile
pathToFile = Server.mapPath("..\..\IA") & "\" & fileName
' Uploading file data
Dim fileUploaded
fileUploaded = load.saveToFile ("file", pathToFile)

' destroying load object
Set load = Nothing
%>

<%
Dim BDD
Dim TABLA
Dim SQL

Set BDD = Server.CreateObject("ADODB.Connection")
Set TABLA = Server.CreateObject("ADODB.Recordset")

BDD.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA SOURCE=" + Server.MapPath ("../../Productos.mdb"))

SQL = "Insert into Productos (Producto,Marca,Modelo,Precio,Valor1,Valor2,Valor3 ,Valor4,Valor5,Valor6,Caracteristicas,IMG) values ('"&ProductoInput&"','"&MarcaInput&"','"&ModeloInp ut&"','"&PrecioInput&"','"&Valor1Input&"','"&Valor 2Input&"','"&Valor3Input&"','"&Valor4Input&"','"&V alor5Input&"','"&Valor6Input&"','"&Caracteristicas Input&"','"&fileName&"')"


BDD.Execute SQL


%>
__________________
Hasta la victoria Siempre.
  #5 (permalink)  
Antiguo 14/01/2004, 18:43
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
"Hola de nuevo.
Todavia tengo el mismo problema ya probe las dos respuestas y me marca el siguiente error:
Tipo de error:
Error de compilación de Microsoft VBScript (0x800A0414)
No se puede utilizar paréntesis al llamar a Sub
En esta linea me marca el error:
Replace(Marca,"'","''")"

Si, recuerda que replace es una función, como toda función, regresa un valor, en este caso el string después de reemplazar los caracteres, por lo cual tienes que pasarle el calor que te regrese a una variable para utilizarla en tu proceso:

variable = Replace(Marca,"'","''")


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway

Última edición por u_goldman; 15/01/2004 a las 03:57
  #6 (permalink)  
Antiguo 14/01/2004, 20:32
 
Fecha de Ingreso: noviembre-2003
Mensajes: 343
Antigüedad: 21 años, 6 meses
Puntos: 0
Lógica Web
__________________


La tecnología es un hecho objetivo, y el resultado está sujeto a la voluntad humana.
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 12:49.