Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2006
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
problemas con filtros

Hola amigos tengo problemas con filtrar en un Ttable, no se estoy haciendo mal, asi que recurro a ustedes , miren este es mi codigo utilizado, me arroja un error "APLICACION NO APLICABLE", utilizo tablas Paradox

Código Delphi [-]
procedure Tfrmcatalogo.EdtclienteChange(Sender: TObject);
begin
table1.Filter:=' nombre LIKE '+chr(39)+'%'+trim(edtcliente.text)+'%'+chr(39);
table1.Filtered:=true;
end;

Espero sus comentarios.
Gracias
Responder Con Cita
  #2  
Antiguo 10-05-2006
nenufer nenufer is offline
Miembro
 
Registrado: dic 2005
Posts: 90
Poder: 19
nenufer Va por buen camino
Prueba a ponerle 1º filtered a false porque si lo dejas a true no puede poner la condicion, tienes que desactivarlo 1º.

Código Delphi [-]
Tabla1.filtered := false
Tabla1.filter := //lo q tienes
Tabla1.filtered := true;

No lo he probao a ver si es ese el error. Espero que te sirva.
Responder Con Cita
  #3  
Antiguo 10-05-2006
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Hola, probe lo que dijiste pero sigue saliendo el mismo mensaje....que puede estar mal ???
Responder Con Cita
  #4  
Antiguo 10-05-2006
nenufer nenufer is offline
Miembro
 
Registrado: dic 2005
Posts: 90
Poder: 19
nenufer Va por buen camino
Unhappy uff

Siento no poder ayudarte, porque la verdad es que no tengo ni idea. Si pudiera probarlo, pero ahora no puedo.
Siento no haber sido de mas ayuda
Responder Con Cita
  #5  
Antiguo 10-05-2006
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
gracias por tu apoyo seguire probando que esta mal.........
Responder Con Cita
  #6  
Antiguo 11-05-2006
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Hola eh estado probando de otras maneras por ejemplo

Código Delphi [-]
 
 table.filter := 'nombre = ' +chr(39) + edtcliente.text + chr(39);

bueno aqui si obtengo resultados, pero me interesa obtener todo los parecidos, lo eh hecho con sentencias SQl, pero el tiempo de respuesta es lento, no me convence.....asi que quiero tratar de hacerlo asi, pero no me sale.No me funciona con un simple LIKE eh probado con '*' pero nada. me sale el mismo error, operacion no aplicable.

Como podria solucionar este inconveniente con el uso del evento : OnFilterRecord

Última edición por Coco_jac fecha: 11-05-2006 a las 18:25:02.
Responder Con Cita
  #7  
Antiguo 11-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Si el tiempo de respuesta en SQL no te convence es que faltan índices por crear sobre los campos de búsqueda.

Yo he usado muchos Querys con Paradox en red, y la respuesta es inmediata (sobre 12.000 registros). Trabajando de forma local con la base de datos, no da tiempo a parpadear .

Por cierto, usa QuotedStr(edCliente.text) en lugar del 39 es más legible .

EDITO: creo recordar que el like no puede usarse en filtros, debes usar:
Código SQL [-]
 nombre > 'C'  and nombre < 'D'
Pero no da los resultados que quieres

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 11-05-2006
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Hola Lepe, entonces Lepe como podria combinar una sentencia SQl con los indices, la verdad si te resulta bien por favor como podria lograr esto, yo solo lo obtengo con una simple consulta sql, pero utilizando Tquery para tal operacion. como podria combinar esto usando indices???

Lepe y como podria utilizar LIKE en un Ttable ???

Gracias espero tus comentarios

Última edición por Coco_jac fecha: 11-05-2006 a las 20:32:07.
Responder Con Cita
  #9  
Antiguo 12-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Tienes un campo llamado "nombre" en la base de datos, pues abre el Database Desktop, dale a reestructurar tabla, arriba a la derecha tienes un combobox donde puedes elegir "secondary indexes", allí dale a nuevo y añade el campo "nombre", dale un nombre al índice y sobre todo, marca la casilla "maintained". Acepta todo y ya tienes el índice creado.

Ahora solo tienes que usar un Tquery más o menos así:
Código Delphi [-]
query1.close;
query1.sql.text := 'SELECT NOMBRE FROM NOMBRETABLA WHERE NOMBRE LIKE : prNombre';
query1.parambyname('prNombre').AsString := '%'+edcliente.text+ '%';
query1.open;

La consulta hará uso del índice sobre el campo "nombre" para acelerar las búsquedas.

Sobre un TTable como ya he comentado, no puede usarse un like.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 12-05-2006
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Hola LEPE, la verdad que no sabia que podia usar indices con un Tquery me parece fabuloso de verdad, pero tengo una duda aunque no lo eh probado....el Tquery no tiene que hacer una referencia al indice o por defecto esto ocurre, desearia me podrias explicar esto , pero de todas maneras probare lo que dices.................ah en el caso de un Ttable si es necesario especificar el indice no??
me olvidaba no se mucho de indices, pero solo es necesario el Maintained ?? en que caso utiizaria los demas , como el case sensitive, eh visto que el otro indice que hace referencia al codigo pone este mas.

Espero tus comentarios y muchas gracias.

Última edición por Coco_jac fecha: 12-05-2006 a las 22:35:24.
Responder Con Cita
  #11  
Antiguo 13-05-2006
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Gracias Lepe, mira manejo una tabla de 17778 registros trabajando en RED y demora 6 a 7 segundos como maximo en cargar la data, creo q es una mejora al agregar el indice, gracias...............el indice le puse ademas sensitive

Me gustaria si me pudieras aclarar los demas casos que te mecione en el post anterior

Gracias.
Responder Con Cita
  #12  
Antiguo 13-05-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
La ayuda del Database Desktop en esa opción será más conciso que yo

Cita:
Maintained

Specifies whether to maintain the secondary index automatically.

Maintained indexes are updated by Database Desktop every time the table changes.
This speeds up certain operations like queries.
Maintained indexes are available for keyed tables only.
Non-maintained indexes are updated only when the index is used; for example, when you link tables or run a query.
The operation that uses the secondary index takes slightly longer using a non-maintained index, because Database Desktop must first update the index to recognize values that you have added, deleted, or changed, and then sort the table according to the new index. Also, if a non-maintained index becomes out of date, you cannot use it to change the viewing order of records.

Non-maintained indexes are most useful on tables that are read-only.

Search and locate operations

Database Desktop uses a secondary index to speed up some search and locate operations on Paradox tables if the index is:

Single-field
Case-sensitive
Maintained

Vamos que es cuestión de F1

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 19-01-2007
nok nok is offline
Registrado
 
Registrado: nov 2006
Posts: 1
Poder: 0
nok Va por buen camino
Smile usar '*'

Hola q tal este es mi primer mnsajillo aqi y bueno es para aclarar una cosa del mensaje #6 de Coco_jac que aunqe hace ia tiempo d ls mnsajes stos le vendra bien a cualqiera.

Para filtrar un campo y qe tome solo las primeras letras i el resto indiferentemente, Si qe se puede usar '*' pero debes introducirlo dentro de las comillas que igualas con el nombre del campo..

Ejemplo:
Código Delphi [-]
table.filter := 'nombre = ' +chr(39) + edtcliente.text + '*' + chr(39);

//o mejor cm han dicho después
table.filter := 'nombre = ' + QuotedStr(Edit1.Text+'*');


Creo qe se entiende bastante bien, ..no? =)

Venga un saludo a todos!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas con Filtros??????? blackz Varios 6 08-04-2006 19:15:57
Problemas Con Filtros Quantum Grid 5 DANY OOP 1 05-08-2005 00:18:25
Filtros dmagui Firebird e Interbase 1 31-05-2005 23:15:10
problemas con los filtros merlin Conexión con bases de datos 3 26-01-2005 12:54:09
Problemas con 2 DBLookupComboBox y filtros ale Conexión con bases de datos 1 01-10-2003 23:16:33


La franja horaria es GMT +2. Ahora son las 16:14:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi