unit uDBConBase;
{$IFNDEF SININTERFASES_FEDE}
{$H+}
{$interfaces corba}
{$ENDIF}
interface
{$IFNDEF SININTERFASES_FEDE}

uses
  Classes, SysUtils, ufields;

type

  IDataset = interface
    function GetnRows: integer;
    function GetnFields: integer;
    function FieldName(kField: integer): string;
    function FieldType(kField: integer): string;
    function kOfField(nombre: string): integer; // -1 si no existe

    procedure First;
    procedure Next;
    procedure Go(kRec: integer);

    function EOF: boolean;

    function GetField(i: integer): TField;

    // funciones para lectura por nombre.
    function GetI(krow: integer; nombre: string; defval: integer = 0): integer;
    function GetF(krow: integer; nombre: string; defval: double = 0.0): double;
    function GetS(krow: integer; nombre: string; defval: string = ''): string;
    function GetDT(krow: integer; nombre: string; defval: TDateTime = 0): TDateTime;

    procedure GetValByName(krow: integer; nombre: string; var valor: integer);
      overload;
    procedure GetValByName(krow: integer; nombre: string; var valor: double); overload;
    procedure GetValByName(krow: integer; nombre: string; var valor: string); overload;
    //    function GetValByName( krow: integer; nombre: string): string; overload;
    procedure GetValByName(krow: integer; nombre: string; var valor: TDateTime);
      overload;

    function FieldByName(nombre: string): TField;
    function GetFieldVal(i: integer): string;
    function GetFieldValByName(nombre: string): string;

    property nRows: integer read GetnRows;
    property nFields: integer read GetnFields;

    property fields[i: integer]: TField read GetField;

    procedure Free;

  end;

  { IDBConBase }

  IDBConBase = interface

    //procedure Conectar(archi_creden)

    function Query(sql: string): IDataset;
    function Exec(sql: string): integer;

    function func(const sqlstr: string; defval: string = ''): string;
    function funcI(const sqlstr: string; defval: integer = -1): integer;
    function funcF(const sqlstr: string; defval: double = -1): double;
    function funcS(const sqlstr: string; defval: string = ''): string;
    function funcD(const sqlstr: string; defval: TDateTime = 0.0): TDateTime;

  end;

{$ENDIF}
implementation

end.
