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
public
end;
var
DM : TDM;
implementation
{$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
public
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.