Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 09-06-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Que pena por que me hubiera gustado echarle un vistazo al programa para ayudar mejor.
Pregunto:
Por que si el filtro te esta dando tantos problemas por que no haces la consulta con un AdoQuery via sql, ademas sera mucho mas eficiente y rapida.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #22  
Antiguo 09-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Mira ahora mismo voy de salida ya del trabajo,e ste es un proyecto de la universidad que tengo que terminar en este mes :S:s y para todos los diferentes ventanas utilizo a fuerza buscar por el ID de usuario, ticket, departamento etc etc, entonces si no me queda de otra tendre que ver como hacerle pero con el ADOquery como dices, lo que pasa es que el Grid esta relacionado pero con el ADOTable entonces, si lo cambio a un ADOquery tendre, supongo no se mucho de Delphi, que si cambio a ADOquery, tendria que cambiar muchas cosas por que todo lo demas esta relacionado al ADOTable utilizo componentes DBEdits y cosas que estan relacionadas directamente al ADOtable, por eso es mi complicacion cambiarme por que tendria que cambiar algunas partes de codigo, ya ya voy a terminar, de todos modos muchas gracias enserio, y probare en casa a hacer una consulta, o sino esperare a ver si alguien tiene una idea, sino entonces empezare a hacer pruebas, gracias Caral
Responder Con Cita
  #23  
Antiguo 09-06-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Puedes usar un adoquery, presentar los datos en el dbgrid, enlazar el adotable etc., etc., etc, sin tener que hacer grandes cambios, es sencillo.
La consulta sql seria muy sencilla.
Saludos
PD: Si insistes en el filtro le entramos y lo resolvemos, todo tiene solucion.
__________________
Siempre Novato
Responder Con Cita
  #24  
Antiguo 09-06-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
Vamos a resolver esto paso a paso:
1- Tienes que filtrar o un dato (interger) o un dato (string) en el mismo adotable.
2- Tratamos de usar OR pero se niega.
Entonces lo podemos atacar por otro lado, definiendo el filtro dependiendo de si es uno u otro:
Primero creamos una variable global, esta la colocamos publica:
Código Delphi [-]
 public
    { Public declarations }
   tipo: integer;
Esta variable nos servira para que guarde simplemente un numero.
Ahora nos colocaremos en el evento onKeyPress del edit (edtBuscar) que es el que da el dato al filtro.
En ese evento colocamos esto:
Código Delphi [-]
if (Key in ['0'..'9',#8]) then
  begin
  Tipo:= 1;
  end
  else
  Tipo:= 0;
Esto lo que hace es simplemente indicar si escribimos numeros o letras, de ser numeros el valor de Tipo sera 1 de lo contrario 0.
Bien ahora si hacemos el filtro:
Código Delphi [-]
procedure TfrmTicket.btnBuscarClick(Sender: TObject);
var
   Filtro : String;
begin
  ADOTableTicket.Filtered := False; // desconectamos el filtro

  if edtBuscar.Text <> '' then // si no esta vacío
  begin

  If Tipo = 1 then begin // si tipo es igual a 1 filtra por el tiquet (integer)
  Filtro := 'TicketID Like '+edtBuscar.Text;
  end;

  If Tipo = 0 then begin // si tipo es igual a 0 filtra por el usuario (string)
  Filtro := 'Usuario Like '''+ edtBuscar.Text + '*''';
  end;

  ADOTableTicket.Filter := Filtro; // obtiene el filtro
  ADOTableTicket.Filtered := True // lo Filtro

  End;
end;
Bien, creo que es un codigo mas claro.
Primero definimos si queremos filtrar por numeros o letras.
Segundo con el valor generado en la variable hacemos o un filtro u otro.
Espero que si no te sirve por lo menos ayas aprendido algo mas, aunque sea sencillo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #25  
Antiguo 09-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Cara que tal, muchisimas gracias pro la ayuda enserio, y entiendo lo que dices muy bien, muy buena idea eso de usar expresiones regulares para detectar si es numerico o string, pero el detalle es que lo que queria era que con el OR me trajera los datos parecidos ya sean del campo, TicketID(Numerico) o Usuario(String), era como una busqueda dinamica, enserio te lo agradesco el esfuerzo, solo que de plano en este caso no aplicaria, pro que como te digo la idea es hacer la busqueda en ambos si yo busco 1, me traiga de TicketID los resultadosqu etengan en si el numero 1, y tambien todos los registros del campo Usuario, que contengan el 1, la opcion que me das te la agradesco y esta bien, solo que me trae ya sea de un campo o del otro, pero no de ambos hoy tratare de hacer como quedamos con el ADOquery, muchas gracias se agradece la ayuda enserio
Responder Con Cita
  #26  
Antiguo 09-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 19
oesqueda Va por buen camino
Perdon por no poner el codigo marcado como codigo, son mis primeros mensajes .

En serio mejor haz consulta con parametros.

En el componente ADO en el commandtext (SQL):
Código SQL [-]
select *
from TABLA
where TicketID LIKE :Tiq or Usuario LIKE :usu
order by LOQUESEA

Y en el codigo (usa ADODATASET en vez de ADOTABLE):
Código Delphi [-]
      with ADOTableTicket do  begin
        Close;
        Parameters.ParamByName('Tiq').Value := TIQ;
        Parameters.ParamByName('USU').Value := Format('*%s*', [usu]);
        Open;
      end; {with}

Quitas el autofilter, ese usalo poco es mejor hacer consultas SQL.
Usando el TADODataset, pones la sentencia SQL dento de commandtext y solo debes cerrar cambiar parametros y volver a abrir, te recomiendo pongas indices en las columnas que usas para las consultas (where) y el ordenamiento (order by).

Asi tu codigo de se redujo y encapsulas codigo donde debe ir.

Saludos
__________________
OEsqueda
Responder Con Cita
  #27  
Antiguo 09-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 19
oesqueda Va por buen camino
No quiero equivocarme pero el like no deberia usarse en un campo numerico asi
Corrijanme por favor
__________________
OEsqueda
Responder Con Cita
  #28  
Antiguo 09-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Gracias Oesqueda, por la ayuda, y no lo he probado pero en el trabajo ya estoy fuera de tiempo para entregar el proyecto, me dijeron que asi lo dejara (con busquedas por string unicamente) pero personalmente no me siento bien, ya que en un futuro se que volvera a presentarse esto, de todos modos me dijeron que si fuera a hacer algo seria con ADOTable por Filtro, les agradesco a todos la ayuda, pero por el momento asi me quedare ya, y en mi tiempo libre buscare la solucion pro el momento no quiero detenerme aqui por que aun me faltan otros detalles mas, y no me quiero complicar de mas, saludos a todos y muchas gracias por la ayuda.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Como calcular el resto de dividir un string numerico veronica Varios 3 26-09-2005 13:35:18
Ayuda por favor... Urge..!! manuel Suarez MS SQL Server 2 22-07-2005 23:15:27
Relacion campo numérico vs campo string JorgeBec Varios 1 11-04-2005 18:26:51
Me Urge Un Programador ADRIAN_2004 API de Windows 1 27-10-2004 19:38:51
urge. apagar windows XP mrmanuel API de Windows 3 06-09-2003 05:09:24


La franja horaria es GMT +2. Ahora son las 23:54:39.


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