Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Visualizacion en DBGrid por medio de un campo seleccionado
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Visualizacion en DBGrid por medio de un campo seleccionado

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
Sizne
Magnífico usuario


Registrado: Oct 16, 2006
Mensajes: 46

Asunto: Visualizacion en DBGrid por medio de un campo seleccionado Responder citando

Hola!
Alguna sugerencia?
Tengo una Ttabla (Tuniversitario) con los campos IdU, CiU, NombreUniversitario, ApeUniversitario,Sexo.....CarreraUniversitario, PaisDondeEstudia, SemestralizadoAnualizado, etc....
Lo que tengo que realizar es una busqueda a través de una seleccion por decir un ComboBox o DBComboBox, si elijo por decir del ComboBox el campo PaisDondeEstudia, con la informacion de Argentina, Ecuador, Chile, Peru, etc... de ahi elijo por decir Ecuador. En cuanto realice esa seleccion pues quiero que en un DBGrid me aparezca la informacion completa de la Ttabla TUniversitario de todos aquellos que estudian en ese Pais, en este caso Ecuador.

Lo que quiero es solo me aparezca datos en comun, mediante el usuario lo seleccione un campo.
Puede aparecer seleccionado la informacion por medio de los campos de Carrera,Pais, Carrera o Sexo (me refiero si es del sexo masculino o femenino).
Cabe mencionar que Tuniversitario ya tiene toda la informacion, esta con informacion.

Alguna idea?
MensajePublicado:
Vie Mar 26, 2010 9:08 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Visualizacion en DBGrid por medio de un campo selecciona Responder citando



Anuncios



Sizne escribió:
Hola!
Alguna sugerencia?
Tengo una Ttabla (Tuniversitario) con los campos IdU, CiU, NombreUniversitario, ApeUniversitario,Sexo.....CarreraUniversitario, PaisDondeEstudia, SemestralizadoAnualizado, etc....
Lo que tengo que realizar es una busqueda a través de una seleccion por decir un ComboBox o DBComboBox, si elijo por decir del ComboBox el campo PaisDondeEstudia, con la informacion de Argentina, Ecuador, Chile, Peru, etc... de ahi elijo por decir Ecuador. En cuanto realice esa seleccion pues quiero que en un DBGrid me aparezca la informacion completa de la Ttabla TUniversitario de todos aquellos que estudian en ese Pais, en este caso Ecuador.

Lo que quiero es solo me aparezca datos en comun, mediante el usuario lo seleccione un campo.
Puede aparecer seleccionado la informacion por medio de los campos de Carrera,Pais, Carrera o Sexo (me refiero si es del sexo masculino o femenino).
Cabe mencionar que Tuniversitario ya tiene toda la informacion, esta con informacion.

Alguna idea?


Puedes utilizar la propiedad "Filter" del TTable o del TQuery.
Sería algo así, recuerda como siempre que te ponemos un ejemplo cualquiera, el nombre de los campos y tablas no coincide:

Código:

procedure TFormAlbaranesProductos.BFiltrarPeriodoClick(Sender: TObject);
var
  Filtro, campo, operador, FechaDesde, fechahasta: string;
begin
  fechadesde := quotedstr(txtfiltrofecha.text);
  fechahasta := quotedstr(txtfiltrofechahasta.text);
  campo := 'Fecha';
  if (tfacturas.filter <> '')  and (acumularfiltro.checked) then
  begin
    Filtro := tfacturas.filter;
    operador := '>=';
    tfacturas.filter := Format ('[%s] %s %s', [Campo, operador, Fechadesde]);
    operador := '<=';
    tfacturas.filter := Format ('%s AND [%s] %s %s', [tfacturas.filter, Campo, operador, fechahasta]);
    tfacturas.filter := Format ('%s AND %s', [tfacturas.filter,Filtro]);
  end
  else
  begin
    operador := '>=';
    tfacturas.filter := Format ('[%s] %s %s', [Campo, operador, Fechadesde]);
    operador := '<=';
    tfacturas.filter := Format ('%s AND [%s] %s %s', [tfacturas.filter, Campo, operador, fechahasta]);
  end;
  tfacturas.filtered := true;
  tfacturas.Refresh;
  filtros.caption := tfacturas.Filter;
end;


El ejemplo anterior es un poco "complejo" porque permite acumular filtros, es decir, si tienes un filtro hecho, permite respetar ese filtro y añadir otro. Además, te lo hemos puesto para filtrar un período de fechas.

Pero, básicamente, la propiedad "Filter" sólo requiere del nombre del campo y el valor a filtrar. En tu caso sería algo así:

Código:

TUniversitario.Filter := Format ('[%s] %s %s', ['PaisDondeEstudia', '=', txtNombreComboBox.text]);
TUniversitario.filtered := true;
TUniversitario.Refresh;


El ejemplo anterior está sacado de la aplicación [b]AjpdSoft Control de Campo[/code], que contiene en casi todas las ventanas una sección de filtros. Puedes echarle un vistazo pues tenemos disponible en la web el código fuente gratuito:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=51
MensajePublicado:
Lun Mar 29, 2010 8:16 am
Top of PageVer perfil de usuario
Sizne
Magnífico usuario


Registrado: Oct 16, 2006
Mensajes: 46

Asunto: Responder citando

Hola!
Coloqué el código que me mencionó pero me aparece error:
Coloqué un ComboBox, que es donde selecciono por decir si es para el campo Pais, elijo Chile, y al hacer click en un Boton (que es donde puse el codigo q me dejaste) quise que me aparezca en un DBGrid toda la informacion.

Puse en el Form un Query1 y su DataSource1 que esta enlazado con el DBGrid1 donde quiero que me muestre toda la informacion comun.
Código:

Query1.Filter := Format ('[%s] %s %s', ['CarreraE', '=',ComboBox.text]);
Query1.filtered := true;
Query1.Refresh;

Y me aparece el sigte error:
Cita:

Proyect Pbecarios.exe raised exception class EDatabaseError with message 'Query1:Field'economia' not found'.Process stopped. Use Setp or Run to continue.

Eso fue cuando seleccioné del ComboBox el campo carrera Economia.
Cabe mencionar que el el Query1 en la parte de Propiedades en la opcion SQL\String coloque el código en su String List Editor:
Código:

Select *
From BDinscripcion

Por que de esta tabla es de donde quiero saber una informacion espeficica cuando selecciono un campo.

Gracias
MensajePublicado:
Lun Mar 29, 2010 8:36 pm
Top of PageVer perfil de usuario
Sizne
Magnífico usuario


Registrado: Oct 16, 2006
Mensajes: 46

Asunto: Responder citando

Hola
Ya resolvi el problema, solo que es largo. La Busqueda que realizo en este caso es por carreras.
Donde RG es el TRadioGroup y C es el ComboBox. Y lo de colocar visible es solo para ver o no las columnas es opcional. DB es el DBGrid.
Código:

   if RG.Items.Strings[RG.ItemIndex]= 'Carrera' then
    begin
      DB.DataSource.DataSet:=DataSource1.DataSet;
      Query1.Close;
      if Length(C.Text) > 0 then
        begin
          Query1.SQL[2] := 'WHERE CarreraE LIKE ''%' + C.Text + '%''';
          DB.Columns[7].Visible:=False;
          DB.Columns[11].Visible:=True;
          DB.Columns[10].Visible:=True;
          DB.Columns[9].Visible:=True;
        end
      else
        Query1.SQL[2] := 'WHERE CarreraE LIKE ''%%''';
      Query1.Open;
    end;



Gracias por las ideas.
MensajePublicado:
Jue Abr 01, 2010 1:55 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Responder citando

Sizne escribió:
Hola
Ya resolvi el problema, solo que es largo. La Busqueda que realizo en este caso es por carreras.
Donde RG es el TRadioGroup y C es el ComboBox. Y lo de colocar visible es solo para ver o no las columnas es opcional. DB es el DBGrid.
Código:

   if RG.Items.Strings[RG.ItemIndex]= 'Carrera' then
    begin
      DB.DataSource.DataSet:=DataSource1.DataSet;
      Query1.Close;
      if Length(C.Text) > 0 then
        begin
          Query1.SQL[2] := 'WHERE CarreraE LIKE ''%' + C.Text + '%''';
          DB.Columns[7].Visible:=False;
          DB.Columns[11].Visible:=True;
          DB.Columns[10].Visible:=True;
          DB.Columns[9].Visible:=True;
        end
      else
        Query1.SQL[2] := 'WHERE CarreraE LIKE ''%%''';
      Query1.Open;
    end;



Gracias por las ideas.


¡¡Estupendo!! es una muy buena solución.
MensajePublicado:
Vie Abr 02, 2010 10:39 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A