PDA

Ver la Versión Completa : Seleccionar Campo a Consultar


eudy.net
13-03-2008, 06:55:37
Hola que tal,

Tengo una curiosidad, estoy haciendo un programa que se conecta a una base de datos (SQL SERVER 2000), Selecciona el campo mediante un combobox (combobox1.text) y el registro lo selecciona mediante un edit (edit2.text). Y la hora de consultar mediante un Tquery no sé como seleccionar el campo. Aqui les dejo mi código para que me entiendan mejor:

consulta := 'SELECT * FROM Tconductor WHERE' + AQUI VA EL CAMPO + '=' + QuotedStr(edit2.Text);

Ya que si lo hago por medio de QuotedStr :

consulta := 'SELECT * FROM Tconductor WHERE' + quotedstr (combobox1.text) + '=' + QuotedStr(edit2.Text);

me le agrega comillas simples (') al comienzo y al final de la expresión, esto resultaría del siguiente modo:

select * from Tconductor where 'campo' = 'registro a buscar'

y como todos saben debe de ir el campo sin esas comillas para que el Query sea posible. Eso es exactamente lo que quiero, que mediante un pequeño arreglito a mi codigo de arriba :o pueda seleccionar el campo, sin esas comillas, para que la busqueda sea posible. Perdon si fui un poco redundante, solo quería que entendieran mi problema :rolleyes:

Y si lo dejo sin el quotedstr me sale: que es un caracter desconocido cerca de '='.



GRACIAS ANTICIPADAS !!!!!!!:D

"Por más dura que sea la piedra, la insistencia de la gotera termina haciendo en ella un hueco, el cual nunca volverá a ser rellenado"

Neftali [Germán.Estévez]
13-03-2008, 09:55:41
Ya que si lo hago por medio de QuotedStr :

consulta := 'SELECT * FROM Tconductor WHERE' + quotedstr (combobox1.text) + '=' + QuotedStr(edit2.Text);

me le agrega comillas simples (') al comienzo y al final de la expresión, esto resultaría del siguiente modo:

select * from Tconductor where 'campo' = 'registro a buscar'



¿Porque agregas las comillas al campo? No lo hagas, no es necesarios. Esto te debería funcionar, si no he entendido mal...


consulta := 'SELECT * FROM Tconductor WHERE' + combobox1.text + '=' + QuotedStr(edit2.Text);



La propiedad Text del combobox ya es de tipo string, por lo tanto no debes hacerle nada.

eudy.net
14-03-2008, 05:20:57
Eso lo sé, pero cuando lo hago de ese modo me sale el error SQL siguiente:

Incorrect Syntax near "=",

lo cual significa que no me está leyendo el valor del combo box, sino que me lo está leyendo tal y como lo escribo COMBOBOX1.text

Creo que al igual que QuotedStr debe de existir una función para este tipo de casos, el problema es que no sé cual será :(

Si alguien sabe, o puede ayudarme a solucionar este pequeñito PROBLEMON por favor no dude en decirmelo :)

Gracias Anticipas,

"Una duda vale más que mil razones"

Neftali [Germán.Estévez]
14-03-2008, 12:01:46
Ejecuta paso a paso y coloca un MessageDlg que te muestre la consulta SQL antes de ejecutarla para comprobar que es correcta.


MessageDlg('SQL: ' + consulta, mtInformation, [mbOK], 0);

Caro
14-03-2008, 14:22:26
Hola, entre el Where y el campo que le mandas como parametro debería haber un espacio, has lo que te dice Neftali verifica si la consulta es correcta.


consulta := 'SELECT * FROM Tconductor WHERE ' + combobox1.text + '=' + QuotedStr(edit2.Text);


Saluditos

eudy.net
14-03-2008, 21:09:47
Jajaja Este era uno de esos problemas TONTOS,

efectivamente el PROBLEMON era una sencillez

'SELECT * FROM Tconductor WHERE' + combobox1.text + '=' + QuotedStr(edit2.Text);

como ven en el primera linea el WHERE no tenía el espacio y me los estaba consultando del siguiente modo:

select * from Tconductor WHERECAMPO = "registro".

Gracias Neftali y Caro :D, ya resolví mi inquietud