Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-05-2015
alexglez1255 alexglez1255 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 86
Poder: 11
alexglez1255 Va por buen camino
TdbGrig con busqueda avanzada

Tengo algo en mi cabeza que se que es posible hacerlo por que ya vi que lo hicieron pero no se como :
tengo una busqueda por medio de la descripcion de un articulo pero lo que deseo es que al ir escribiendo la descripcion en el TdbGrid me muestre el primer registro que encuentre de la tabla de Almacen que dentro de la descripcion tenga lo que estoy escribiendo, no con un filtro sino que solo se posicione en el primer registro que encuentre la cadena parcial en cualquier parte del registro. TDBGrid
me explico.. bueno este es el codigo :
Código Delphi [-]
procedure TAltasdealmacen.edtBusqArtChange(Sender: TObject);
var
 cadenaAbuscar:String;
begin
cadenaAbuscar:=edtBusqArt.Text;
if (cmbBusqArti.ItemIndex=0)and(CadenaAbuscar<>'') and (not TryStrToInt(cadenaAbuscar,codarticulo)) then
  begin
   ShowMessage('En el campo de Codigo solo puede escribir numeros, ponga cuidado por favor');
      edtBusqArt.SetFocus;
      exit;
  end;
end;


procedure TAltasdealmacen.cmbBusqArtiChange(Sender: TObject);
begin
case cmbBusqArti.ItemIndex of
0: begin edtBusqArt.MaxLength:=0; end;
1: begin
     edtBusqArt.MaxLength:=50;
     LogicaNegocio.CDSBusqAlma.IndexFieldNames:='DESCRIPCION';
     DBBusqAlma.Visible:=true;  Aqui muestro el DBGrid
     edtBusqArt.Text:='';
     edtBusqArt.SetFocus;
   end;
end;//case

end;

procedure TAltasdealmacen.BtbusqArtiClick(Sender: TObject);

begin
 with logicanegocio do
  case cmbBusqArti.ItemIndex of
  0: if not CDSBusqAlma.Locate('COD_ARTICULO',edtBusqArt.text,[loCaseInsensitive]) then ShowMessage('Codigo inexistente')
     Else
       begin
         CDSAlma.Close;
         CDSAlma.Params.ParamByName('COD_ARTICULO').AsString:=edtBusqArt.Text;
         CDSAlma.Open;
       end;
  1: if not CDSBusqAlma.Locate('DESCRIPCION',edtBusqArt.text,[loPartialKey]) then ShowMessage('Descripcion no hallada')
    Else CDSBusqAlma.Refresh;
  //  CDSBusqAlma.Locate('DESCRIPCION',edtBusqArt.text,[loPartialKey])
  end;
end;

procedure TAltasdealmacen.edtBusqArtKeyPress(Sender: TObject;
  var Key: Char);
begin
  if key=#13 then BtbusqArtiClick(Sender);
end;
Alguna idea por favor, o sera alguna poropiedad especial en el DBGrid...
El Cliendataset CDSBusqAlma no manejo ningun constraint..gracias por su gran ayuda

Última edición por ecfisa fecha: 12-05-2015 a las 04:59:39. Razón: Agregar etiquetas [delphi] [/delphi]
Responder Con Cita
  #2  
Antiguo 12-05-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola alexglez1255.

Ya edité tu mensaje agregándolas pero por favor, cuando incluyas código en tus mensajes, utiliza etiquetas como muestra la imágen para darle más legibilidad:



Saludos y gracias por tu colaboración
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 12-05-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola

Un ejemplo simplificado de como hacer lo que buscas:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Text := 'SELECT * FROM TU_TABLA';
  end;

  with DataSetProvider1 do
  begin
    DataSet := IBQuery1;
    Options := Options + [poAllowCommandText];
  end;

  with ClientDataSet1 do
  begin
    Close;
    ProviderName := 'DataSetProvider1';
    Open;
  end;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  with ClientDataSet1 do
  begin
    Close;
    CommandText:= 'SELECT * FROM TU_TABLA WHERE TU_CAMPO LIKE :PARAM';
    ClientDataSet1.Params.ParamByName('PARAM').AsString := '%' + Edit1.Text + '%';
    Open;
    Refresh;
  end;
end;
Donde, "TU_TABLA" es el nombre que le diste a la tabla en tu bd y "TU_CAMPO" es el campo sobre el que harás la búsqueda.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 12-05-2015
alexglez1255 alexglez1255 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 86
Poder: 11
alexglez1255 Va por buen camino
Gracias ecfisa, voy a probar tu sugerencia, y creeme que hasta hoy entendi eso de los tags, prometo que en lo sucesivo los pondre..muchas gracias por tu ayuda..
Responder Con Cita
  #5  
Antiguo 12-05-2015
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Cita:
Empezado por alexglez1255 Ver Mensaje
... deseo es que al ir escribiendo la descripcion en el TdbGrid me muestre el primer registro que encuentre de la tabla de Almacen que dentro de la descripcion tenga lo que estoy escribiendo, no con un filtro sino que solo se posicione en el primer registro que encuentre la cadena parcial en cualquier parte del registro.
Puedes usar los metodos findfirst y findnext para posicionarte en el registro que cumpla con la condicion de busqueda.
Desgraciadamente no tengo delphi a mano para probar hacer un ejemplo pero en la cara oculta te muestra como hacerlo..

Espero te sea util.

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #6  
Antiguo 12-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Caminante Ver Mensaje
Puedes usar los metodos findfirst y findnext para posicionarte en el registro que cumpla con la condicion de busqueda.
Desgraciadamente no tengo delphi a mano para probar hacer un ejemplo pero en la cara oculta te muestra como hacerlo.. Espero te sea util. Saludos
Eso, si mal no recuerdo, es para posicionar en ficheros en disco.
Responder Con Cita
  #7  
Antiguo 12-05-2015
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Eso, si mal no recuerdo, es para posicionar en ficheros en disco.
Yo una vez lo probe con una base de datos firebird y cliendatasets y funciono bien...

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #8  
Antiguo 12-05-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Caminante Ver Mensaje
Yo una vez lo probe con una base de datos firebird y cliendatasets y funciono bien...
Saludos
Ah, bien, pero te refieres a métodos de algún dataset. Sí, también.
Responder Con Cita
  #9  
Antiguo 12-05-2015
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Si a eso me referia...

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
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
Busqueda De Un Cliente Avanzada alexglez1255 Conexión con bases de datos 5 16-04-2015 01:50:16
busqueda avanzada en un stringgrid JoseSagas Varios 8 25-06-2012 20:02:18
Busqueda avanzada en un TClientDataset Cecilio Conexión con bases de datos 10 29-10-2010 20:22:59
Busqueda avanzada Pola PHP 3 24-07-2008 19:05:59
Busqueda avanzada JULIPO MySQL 2 22-10-2007 16:14:34


La franja horaria es GMT +2. Ahora son las 18:36:11.


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