PDA

Ver la Versión Completa : ayuda por favor


efromm
08-03-2004, 03:57:02
Hola soy nuevo utilizando sql en delphi como hago para hacer una busqueda desde un editbox algo asi


select * from Comp.dbf where upc = edit1.text

esto me marca error como hago eso
lo que quiero es buscar un numero dentro de la columna UPC introduciendo el numero que quiero buscar desde un editbox



por favor ayudenme si???

jachguate
08-03-2004, 05:29:16
hola efromm.

Antes de responder a tu pregunta, quiero recomendarte que leas la guia de estilo de los foros (http://www.clubdelphi.com/foros/guiaestilo.php), y que para los próximos hilos que abras en estos foros, pongás un título adecuado a la pregunta que estas haciendo. En este caso, por ejemplo, "Cómo filtrar una consulta con el valor de un edit?" o algo similar. Se que cuando te inicias en los foros es algo dificil encontrar los títulos adecuados, y mas todavia plantear las preguntas que tenemos con toda la información necesaria, pero es un esfuerzo que vale la pena realizar, si queres encontrar ayuda y ser aceptado en esta comunidad.

Con respecto de tu pregunta, hay básicamente dos formas de resolverlo.

Una, es construir la sentencia SQL "al vuelo" y asignarla a un componente TQuery.

Algo como:


MyQuery.SQL.Clear;
MyQuery.SQL.Add('Select * from Comp.dbf where upc = ' + QuotedStr(Edit1.Text);
MyQuery.Open;


La otra, que es la que yo prefiero y recomiendo, es usando parámetros en la sentencia SQL.

Lo harias de esta forma:

La sentencia SQL a introducir será:

Select * from Comp.dbf where upc = :CodigoUPC;

luego, en el inspector de objetos buscas la propiedad Parameters del query, y asignas el tipo de dato ptString y el tipo de parámetro ftInput al parámetro CodigoUPC.

Luego en tiempo de ejecución haces:


MyQuery.ParamByName('CodigoUPC').AsString := Edit1.Text;
MyQuery.Open;


Y listo!.

Hasta luego.

;)

Gydba
08-03-2004, 13:02:17
Personalmente utilizo la propiedad Filter del TClientDataset y me ha dado buenos resultados. No sé si vos lo podrías implementar, creo que tiene mucho que ver con el diseño de la app.

marto
08-03-2004, 13:21:10
Repecto a lo de filtrar el TClientDataSet (o cualquier TDataSet), matizar que esto dependerá de si tienes ya los datos cargados o no. Si, por lo que sea ya tienes todo el dataset en memoria, es mejor hacer el filtro, ya que toda la operación se ejecutará en memoria y no hará falta acceder nuevamente a la BD. En cambio, si los datos no los tienes en memoria, es un despilfarro cargar todos los registros de la tabla para después filtrarlos cuando puedes ejecutar la query parametrizada y solo traerte los registros que ncesites.

Ah! todo esto es aplicable si usas un SGBD, lo cierto es que con tablas planas, hagas lo que hagas te traerás todos los registros a local :( y normalmente se aconseja trabajar con toda la tabla, es decir con el filtro.

Gydba
08-03-2004, 13:27:43
Es por eso que especifique que todo dependía del diseño de la app.