Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Filtro Numerico y String con Like y ADO me Urge!!! por favor :(

Hola que tal buenas tardes de nuevo, regreso con un problema que ya habia dejado en paz, pero que despues de todo no quiero dejar pasar desapercibido, lo que he intentado hacer de todos los modos posibles y que no me ha dado resultado es hacer una busqueda filltrando en un TAdoquery un numero y un string, lo que intento es que me muestre los datos en un DataGrid que sean similares entre si, y utilizo el like filtrando.

con los Strings no tengo ni un problema, puedo filtrar atraves de mas de un campo, pero cuando intento filtrar agregando un dato entero me sale un error, por no decirlo horror xD ya que le he intentado de todas las formas posibles, tengo apenas unos 3 meses aprendiendo el lenguaje y esta parte en verdad que si la requiero, el mensaje de error que arroja es el siguiente:

No se encontro el elemento en la coleccion que corresponde al nombre o el ordinal solicitado.

y la busqueda la hago de esta manera:

Código Delphi [-]
if edtBuscar.Text<> '' then
    begin
      with ADOTableTicket do
      begin
        Active:= False;
        Filtered:= False;
        Filter:= '(TicketID) LIKE ' + QuotedStr('*' + edtBuscar.Text + '*') + 'OR (Usuario) LIKE ' + QuotedStr('*' + edtBuscar.Text + '*');
        Filtered:= True;
        Active:= True;
      end
    end

se que el problema esta por que intento filtrar un dato numerico junto con otros strings, pero eso es lo que quiero y ya busque por todas partes y no se como puedo llegar a solucionar este problema, me falta ese pequenio de detalle les agradeceria que si ustedes saber como puedo resolverlo me dijeron, y de antemano muchas gracias.

como decia anteriormente, el problema es que trato de filtrar un campo numerico, atraves de un Adoquery, usando LIKE, pero lo que intento hacer es hacer una busqueda por varios campos, el primero es numerico, los demas son strings, espero alguien me pueda ayudar, y muchas gracias de antemano.

ya intente cambiar esta parte
Código Delphi [-]
QuotedStr('*' + edtBuscar.Text + '*')
por '%', ya intente quitar el QuotedStr y dejarlo asi se que esa parte se sintaxis esta mal, pero de todos modos quitandola no me lo resuelve, lo dejo asi
Código Delphi [-]
Filter:= '(TicketID) LIKE ' + edtBuscar.Text +  'OR (Usuario) LIKE ' + QuotedStr('*' + edtBuscar.Text + '*');
y tampoco resulta
Responder Con Cita
  #2  
Antiguo 07-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Disculpen la molestia, solo una aclaracion, no es ADOQuery por donde Filtro ya que no pongo ningun query, es por medio del Filtro de un ADOTABLE, disculpen mi error, pero y de todas formas mi error sigue, ya que no encuentro la forma de solucionar el problema.
Responder Con Cita
  #3  
Antiguo 07-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
El concepto no parece complicado.
Aparte de que no tienes separacion entre parentesis entre el primer like el or y el segundo like, me parece que podrias evitarte disgustos usando variables ya que el filtro con table me parece que no acepta parametros.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 07-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Holas que tal Caral, pues entiendo mas o menos lo que dices, pero que tipos de variables, ya que no entiendo bien la parte de como o en donde ponerlas, si fueras un poco mas concreta me alegrarias la noche de antemano gracias por tomarte la molestia de responder a mi pregunta, y si es que tienes un ejemplo seria de gran utilidad, gracias
Responder Con Cita
  #5  
Antiguo 07-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
Código Delphi [-]
Var 
Tiq: integer;
Usu: String;
begin
Tiq:= StrToInt(edtBuscar.Text);
Usu:= edtBuscar.Text;
if edtBuscar.Text <> '' then
    begin
      with ADOTableTicket do
      begin
        Active:= False;
        Filtered:= False;
        Filter:= 'TicketID LIKE ' +Tiq+ 'OR Usuario LIKE ''' +Usu+ '*''';
        Filtered:= True;
        Active:= True;
      end
    end
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 07-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Caral disculpa la molestia de nuevo, pero asi como esta el codigo, di copy-paste sin exagerar, y me dice tipos imcompatibles: 'string' and 'integer' marcandome la variable
+Tiq+

no pongo el codigo, ya que como te digo es el mismo, lo copie y pegue, para evitar errores de dedo xD, y te repito me marca ese error, el cual ya antes me habia salido, pero sin usar variables y solo poner edtbuscar.text, que vendria siendo algo parecido, no se si tengas alguna idea del problema o como solucionarlo. gracias
Responder Con Cita
  #7  
Antiguo 07-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
No esperes mucho de este novato.
Código Delphi [-]
Var 
Tiq: integer;
Usu: String;
begin
Tiq:= StrToInt(edtBuscar.Text);
Usu:= edtBuscar.Text;
if edtBuscar.Text <> '' then
    begin
      with ADOTableTicket do
      begin
        Active:= False;
        Filtered:= False;
        Filter:= 'TicketID LIKE ' +intTostr(Tiq)+ 'OR Usuario LIKE ''' +Usu+ '*''';
        Filtered:= True;
        Active:= True;
      end
    end
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 07-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Muchisimas Gracias por tu ayuda Caral, pero tengo malas noticias, me sale un error ya familiar al hacer esto:

Argumentos Incorrectos, fuera del intervalo permitido o en conflicto con otros.

este error era otro de los que salian anteriormente, y no entiendo por que, una cosa mas, al convertir
intTostr(Tiq),
no seria necesario poner
Tiq:= StrToInt(edtBuscar.Text);

ya que el primero lo pasa de Entero a String, y Despues lo convierto de String a Integer, por lo cual quitando la variable y dejandolo como edtbuscar.text seria suficiente, por que estaria regresando al origen del tipo variable, bueno es una pequenia observacion que no tiene mucho que ver, solo para ahorrar codigo, :S:S:S pero de todos modos el problema persiste gracias por la ayuda, y espero poder solucionarlo o si alguien del foro pudiera echarnos la mano xD por que no entiendo el problema.
Responder Con Cita
  #9  
Antiguo 08-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Al parecer a nadie le ha salido este error, o acaso nadie ha heco un tipo de consulta de este tipo??? solo pregunto por que el ultimo post fue del error que tengo y no he podido resolverlo, espero alguien pueda decirme o ayudarme en esto, por que como decia con un campo numerico junto con un string no me genera la busqueda espero aun alguna sugerencia, gracias
Responder Con Cita
  #10  
Antiguo 08-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
Porque no mejor usas la funcion Format


const
FILTRO = '(TicketID) LIKE "*%d*") OR (Usuario) LIKE ("*%s*")';
var
sCad:string;


if edtBuscar.Text<> '' then
begin
with ADOTableTicket do
begin
Close;
Filtered:= False;

sCad := Format(FILTRO, [Tiq, usu]);
Filter:= sCad;


Filtered:= True;

Open;
end
end
__________________
OEsqueda
Responder Con Cita
  #11  
Antiguo 08-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
Creo que lo mejor es que usaras parametros o rehacer la consulta SQL porque a final de cuentas estas cerrando y abriendo el Dataset
__________________
OEsqueda
Responder Con Cita
  #12  
Antiguo 08-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
Talking

Perdon puse dobel comilla en vez de una:

const
FILTRO = '(TicketID) LIKE ''*%d*'') OR (Usuario) LIKE (''*%s*'')';
var
sCad:string;

if edtBuscar.Text<> '' then
with ADOTableTicket do begin
Close;
Filtered:= False;

sCad := Format(FILTRO, [Tiq, usu]);
Filter:= sCad;

Filtered:= True;

Open;
end
__________________
OEsqueda
Responder Con Cita
  #13  
Antiguo 08-06-2011
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Recuerden usar las etiquetas para código:




.
Responder Con Cita
  #14  
Antiguo 08-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Hola que tal muchisimas gracias por ayudarme , pero el problema persiste, me sale el mismo error
Argumentos Incorrectos, fuera del intervalo permitido o en conflicto con otros.

y enserio no entiendo ni por que, ya he hecho muchos cambios y nada, le he intentad de todas formas y nada, por cierto, solo cambie una pequenia parte al codigo que me enviaste, quite el Open, y lo deje como Active:= True; lo mismo con Close;. pero de todas formas ni haciendo eso me lo resolvio. intente tal y como me lo enviaste y nada, se agradece mucho la ayuda enserio, solo que el problema persiste como decia

Asi queda el codigo y nada
Código Delphi [-]
procedure TfrmTicket.btnBuscarClick(Sender: TObject);
const
  FILTRO = '(TicketID) LIKE ''*%d*'') OR (Usuario) LIKE (''*%s*'')';
var
  sCad:string;
  Tiq : Integer;
  Usu : String;
begin
  if edtBuscar.Text<> '' then
    with ADOTableTicket do
    begin
      //Close;
      Active:= False;
      Filtered:= False;
      sCad := Format(FILTRO, [Tiq, usu]);
      Filter:= sCad;
      Filtered:= True;
      Active:= True;
      //Open;
    end
end;

Última edición por Casimiro Noteví fecha: 08-06-2011 a las 22:08:38. Razón: Cambiar [quote] por [delphi]
Responder Con Cita
  #15  
Antiguo 09-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
oesqueda, cierto estaba mal yo :S:S:S deje el open y el close, tal y como lo tienes tu y funciona perfectamente, muchisimas gracias!!! enserio, ya termine las partes que me estaba haciendo quebrar la cabeza xDDDD jajaja gracias y saludos )))))))))))))))))
Responder Con Cita
  #16  
Antiguo 09-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Negativo por algun detalle o algo volvio a salir error

Argumentos Incorrectos, fuera del intervalo permitido o en conflicto con otros.

y no entiendo por que, pense que todo iba bien pero al correo de nuevo el programa me volvio a generar el mismo problema, :S:S:S y no entiendo por que, enserio no se que show con esto de verdad , espero alguien me pueda ayudar con esto por favor!!!
Responder Con Cita
  #17  
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
Me parece que esta algo mas complicado de la cuenta, mucho codigo para un filtro, pero intenta asi:
Código Delphi [-]
procedure TfrmTicket.btnBuscarClick(Sender: TObject);
const
  FILTRO = '(TicketID) LIKE ''*%d*'') OR (Usuario) LIKE (''*%s*'')';
var
  sCad:string;
  Tiq : Integer;
  Usu : String;
begin
  if edtBuscar.Text <> '' then
    with ADOTableTicket do
    begin
      Filtered:= False;
      sCad := Format(FILTRO, [Tiq, usu]);
      Filter:= sCad;
      Filtered:= True;
    end
end;
Es un adotable, si no esta activo no reconoce el filtro, me da la impresion.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #18  
Antiguo 09-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Caral Gracias por retomar el tema, y enserio que mala onda, que aun no se pueda, intente como me dices en el mensaje, solo quite los Active:=False; y Active:=True;. y no tampoco con eso se pudo ya no se que hacer enserio!!!! de plano al parecer no se puede hacer un filtro en delphi, con ADO numeriro y string??? muchas gracias por tomarse las molestias pero aun asi de plano no puedo aun
Responder Con Cita
  #19  
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 base de datos usas?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #20  
Antiguo 09-06-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
Sql Server 2005
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
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 15:57:04.


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