FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Busqueda segun radiobutton seleccionado
Hola a todos.
Tengo un formulario que tiene 3 TRadio_Buttom (codigo, nombre y direccion) y un TextBox donde coloco la palabra a abuscar y ademas un DB grid donde visualizo el contenido del text box. Lo que deseo es que conforme valla ingresando los caracteres me valla seleccionado a tal punto que encuentre el texto ingresado en el textbox. procedure TFrm_Busq_Clie.txt_buscarChange(Sender: TObject); var consulta : String; nombre: String; texto:String; x:integer; begin if rb_codigo.Checked=True Then begin nombre:=DM_General.TClientes.Fields[0].FieldName; texto:=txt_buscar.Text; 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; QUERY1.Active := False; consulta := 'SELECT * FROM T_Clientes WHERE '+ ' '+ nombre + ' LIKE '''; consulta := consulta + '%'; consulta := consulta + texto; consulta := consulta + '%'; consulta:=consulta + ''''; consulta:=consulta + ' ORDER BY '+' '+nombre+''; QUERY1.SQL.Clear; QUERY1.SQL.ADD(consulta); QUERY1.Active := TRUE; QUERY1.Open; end; He colocado esta rutina pero no me selecciona segun el caracter que ingreso y por ejemplo coloco la letra C y me displaya todos los registros de la Tabla en el DBGRID y despues coloco en el text CA me sigue saliendo todos los registros, y no me elimina los otros que no corresponden a la cadena ingresada (CA) Cual seria el error. Gracias y saludos. |
#2
|
|||
|
|||
Hola,
Tal como construyes la consulta cuando pulses 'C' te saldran todos aquellos que incluyan 'C'. Para poder seleccionar aquellos que empiezen por 'C' seria lo mismo pero omitiendo el primer '%': QUERY1.Active := False; consulta := 'SELECT * FROM T_Clientes WHERE '+ ' '+ nombre + ' LIKE '''; consulta := consulta + '%'; /// Este sobra. consulta := consulta + texto; consulta := consulta + '%'; consulta:=consulta + ''''; consulta:=consulta + ' ORDER BY '+' '+nombre+''; QUERY1.SQL.Clear; QUERY1.SQL.ADD(consulta); QUERY1.Active := TRUE; QUERY1.Open; end; Saludos. |
#3
|
|||
|
|||
he puesto lo que tu me has dicho pero no consigo lo que les comente en mi primer mensaje.
Gracias haber si me das una manito. |
#4
|
|||
|
|||
Hola,
Como dato interesante con las etiquetas del club tu código puede llegar a quedar espectacular, participar de importante premios e incluso hacerle la vida más fácil al que lo lee. Respondiendo. A mi entender falla acá: Porque quedaría algo como: Y eso te traería todos los registros que tengan en cualquier parte la palabra 'FILTRO'. En otras palabras: si querés que te busque todos los registros que empiezan por determinado caracter tendrías que eliminar el primer '%'. También podrías investigar como hace la propiedad FILTER de algunos DataSets. Saludos!
__________________
Suerte .: Gydba :. |
#5
|
|||
|
|||
Coloque lo
consulta:='SELECT * FROM T_CLIENTES WHERE'+ ' ' + nombre + 'LIKE '% texto %'''; |
#6
|
|||
|
|||
coloque lo que dijistes ...
consulta:='SELECT * FROM T_CLIENTES WHERE'+ ' ' + nombre + 'LIKE '% texto %'''; pero no me lo compila.. Gracias |
#7
|
||||
|
||||
Prueba con
Saludos
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin) |
#8
|
|||
|
|||
Bueno este era lo que yo deseaba: posteo una rutina para ver los registros segun un filtro o el caracter ingresado
procedure TFrm_Busq_Clie.txt_buscarChange(Sender: TObject); var consulta : String; nombre: String; texto:String; filtro:String; begin if rb_nombres.Checked=True Then begin texto:=txt_buscar.Text; QUERY1.Active := False; filtro:='%'+texto+'%'; consulta := 'SELECT * FROM T_CLIENTES WHERE nom_nor LIKE ' + QuotedStr(filtro); QUERY1.SQL.Clear; QUERY1.SQL.ADD(consulta); QUERY1.Open end; end; Pero ahora tengo el problema siguiente tengo un cliente que esta registrado en la Tabla cuyo nombre es Llobet pero cuando escribo ll (doble l) no me sale pero cuando digito en el text si obtengo el registro, en otras palabras no me reconoce las mayusculas en la base de datos con las minusculas de lo ingresado. Habra una funcion..... Gracias |
|
|
|