Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Traer info dinamicamente desde una DB Mysql (https://www.clubdelphi.com/foros/showthread.php?t=88492)

martinc77 12-06-2015 04:06:24

Traer info dinamicamente desde una DB Mysql
 
Hola a todos,

Soy nuevo en este foro y tengo poca experiencia con Delphi. Actualmente estoy usando la version XE2, tratando de programar una aplicacion que se conecte a una DB Mysql ya existente, pero me encuentro con el siguiente problema:

Lo que intento hacer y no se bien como, es tener 2 RadioButtons, cada uno con un query diferente a la DB, y que al presionarlos me actualice un DBGrid con la info solicitada. Probe jugando con el Active en false/true, con el close/open y demas, pero no me trae info salvo que se la cargue ya del vamos desde la propiedad SQL. Si quiero despues actualizarla desde el codigo para que traiga diferente informacion, no hace nada de nada. Y no se bien en que estoy equivocandome.

Cualquier pista sera mas que bienvenida, muchas gracias desde ya.
Martin

ecfisa 12-06-2015 05:01:54

Hola martinc77, bienvenido a Club Delphi :) Y como es costumbre con la bienvenida, también te invitamos a leer nuestra Guía de estilo

No especificas los componentes de conexión, pero te pongo un ejemplo con dbExpress, agrega:
  • 1 TSQLConnection,
  • 2 TSQLQuery,
  • 1 TDataSetProvider,
  • 1 TClientDataSet,
  • 1 TDataSource,
  • 1 TDBGrid,
  • 2 TRadioButton.
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    SQLConnection1: TSQLConnection;
    SQLQuery1: TSQLQuery;
    SQLQuery2: TSQLQuery;
    DataSetProvider1: TDataSetProvider;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;    
    procedure FormCreate(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
  private
  public
  end;

...

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  //...

  SQLQuery1.SQLConnection := SQLConnection1;
  SQLQuery2.SQLConnection := SQLConnection1;
  ClientDataSet1.ProviderName := 'DataSetProvider1';
  DataSource1.DataSet     := ClientDataSet1;
  DBGrid1.DataSource      := DataSource1;
end;

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  DataSetProvider1.DataSet := SQLQuery1;
  ClientDataSet1.Close;
  SQLQuery1.SQL.Text := 'SELECT * FROM TABLA_1'; // Consulta SQL 1
  ClientDataSet1.Open;
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
  DataSetProvider1.DataSet := SQLQuery2;
  ClientDataSet1.Close;
  SQLQuery2.SQL.Text := 'SELECT * FROM TABLA_2'; // Consulta SQL 2
  ClientDataSet1.Open;
end;
(*) En el ejemplo supongo el TSQLConnection ya configurado en design time y su conexión comprobada.
Las asignaciones a las propiedades que realizo en el evento OnCreate del form, las podes hacer en tiempo de diseño desde el Object Inspector.

Saludos :)

martinc77 13-06-2015 17:45:32

Hola Ecfisa, y muchisimas gracias por la ayuda. Me faltaban un par de componentes, evidentemente no entiendo bien como se maneja esto en Delphi, pero ya me quedo un poco mas claro todo.

Adaptando mi programa al codigo que me pasaste, funciono perfectamente y ya pude hacer lo que necesitaba.

Gracias de nuevo, saludos!
Martin


La franja horaria es GMT +2. Ahora son las 01:11:14.

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