Delphi - como traer datos con respecto a 2 primeras letras?

 
Vista:

como traer datos con respecto a 2 primeras letras?

Publicado por sor juana matiaz del berriz (47 intervenciones) el 01/06/2004 16:56:59
tengo unas lineas de codigo en una aplicacion echa en delphi pero estas lineas son en sql las cuales se traen varios datos en una consulta, estos datos son traidos con respecto a una palabra (area) escrita en un TextBox, esta palabra consta de 5 caracteres (ejemplo: area.text:='hca01').

¿como puedo traer a mi consulta todos los datos de la bse de datos que contengan las mismas 2 primeras letras del TextBox cuando estas esten seguidas por un asterisco. (ejemplo: area.text:='hc*')?

mi consulta ahorita funciona correctamente trayendo los datos cuando en el TextBox estan los 5 carateres (ejemplo: area.text:='hca01') .

mil gracias, un beso y un abrazo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como traer datos con respecto a 2 primeras letr

Publicado por skull leader (284 intervenciones) el 01/06/2004 18:06:14
no es tan dificil, por como lo comentas, llenas tu Edit (TextBox) y luego haces click en un botón, supongo....

en el evento OnChange de tu Edit, haces que tu consulta se dispare cuando sea diferente de una cadena nula, o si quieres, eso no es tanto problema.
el codigo es algo asi:

Query1.Close;
Query1.ParamByName('Campo').AsString := Edit1.Text + '%';
Query1.Open;

para esto, tu consulta es algo asi, en SQL claro...
select * from tabla where campo like :parametro

te comento que en el evento OnChange, pero puedes hacerlo en un click de un botón, es cosa de cada quien.

de esta manera que acabo de describir arriba, no importa que escribas un caracter o mas de uno, o los 5 si eso quieres, solo recortas las coincidencias y hace mas exacta tu búsqueda

espero haberme explicado y también que te sirva el consejo

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como traer datos con respecto a 2 primeras letr

Publicado por sor juana matiaz del berriz (47 intervenciones) el 01/06/2004 18:52:15
gracias por la ayuda¡¡¡¡

solo una cosa mas, si no es mucha la molestia, como hago la condicion para que me recorte los dos primeros campos cuando estos esten seguidos por un asterisco?
ej. si el textbox.text es igual a 'HC*' que me traiga los datos que quiero, si es 'HCA01' por ejemplo pues que me traiga ese campo en especifico con el cual no tengo problema.
mi problema aqui es como hacer la condicion, se me ocurre algo asi como

var:=Copy(textbox1.text',1,2);

if textbox1.text = var + '*' then

//muestra los datos segun los dos primeros caracteres

else

//muestra los datos segun la palabra completa


pero no se por que no me jala....
gracis.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como traer datos con respecto a 2 primeras letr

Publicado por skull leader (284 intervenciones) el 01/06/2004 20:10:26
bueno, veo que tienes la respuesta casi completa en lo que me comentas, la condición no es desde delphi, sino desde el comando de SQL, se incorpora como parametro en el SQL y luego le das Open y todas las coincidencias deben mostrarse.

supon que estas usando un Query llamado qProductos, entonces:
qProductos.Close;
qProductos.ParamByName('Clave').AsString := var + '%';
qProductos.Open;

ahora, var contiene 'HC', sin el *, si el comando de SQL es 'Select * from productos where clave like :parametro' entonces lo que incluyas en el paramentro es lo que se mostrará.
recuerda que el % es el comodin para SQL
traduciendo, el comando queda asi:
select * from productos where clave like 'hc%' y se seleccionará todos los registros que comiencen con hc, sin importar lo que el resto de la clave contenga
entonces, el que uses una condición como if textbox1.text = var + '*' then sale sobrando.
de esta manera, si escribes H mostrará los registros que comiencen con H, si escribes HC, las coincidencias serán menores, si escribes HCA serán aún menores, y asi sucecivamente, este metodo te servirá no solo para 2 letras, sino que para todos los casos.

mas bien lo que tienes que validar, es que el Edit no se quede en blanco, luego, ver que la cadena en Edit (TextBox) contenga el * en la posición que lo requieres, eso es al ultimo de la cadena (supongo), luego restarselo a la cadena y usar la cadena restante como parametro en tu Query y el resto lo manejas (creo) que de la manera anterior, o según tu conveniencia

espero haberme explicado y también espero te sirva
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar