Buen dia a todos, me encuentro aprendiendo Delphi por mi cuenta, y me he topado con el problema de que no me reconoce el tipo de dato TIBSQL (me lo subraya con rojo ), la utilizo para una conexion con firebirt y baciar los datos a un TListView, o almenos eso creo. ya antes me habia marcado este tipo de error con TIBDatabase, pero lo solucione agregando a la linea
Código Delphi
[-] uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
DB, IBDatabase,Dialogs, System.ComponentModel, Borland.Vcl.ComCtrls;
no se si me falte agregar algo mas para que me acepte el TIBSQL
dejo el codigo por si sirve de algo
Código Delphi
[-]
unit PruebaB;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
DB, IBDatabase,Dialogs, System.ComponentModel, Borland.Vcl.ComCtrls;
type
TForm1 = class(TForm)
TListView: TListView;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.nfm}
function ConectarBaseDatos( sBaseDatos: String ): TIBDatabase;
var DB: TIBDatabase;
begin DB := TIBDatabase.Create( nil );
DB.Name := 'IB';
DB.DatabaseName := '127.0.0.1:' + sBaseDatos;
DB.Params.Add( 'user_name=SYSDBA' );
DB.Params.Add( 'password=masterkey' );
DB.SQLDialect := 3;
DB.LoginPrompt := False;
try
DB.Open;
except
raise Exception.Create( 'No puedo conectar con INTERBASE/FIREBIRD.' + #13 + #13 + 'Consulte con el administrador del programa.' );
end;
Result := DB;
end;
procedure ListarTabla( DB: TIBDatabase; sTabla: String; Listado: TListView );
var Campos: TStringList;
i: Integer;
Consulta: TIBSQL;
Transaccion: TIBTransaction;
begin
if DB = nil then Exit;
// Creamos un stringlist para meter los campos de la tabla
Campos := TStringList.Create;
DB.GetFieldNames( sTabla, Campos );
// Creamos una transacción para la consulta
Transaccion := TIBTransaction.Create( nil );
Transaccion.DefaultDatabase := DB;
// Creamos una consulta
Consulta := TIBSQL.Create( nil );
Consulta.Transaction := Transaccion;
Consulta.SQL.Add( 'SELECT * FROM ' + sTabla );
Transaccion.StartTransaction;
try
Consulta.ExecQuery;
except
Transaccion.Rollback;
raise;
end;
// Creamos en el listview una columna por cada campo
Listado.Columns.Clear;
Listado.Columns.Add;
Listado.Columns[0].Width := 0;
for i := 0 to Campos.Count - 1 do
begin
Listado.Columns.Add;
Listado.Columns[i+1].Caption := Campos[i];
Listado.Columns[i+1].Width := 100;
end;
// Listamos los registros
Listado.Clear;
while not Consulta.Eof do
begin
Listado.Items.Add;
for i := 0 to Campos.Count - 1 do
Listado.Items[Listado.Items.Count-1].SubItems.Add( Consulta.FieldByName(
Campos[i] ).AsString );
Consulta.Next;
end;
// Una vez hemos terminado liberamos los objetos creados
FreeAndNil( Campos );
FreeAndNil( Consulta );
FreeAndNil( Transaccion );
end;
procedure TForm1.FormCreate(Sender: TObject);
var DB: TIBDatabase;
begin
DB := ConectarBaseDatos( 'c:\ch datos\ch.fdb' ); // PARA FIREBIRD
if DB = nil then
Exit;
end;
end.
De antemano gracias por ayudar a un autodidacta
