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

Ayuda con sintaxis ASP

Estas en el tema de Ayuda con sintaxis ASP en el foro de ASP Clásico en Foros del Web. ¿Que fallo hay en esta consulta?: rs.Open "select * from [tabla1] where "&campo&" like '%"&Request.Form(cajatexto.value&"%)'" Me da este error: Error de compilación de Microsoft VBScript ...
  #1 (permalink)  
Antiguo 30/08/2004, 05:13
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Ayuda con sintaxis ASP

¿Que fallo hay en esta consulta?:

rs.Open "select * from [tabla1] where "&campo&" like '%"&Request.Form(cajatexto.value&"%)'"

Me da este error:

Error de compilación de Microsoft VBScript error '800a03ee'

Se esperaba ')'

rs.Open "select * from [tabla1] where "&campo&" like '%"&Request.Form(cajatexto.value&"%)'"
--------------------------------------------------------------------------------------------------------------^
  #2 (permalink)  
Antiguo 30/08/2004, 05:33
 
Fecha de Ingreso: enero-2004
Mensajes: 12
Antigüedad: 20 años, 5 meses
Puntos: 0
Creo que el problema es que tienes un paréntesis despistado: Creo que sería así:

rs.Open "select * from [tabla1] where "&campo&" like '%"&Request.Form(cajatexto.value) &"%'"
  #3 (permalink)  
Antiguo 30/08/2004, 05:34
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 6 meses
Puntos: 8
Si no me ekivoko deberia ser lo siguiente: rs.Open "select * from [tabla1] where "&campo&" like '%"&Request.Form(cajatexto.value) &"%'"

Es decir, poner el parentesis antes de la concatenación
__________________
Vayamos por Partes :: Jack el Destripador
  #4 (permalink)  
Antiguo 30/08/2004, 05:50
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
haber este otro

¿Y con esto?

If request.Form(casilla.value= "nombre") then
variable= "nombre"

Lo que quiero hacer es esto:

Si el boton de opción (casilla se llaman todos los botones de opcion) que esta activado es el que tiene de value "nombre", paso el valor "nombre" a la variable
  #5 (permalink)  
Antiguo 30/08/2004, 08:52
 
Fecha de Ingreso: enero-2004
Mensajes: 12
Antigüedad: 20 años, 5 meses
Puntos: 0
Supongo que lo que querras hacer es esto:

If request.Form(casilla.value) = "nombre" then
variable= "nombre"

Otro paréntesis despistado
Un saludo
  #6 (permalink)  
Antiguo 31/08/2004, 01:01
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
¿Manual Sintaxis ASP?

¿Algún buen Manual de Sintaxis ASP?,

Me interesa que sobre todo hable de la sintaxis, es decir, el por qué de las comillas simples, comillas dobles, &, %, etc.

Laika
  #7 (permalink)  
Antiguo 31/08/2004, 10:30
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Bueno, eso no es muy complicado de explicar:

Comillas dobles ("): Se usan para delimitar strings al asignarlos a una variable, pasarle como argumento a funciones, etc. Ejemplos:
- Asignar a una variable:
mi_variable = "hola"
- Pasar como argumento a una función:
Request.Form("mi_variable")
Replace("hola", "h", "b")

Comilla simple ('):
- Si está al inicio de una línea, "comenta" la línea entera:
' esta línea es un comentario
- Si está entre medio de una línea (pero sin estar entre comillas dobles), comenta desde la comilla simple hasta el final de la línea:
Response.Write("hola") 'esto es un comentario
- Si está dentro de comillas dobles, es parte del string.

Caracter &: Es un concatenador y sirve para "juntar" valores:
VariableConcatenada = Variable1 & Variable2
OtraVariableConcatenada = "Hola" & " y chau"

Caracter %: Una de 2...
1- Forma parte de los tags de apertura y cierre de scripts ASP: <% ... %>
2- Si está dentro de una sentencia SQL, es el caracter comodín al usar LIKE:
SQL = "SELECT * FROM tabla WHERE campo LIKE '%algo%'"
__________________
...___...

Última edición por AlZuwaga; 31/08/2004 a las 10:32
  #8 (permalink)  
Antiguo 31/08/2004, 11:20
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Solo le faltó a dazuaga comentar que la comilla simple tambien se usa para indicar que los valores de una consulta son afanuméricos.
Por ejemplo:

Sql = "Select * from tabla where Id = '" & Request("vID") & "' and Status = '" & request("vStatus") & "'"
  #9 (permalink)  
Antiguo 31/08/2004, 12:44
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Si, gracias
__________________
...___...
  #10 (permalink)  
Antiguo 01/09/2004, 04:21
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
¿Por qué por ejemplo en un insert en la parte de Values si el registro que queremos añadir al campo de una tabla esta una variable hay que ponerlo por ejemplo así?:

........................VALUES ('"&nombre&"')

Es decir, ¿por qué va la variable entre & y hay ' y "?

Laika
  #11 (permalink)  
Antiguo 01/09/2004, 07:48
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Por que quieres que el resultado tenga el valor encerrado entre apostrofes.


Sim por ejemplo, nombre tiene "Sabelia", entonces esto: "VALUES ('" & nombre & "')", da como resultado esto "VALUES ('Sabelia')", lo que es necesario para la correcta ejecución del INSERT.
Sin los apostrofes ("VALUES (Sabelia)") se tomaria Sabelia como una variable y no una cadena. Cuestion de saber que es lo que la sintaxis pide.

Saludos
  #12 (permalink)  
Antiguo 01/09/2004, 10:32
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Veamos si esto hace que te quede más claro el panorama. La "estructura" de una sentencia SQL (para insertar en el ejemplo, pero es lo mismo para todas), sin ninguna variable y sin formar parte de código ASP, es la siguiente:

Código:
INSERT INTO Tabla (CampoAlfaNumerico, CampoNumerico) VALUES ('un_texto', 5) WHERE CampoAlfaNum = 'hola' AND CampoNum = 1
Fijate que los datos alfanuméricos se colocan entre apóstrofes, ya sea para hacer el insert o como condición del where. Con los numéricos pasa lo contrario, van sin los apóstrofes.

Ahora, metemos esa misma instrucción a una variable ASP:

Código:
SQL = "INSERT INTO Tabla (CampoAlfaNumerico, CampoNumerico) VALUES ('un_texto', 5) WHERE CampoAlfaNum = 'hola' AND CampoNum = 1"
El único cambio que hubo es que ahora toda la instrucción SQL pasa a ser parte de un string (como en mi mensaje anterior, mi_variable = "hola")

Ahora vamos a concatenar strings (con el caracter concatenador &):

Código:
SQL = "INSERT INTO Tabla (CampoAlfaNumerico, CampoNumerico) VALUES ('" & "un_texto" & "', " & 5 & ") WHERE CampoAlfaNum = '" & "hola" & "' AND CampoNum = " & 1
La diferencia con lo anterior es que "corté" toda la sentencia SQL en fragmentos (desde una comilla doble hasta la de cierre) y los concatené (&) con el fragmento siguiente (nuevamente, desde una comilla doble hasta la de cierre) y así con cada fragmento. Pero fijate que los a los números no hace falta colocarlos "entrecomillados" puesto que un número no es un string.

Ahora, vamos a asignar los valores un_texto, 5, hola y 1 a variables y los colocamos en la instrucción SQL:

Código:
Variable1 = "un_texto" 'lleva comillas porque es un string (y esto es un comentario porque hay un apóstrofe antes de la palabra "lleva"!)
Variable2 = 5 'no lleva comillas porque es un número
Variable3 = "hola" 'idem a Variable1
Variable4 = 1 'idem a variable 2

SQL = "INSERT INTO Tabla (CampoAlfaNumerico, CampoNumerico) VALUES ('" & Variable1 & "', " & Variable2 & ") WHERE CampoAlfaNum = '" & Variable3 & "' AND CampoNum = " & Variable4
Las diferencias en ésta última con respecto a la anterior son:
- El string "un_texto" (comillas incluidas) se reemplazó por Variable1
- El numero 5 (no había comillas) se reemplazó por Variable2
- El string "hola" (comillas incluidas) se reemplazó por Variable3
- El numero 1 (no había comillas) se reemplazó por Variable4

Ahora, te pongo a todas juntas (menos la primera) para que copies, pegues y ejecutes en un ASP y veas que en todas llegamos a lo mismo:


Código:
<%
SQL = "INSERT INTO Tabla (CampoAlfaNumerico, CampoNumerico) VALUES ('un_texto', 5) WHERE 

CampoAlfaNum = 'hola' AND CampoNum = 1"

Response.Write SQL
Response.Write "<br>"

SQL2 = "INSERT INTO Tabla (CampoAlfaNumerico, CampoNumerico) VALUES ('" & "un_texto" & "', " 

& 5 & ") WHERE CampoAlfaNum = '" & "hola" & "' AND CampoNum = " & 1

Response.Write SQL2
Response.Write "<br>"

Variable1 = "un_texto"
Variable2 = 5
Variable3 = "hola"
Variable4 = 1

SQL3 = "INSERT INTO Tabla (CampoAlfaNumerico, CampoNumerico) VALUES ('" & Variable1 & "', " 

& Variable2 & ") WHERE CampoAlfaNum = '" & Variable3 & "' AND CampoNum = " & Variable4
Response.Write SQL3
%>

Bueno, ya me cansé de escribir
__________________
...___...
  #13 (permalink)  
Antiguo 07/09/2004, 02:41
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Muchas gracias Dazuaga,

Esta muy claro tu ejemplo.

Saludos,

Laika
  #14 (permalink)  
Antiguo 07/09/2004, 07:52
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Imaginate Dazuaga que te hubiera dicho "podrías explicarte mejor"

Escribes un libro, jejeje
  #15 (permalink)  
Antiguo 07/09/2004, 10:23
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
de nada y menos mal que te sirvió

;)
__________________
...___...
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 18:50.