Ver Mensaje Individual
  #12 (permalink)  
Antiguo 01/09/2004, 10:32
Avatar de AlZuwaga
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
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
__________________
...___...