Delphi - busqueda parcial

 
Vista:

busqueda parcial

Publicado por gise (31 intervenciones) el 14/02/2007 13:09:56
Hola. Estoy haciendo un programa y necesito realizar una búsqueda en una tabla por un campo determinado 'codigo_documento' el cual es de tipo integer.

El problema que tengo es que necesito hacerlo filtrando la tabla, no con una query, y no se como realizar una busqueda parcial sobre un campo de tipo integer. Sí lo puedo realizar sobre campos de tipo String.

Es decir, por ejemplo buscar todos los registros cuyo codigo_documento comience con 1. Se entiende?

Muchas gracias desde ya!
Gise.
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:busqueda parcial

Publicado por amigo (20 intervenciones) el 14/02/2007 16:41:09
ponle un campo adicional tipo string a la tabla que se actualice con el valor del integer, y filtras por ese...

danos un poco mas de información.....tu campo tiene un maximo de longitud?, ¿lo rellenas de ceros a la derecha?

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:busqueda parcial

Publicado por gise (31 intervenciones) el 15/02/2007 14:01:09
Es un campo de tipo int length 11. No lo relleno con nada, se almacena el valor exactamente como se escribe.
No sabés alguna forma de filtrarlo directamente sin tener que hacer otro campo tipo string paralelo? La verdad si no queda otra opción lo hago así, pero prefiero agotar todas las opciones antes que optar por esa.
Gracias!
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:busqueda parcial

Publicado por amigo (20 intervenciones) el 15/02/2007 16:12:13
que base de datos utilizas?

en forma general pudieras probar algo como:

left(string(numero),1) = "1"....ejemplo para los q empiezan en 1

en sql podria ser algo como:

substring(convert(varchar,NUMERO),1,1) = '1'....ejemplo para los q empiezan en 1

substring(convert(varchar,NUMERO),3,1) = '9'...ejemplo para los q en la tercera posicion tengan un 9....

suerte
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:busqueda parcial

Publicado por gise (31 intervenciones) el 15/02/2007 20:12:36
Gracias por la respuesta. La bd que uso es mySql.
A ver si me explico mejor lo que deseo realizar.

Tengo una tabla Documento_Ingresado, la cual tiene varios campos y entre ellos un campo codigo_documento que es de tipo integer.

En uno de los Forms de mi aplicación tengo una Query para realizar todos los joins correspondientes a las demás tablas.

Debo realizar diversos tipos de búsqueda, según cuál elija el usuario. Entonces por cada busqueda hago un filtro distito sobre la query. Es decir que lo que necesito saber es cómo filtrar la query según el campo codigo_documento (que recuerdo es de tipo entero) de forma parcial, es decir que comience por ejemplo con el numero 1 y siga con cualquier cosa, con x cantidad de numeros.

Con un tipo string es muy facil, pero no lo puedo realizar con este campo que es de tipo integer.

Actualmente lo quiero realizar así:

QueryDocumentosEncontrados.Filter:=
'codigo_documento = ' + QuotedStr(EditCodigoDocumento.Text + '*');

pero me da el siguiente error de que '1*' no es un valor entero válido, lo cual está bien. El tema es cómo hago para convertir directamente en la query ese valor integer a string. Supongo que esa es una solución, pero no se como realizarlo tampoco.

Espero que ahora se haya entendido la pregunta.
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:busqueda parcial

Publicado por amigo (20 intervenciones) el 16/02/2007 15:38:38
ok....

en realidad nunca he trabajado con mysql....pero yo haria lo siguiente:

en el query donde haces los joins, utilizo un campo adocional:

select ...tus campos..., codigo_documento_text = convert(varchar,codigo_documento)

por lo tanto tu filtro quedaría:

QueryDocumentosEncontrados.Filter:=
'codigo_documento_text = ' + QuotedStr(EditCodigoDocumento.Text + '*');

si mysql no entiende la instruccion convert.....solo tienes que buscar cual es la funcion que convierte integer a string...

suerte...
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