Ver Mensaje Individual
  #8  
Antiguo 14-08-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
blaiselaborde,

Cita:
Empezado por blaiselaborde
...En Delphi XE6, tengo una simple conexión de una Query a un Grid por medio de un DataSource. Cuando abro la Query, no se muestra nada en el Grid...No sé si por tener la Query en un DataModule tenga algo que ver...


Revisa este código:
Código Delphi [-]
  unit Unit2;
  
  interface
  
  uses
    System.SysUtils, System.Classes, Data.DB, IBX.IBDatabase, IBX.IBCustomDataSet,
    IBX.IBQuery;
  
  type
    TDM = class(TDataModule)
      IBTransaction1: TIBTransaction;
      IBDatabase1: TIBDatabase;
      IBQuery1: TIBQuery;
      DataSource1: TDataSource;
      procedure DataModuleCreate(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
    end;
  
  var
    DM : TDM;
  
  implementation
  
  {%CLASSGROUP 'Vcl.Controls.TControl'}
  
  {$R *.dfm}
  
  procedure TDM.DataModuleCreate(Sender: TObject);
  begin
  
     IBDatabase1.Params.Clear;
     IBDatabase1.DatabaseName := 'D:\DB\FireBird\EMPLOYEE.FDB';
     IBDatabase1.LoginPrompt := False;
     IBDatabase1.Params.Add('User_Name=SYSDBA');
     IBDatabase1.Params.Add('Password=masterkey');
     IBDatabase1.DefaultTransaction := IBTransaction1;
     IBDatabase1.Connected := True;
  
     IBTransaction1.DefaultDatabase := IBDatabase1;
     IBQuery1.Database := IBDatabase1;
     IBQuery1.Transaction := IBTransaction1;
     DataSource1.DataSet := IBQuery1;
  
  end;
  
  end.
Código Delphi [-]
  unit Unit1;
  
  interface
  
  uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, IBX.IBDatabase, Vcl.StdCtrls,
    IBX.IBCustomDataSet, IBX.IBQuery, Vcl.Grids, Vcl.DBGrids;
  
  type
    TForm1 = class(TForm)
      DBGrid1: TDBGrid;
      Button1: TButton;
      Edit1: TEdit;
      Edit2: TEdit;
      Label1: TLabel;
      Label2: TLabel;
      procedure Button1Click(Sender: TObject);
      procedure FormCreate(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
    end;
  
  var
    Form1: TForm1;
  
  implementation
  
  uses
     Unit2;
  
  {$R *.dfm}
  
  procedure TForm1.Button1Click(Sender: TObject);
  begin
     with DM.IBQuery1 do
     begin
  
        Close;
  
        SQL.Clear;
  
        SQL.Text := 'Select * From EMPLOYEE';
  
        if (Edit1.Text <> EmptyStr) and (Edit2.Text = EmptyStr) then
        begin
           SQL.Add(' Where Lower(FIRST_NAME) = :P1');
           ParamByName('P1').Value := LowerCase(Edit1.Text);
        end;
  
        if (Edit1.Text = EmptyStr) and (Edit2.Text <> EmptyStr) then
        begin
           SQL.Add(' Where Lower(LAST_NAME) = :P2');
           ParamByName('P2').Value := LowerCase(Edit2.Text);
        end;
  
        if (Edit1.Text <> EmptyStr) and (Edit2.Text <> EmptyStr) then
        begin
           SQL.Add(' Where Lower(FIRST_NAME) = :P1');
           SQL.Add(' Or Lower(LAST_NAME) = :P2');
           ParamByName('P1').Value := LowerCase(Edit1.Text);
           ParamByName('P2').Value := LowerCase(Edit2.Text);
        end;
  
        Open;
  
     end;
  end;
  
  procedure TForm1.FormCreate(Sender: TObject);
  begin
     DBGrid1.DataSource := DM.DataSource1;
  end;
  
  end.
El código anterior en Delphi XE6 bajo Windows 7 Professional x32, permite realizar consultas en un componente TDBGrid a una base de datos en FireBird (Tabla EMPLOYEE), por medio de un DataModule con los InterBase Data Access Components (IBDAC), como se muestra en las siguientes imagenes:





Espero sea útil

Nelson.

Última edición por Casimiro Notevi fecha: 14-08-2014 a las 23:22:37.
Responder Con Cita