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 15-04-2015
alexglez1255 alexglez1255 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 86
Poder: 11
alexglez1255 Va por buen camino
Busqueda De Un Cliente Avanzada

tengo una busqueda de un cliente donde uso un dbgrid para mostrar los clientes donde los clientes me los ordena en orden alfabetico
pero solo me ubica si le pongo lo primero por ejemplo
CLIENTE : MARIO HINOJOSA PEREZ

cuando le tecleeo el dato a buscar me encuentra el registro si empiezo tecleando MARIO pero si en ves de eso le pongo HINOJOSA no me lo encuentra y tambien queria que resaltara en el dbgrid el registro encontrado... me explico ..? la verdad no se como hacerle para hacer la busqueda mas avanzada...uso la orden LOCATE para buscar el registro
Código Delphi [-]
procedure Taltadecontratos.edtBuscarCteChange(Sender: TObject);
var
 cadenaAbuscar:String;
 codcliente:Integer;
begin
cadenaAbuscar:=edtBuscarCte.Text;
if (cmbBusqCte.ItemIndex<>1)and(CadenaAbuscar<>'') and (not TryStrToInt(cadenaAbuscar,codcliente)) then
  begin
   ShowMessage('En el campo de Codigo solo puede escribir numeros, ponga cuidado por favor');
      edtBuscarCte.SetFocus;
      exit;
  end;
if (cmbBusqCte.ItemIndex=1) then
    LogicaNegocio.CDSclieCOD.Locate('CLIENTE',edtBuscarCte.Text,[loPartialKey]);
end;

procedure Taltadecontratos.DBGridMostrarClientesDblClick(Sender: TObject);
 var
  codclie:integer;
begin
  codclie:=logicanegocio.CDSclieCODCOD_CLIENTE.Value;
  edtBuscarCte.Text:=logicanegocio.CDSclieCODCLIENTE.Value;
  DBGridMostrarClientes.Visible:=False;
   With logicanegocio do
    begin
     If  Dadodealta=true then   ShowMessage('Debe de terminar o cancelar el contrato que esta haciendo ahorita');


//   if (cdsUnCliente.ChangeCount>0) then
//  cdsUnCliente.ApplyUpdates(0);
//  if (CDSCont.ChangeCount>0) then
//  CDSCont.ApplyUpdates(0);
  cdsunCliente.Close;
  cdsunCliente.Params.ParamByName('COD_CLIENTE').AsInteger:=codclie;
  CdsunCliente.Open;
  end;//with logicaneg
    end;

procedure Taltadecontratos.cmbBusqCteChange(Sender: TObject);
begin
case cmbBusqCte.ItemIndex of
0: begin edtBuscarCte.MaxLength:=0; end;
1: begin
   edtBuscarCte.MaxLength:=0;
   LogicaNegocio.CDSclieCOD.IndexFieldNames:='Cliente';
   DBGridMostrarClientes.Visible:=true;
  end;
end;//case

edtBuscarCte.Text:='';
edtBuscarCte.SetFocus;

end;

este es todo el codigo que uso garcias por su gran ayuda

Última edición por ecfisa fecha: 15-04-2015 a las 09:39:52. Razón: etiquetas [DELPHI]
Responder Con Cita
  #2  
Antiguo 15-04-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
Cita:
Empezado por alexglez1255 Ver Mensaje
...
pero solo me ubica si le pongo lo primero por ejemplo
CLIENTE : MARIO HINOJOSA PEREZ

cuando le tecleeo el dato a buscar me encuentra el registro si empiezo tecleando MARIO pero si en ves de eso le pongo HINOJOSA no me lo encuentra y tambien queria que resaltara en el dbgrid el registro encontrado... me explico ..?
Perfectamente, pero para obtener ese tipo de resultado vas a tener que usar un filtro en lugar de Locate:
Código Delphi [-]
procedure TtuForm.EditChange(Sender: TObject);
begin
  with ClientDataSet do
  begin
    Filtered := False;
    Filter   := Format( 'NOMBRE_DEL_CLIENTE LIKE %s ', [ QuotedStr('%' + Edit.Text + '%') ] );
    Filtered := True;
  end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 15-04-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En este caso deberás realizar la búsqueda y filtrar los registros utilizando SQL. Puedes utilizar el operador LIKE.
Además el Locate no es muy eficiente pues obliga a recorrer todos los registros de la tabla (si hay pocos no hay problema).

Revisa este ejemplo y mira el código. Es exactamente lo que te estoy comentando, a ver si es lo que necesitas.

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 15-04-2015
alexglez1255 alexglez1255 is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 86
Poder: 11
alexglez1255 Va por buen camino
muchas gracias neftali voy a probar tu sugerencia....ECFISA gracias por tu sugerencia esa ya lo hice pero no es posible cuando se escribe el apellido, solo funciona el filtro cuando lo que se escribe esta al principio

pero gracias por su ayuda
Responder Con Cita
  #5  
Antiguo 16-04-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.
Cita:
Empezado por alexglez1255 Ver Mensaje
muchas gracias neftali voy a probar tu sugerencia....ECFISA gracias por tu sugerencia esa ya lo hice pero no es posible cuando se escribe el apellido, solo funciona el filtro cuando lo que se escribe esta al principio
Sin dudas te refieres al ejemplo que te dí en este hilo. Pero este último, aunque parecido, no es igual.

Podes apreciar en esta imágen la diferencia del comportamiento con el anterior:


Te sugiero que lo pruebes tál como figura en el mensaje ya que realiza correctamente lo que solicitas

También te adjunto los fuentes del demo (incluye la tabla country) por si tuvieras alguna dificultad.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 16-04-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 de nuevo.

Olvide el adjunto...

Saludos
Archivos Adjuntos
Tipo de Archivo: zip alex.zip (4,8 KB, 4 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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 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
quiero hacer una busqueda de cliente leandro085 SQL 3 21-08-2008 15:09:44
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 01:10:48.


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