![]() |
![]() |
![]() |
![]() |
![]() |
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 me reconoce variable en la consulta
Hola amgos de este foro.
Tengo una duda. En esta variable (nombre) asigno el nombre del campo de la tabla TClientes pero cuando la variable 'nombre' lo coloco como campo para realizar una consulta me sale un error nombre:=DM_General.TClientes.Fields[1].FieldName; consulta := 'SELECT * FROM T_CLIENTES WHERE UPPER(nombre) LIKE ' + QuotedStr(UpperCase(filtro)); Pero cuando en la codicion pongo cualquier campo(por ejemplo codi, nom_clie, etc) no tengo problemas y la consulta me va muy bien.. Como haria para que la consulta me reconociera a la variable nombre. Gracias y Saludos |
#2
|
||||
|
||||
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) |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
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) |
#5
|
|||
|
|||
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. |
#6
|
||||
|
||||
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) |
#7
|
||||
|
||||
Tienes que hacer este cambio:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
|