PDA

Ver la versión completa : Problema coldfusion



D4RKS1D3
25-01-2007, 22:47
Muy buenas noches:

Me gustaria saber si sabeis por que falla,Os explico un poko la situacion para que os centreis.Para coldfusion las sentencias de variables en modo simple las hace el 'como le pasa por las narices'. pero si nos vamos al modo avanzado tenemos la posibilidad de escribir nosotros el codigo sql al que la base de datos se va a transmitir.

El problema viene cuando escribo el codigo y de ninguna de las maneras me funciona.

el codigo inicial que funciona a la perfeccion es el siguiente.


SELECT *
FROM Calles
WHERE Calles.Calle LIKE '%loquebuscamos%' (busca todo lo que contenga lo que buscamos)
ORDER BY Calles.Calle

la pagina espera una variable que se llama VarBusqueda que deberia de ir despues del LIKE del codigo anterior. Pero bien... no se como integrar la variable esa en el codigo.


Error Occurred While Processing Request
You have attempted to dereference a scalar variable of type class java.lang.String as a structure with members.


The error occurred in C:\CFusionMX7\wwwroot\SOLP\Busqueda.cfm: line 6

4 : SELECT *
5 : FROM Calles
6 : WHERE pepe = '#URL.VarBusqueda#';
7 : WHERE Calles.Calle LIKE pepe;
8 : ORDER BY Calles.Calle

A ver si alguien me puede decir donde esta el fallo.

Un saludo y muchas gracias :)

gondar_f
25-01-2007, 23:52
Sinceramente, del ColdFusion no tengo puta idea, pero por extrapolación de otros lenguajes:
¿esa sentencia SQL es un string?, ¿como es que vetes una variable a las bravas dentro del string?...

Yo creo qeu lo que tendras que hacer es comoponer la sentencia SQL en una variable y despues procesar el SQL.
Me explico:
Varible sql as string (pasado esto a coldfusion)
sql= SELECT* FROM Calles WHERE pepe= '"
sql = sql & combertir_a_strin(VarBusqueda)
sql=sql & "' AND Calles. Calle LIKE pepe ORDER BY Calles.Calle;"

Por otro lado, normalmente en una sentencia SQL solo puede haber un WHERE (son raros las BD que permiten ponerles más de uno), lo que ese WHERE puese tener varios limitantes, utilizando encadenantes como AND, OR, NOT...
Después, porque poner un ";" despues de cada WHERE, en todo caso es al final de las sentencia SQL para indicar su final (en la mitad de la BD no es obligatoria)...

Esperandote haberte podido ayudar, me despido.
Un Saludo

D4RKS1D3
26-01-2007, 08:54
Muchas gracias gondar_f

La solucion ya la tengo despues de varias horas de curro y del apoyo de un profesor que imparte la materia.os dejo el codigo por si a alguien le interesa.


SELECT *
FROM Calles
WHERE Calles.Calle LIKE '%#URL.VarBusqueda#%'
ORDER BY Calles.Calle

Espero que os sirva.

Un placer ;)

Saludos d4rks1d3

gondar_f
26-01-2007, 09:56
De nada tio, siento no haberte sabido dar la solución...

Un Saludo

D4RKS1D3
26-01-2007, 19:21
Tranki ^^, por lo menos te has molestando en intentarme ayudar y es algo de agradecer. ;).