![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
No sé si te he entendido muy bien... pero ahí va eso.
Mira a ver si te vale con esto: consulta := 'SELECT * FROM T_CLIENTES WHERE UPPER(' + nombre + ') LIKE ' + QuotedStr(UpperCase(filtro)); ![]()
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
|
#2
|
|||
|
|||
|
Ahora tengo otro problema. Lo que anteriormente me dijistes es cuando elcontenido es una cadena (me va muy bien), pero ahora el contenido de la variable del txt_buscar es un campo de tipo entero y tengo problemas al momento de ejecutar la consulta
var consulta : String; nombre: String; texto:String; numero:integer; filtro:String; begin if rb_codigo.Checked=True Then begin nombre:=DM_General.TClientes.Fields[0].FieldName; // recogo el nombre del campo numero:=strtoint(txt_buscar.Text); // convierto la cadena a numero QUERY1.Active := False; filtro:='%'+numero+'%'; consulta := 'SELECT * FROM T_CLIENTES WHERE UPPER(' + nombre + ') LIKE ' + QuotedStr(UpperCase(filtro)); QUERY1.SQL.Clear; QUERY1.SQL.ADD(consulta); QUERY1.Open; end else if rb_nombres.Checked=True Then nombre:= DM_General.TClientes.Fields[1].FieldName else if rb_comercial.Checked=True Then nombre:=DM_General.TClientes.Fields[2].FieldName else if rb_direccion.Checked=True Then nombre:=DM_General.TClientes.Fields[3].FieldName; texto:=txt_buscar.Text; QUERY1.Active := False; filtro:='%'+texto+'%'; consulta := 'SELECT * FROM T_CLIENTES WHERE UPPER(' + nombre + ') LIKE ' + QuotedStr(UpperCase(filtro)); QUERY1.SQL.Clear; QUERY1.SQL.ADD(consulta); QUERY1.Open; end; Cual seria el posible error ???? Gracias |
|
#3
|
||||
|
||||
|
Seguramente te falla en la línea
filtro:='%'+numero+'%'; porque filtro es de tipo string y numero de tipo integer... Simplemente haz filtro:='%'+IntToStr(numero)+'%'; Pero creo que esto te va a dar problemas... porque tu campo (en el que buscas) es numérico... y tú consulta fallará (primero porque no creo que puedas poner en UPPER un numérico???) y luego porque el filtro sería texto...) ¿Qué BBDD usas?
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
|
#4
|
|||
|
|||
|
begin
nombre:=DM_General.TClientes.Fields[0].FieldName; numero:=strtoint(txt_buscar.Text); QUERY1.Active := False; filtro:='%'+IntToStr(numero)+'%'; consulta := 'SELECT * FROM T_CLIENTES WHERE + nombre + LIKE ' + QuotedStr(filtro); QUERY1.SQL.Clear; QUERY1.SQL.ADD(consulta); QUERY1.Open; end he cambiado pero aun no obtengo la busqueda que deseo... La base de datos que uso es Paradox. |
|
#5
|
||||
|
||||
|
Bueno...
Yo de Paradox... ni idea... en Oracle (es lo que yo uso) me funcionan cualquiera de estas dos opciones: select * from clientes where to_char(id) like '%1%' select * from clientes where id like '%1%' En la primera convierto el campo id (es numérico) a texto y le paso el filtro tipo string; en la segunda Oracle convierte automáticamente el campo id... (cuidado, puede resultar muy lento) Sobre Paradox no lo tengo claro... pero si vale algo parecido a esto, tendrás que montar la consulta según sea el tipo de dato del campo. Salud2
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
|
#6
|
||||
|
||||
|
Tienes que hacer este cambio:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|