PDA

Ver la Versión Completa : Problema con Query


cheche358
06-08-2011, 16:12:43
Por amor a dios alguien que me diga posibles errores de esta consulta que no encuentro que vuuelta mas darle!! No me da error de sintaxis pero no me arroja ningun resultado:

SELECT * FROM INVENTARIO WHERE INVENTARIO.TIPO=' + Edt1.Text'

Caral
06-08-2011, 17:22:12
Hola
Me parece que el signo de + esta separado de la cmilla y del edit, ademas hay una comilla detras del edit que no va, prueba asi:
'SELECT * FROM INVENTARIO WHERE INVENTARIO.TIPO = '+Edt1.Text
Saludos

leofuentes21
06-08-2011, 17:40:11
hola
Puedes provar de esta manera sino te funciona

'SELECT * FROM INVENTARIO WHERE INVENTARIO.TIPO = '+quotedstr(Edt1.Text);
saludos

cheche358
06-08-2011, 18:58:00
Muchas gracias a todos por sus respuestas, lo resolvi asi:

dbsmqry1.SQL.Clear;
dbsmqry1.SQL.Add('SELECT * FROM INVENTARIO WHERE TIPO=' + QuotedStr(edt1.Text));
dbsmqry1.Open;

ecfisa
06-08-2011, 22:07:50
Hola cheche358.

Otra alternativa:

dbsmqry1.SQL.Text:= 'SELECT * FROM VENTAS WHERE CONCEPTO = :VALOR';
dbsmqry1.ParamByName('VALOR').AsString:= Edit1.Text;
dbsmqry1.Open;


Saludos.

Chris
07-08-2011, 01:20:11
Muchas gracias a todos por sus respuestas, lo resolvi asi:

dbsmqry1.SQL.Clear;
dbsmqry1.SQL.Add('SELECT * FROM INVENTARIO WHERE TIPO=' + QuotedStr(edt1.Text));
dbsmqry1.Open;

Utiliza el código que te ha proporcionado ecfisa. En informática hay algo que se le conoce cómo Ataque de Inyección de SQL (http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL). Tu código es completamente vulnerable a él.

Saludos,
Chris

cheche358
07-08-2011, 04:26:52
Gracias por la recomendacion, ya me documente un poco al respecto.

Pero para matar la duda completamente...

La vulnerabilidad del codigo que escribi antes viene del QuotedStr ??

ecfisa
07-08-2011, 04:51:27
Gracias por la recomendacion, ya me documente un poco al respecto.

Pero para matar la duda completamente...

La vulnerabilidad del codigo que escribi antes viene del QuotedStr ??
No exáctamente. Viene dado por que de ese modo permite armar la sentencia SQL mediante el Edit.
En cambio no tiene ninguna consecuencia pasar una sentencia SQL como valor de un parámetro. (Salvo no encontrar lo que se está buscando ;) )

Saludos.