Ver Mensaje Individual
  #2  
Antiguo 22-05-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.343
Reputación: 18
José Luis Garcí Va por buen camino
Se que dije que pondría primero el módulo de configuración, pero primero tengo que poner el módulo de datos (Data Module) en mi caso el nombre de la Unidad es UDM

Aquí una imagen



Aquí el código

Código Delphi [-]
unit UDM;

interface

uses
  SysUtils, Classes, IBDatabase, DB,Forms, IBCustomDataSet, Dialogs;

//  uses
//  SysUtils, Classes, DB, IBCustomDataSet, IBDatabase,Forms, IBQuery;

type
  TDM = class(TDataModule)
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBDCLIEN: TIBDataSet;
    IBDCLIENID: TIntegerField;
    IBDCLIENNOMMODULO: TIBStringField;
    IBDCLIENCODIGO: TIBStringField;
    IBDCLIENNOMBRE: TIBStringField;
    IBDCLIENFORMAPAGO: TIBStringField;
    IBDCLIENFECHAALTA: TDateField;
    IBDCLIENDTO: TIBBCDField;
    IBDCLIENNOTAS: TWideMemoField;
    IBDCLIENIMG: TBlobField;
    IBDCLIENIMPUESTOS: TIBStringField;
    IBDCLIENTIPOIMP: TIntegerField;
    IBDCLIENCIF: TIBStringField;
    IBDCLIENRET: TIBStringField;
    IBDCLIENPORRET: TIBBCDField;
    IBDCLIENTARIFA: TIBStringField;
    IBDCLIENUSARRAPEL: TIBStringField;
    IBDCLIENDIASPRESENT: TIBStringField;
    IBDCLIENDIASDECOBRO: TIBStringField;
    IBDCLIENAVISOS: TWideMemoField;
    IBDCLIENLIMITECREDITO: TIBBCDField;
    IBDCLIENPENDIENTEPAGO: TIBBCDField;
    IBDCLIENSECTOR: TIBStringField;
    IBDCLIENCODAGENTE: TIBStringField;
    IBDUSUA: TIBDataSet;
    IBDUSUAID: TIntegerField;
    IBDUSUACLAVE: TIBStringField;
    IBDUSUAUSUARIO: TIBStringField;
    IBDUSUANIVEL: TIntegerField;
    IBDUSUANOMBRE: TIBStringField;
    IBDirecciones: TIBDataSet;
    IBDireccionesID: TIntegerField;
    IBDireccionesMODULO: TIBStringField;
    IBDireccionesCODIGO: TIBStringField;
    IBDireccionesDIRECCION: TIBStringField;
    IBDireccionesCP: TIBStringField;
    IBDireccionesPOBLACION: TIBStringField;
    IBDireccionesPROVINCIA: TIBStringField;
    IBDireccionesTF: TIBStringField;
    IBDireccionesNOTA: TWideMemoField;
    IBDireccionesPAIS: TIBStringField;
    IBDConfi: TIBDataSet;
    IBDPC: TIBDataSet;
    IBDPCID: TIntegerField;
    IBDPCMODULO: TIBStringField;
    IBDPCCODIGO: TIBStringField;
    IBDPCNOMBRE: TIBStringField;
    IBDPCMOVIL: TIBStringField;
    IBDPCEMAIL: TIBStringField;
    IBDPCCASADO: TIBStringField;
    IBDPCHIJOS: TIBStringField;
    IBDPCFECHANACIM: TDateField;
    IBDPCPUESTO: TIBStringField;
    IBDPCEXT: TIBStringField;
    IBDPCNOTAS: TWideMemoField;
    IBDPCFOTO: TBlobField;
    IBDContacto: TIBDataSet;
    IBDContactoID: TIntegerField;
    IBDContactoMODULO: TIBStringField;
    IBDContactoCODIGO: TIBStringField;
    IBDContactoNOMBRE: TIBStringField;
    IBDContactoTF: TIBStringField;
    IBDContactoTF2: TIBStringField;
    IBDContactoFAX: TIBStringField;
    IBDContactoMAIL: TIBStringField;
    IBDContactoMAIL2: TIBStringField;
    IBDContactoWEB: TIBStringField;
    IBDContactoCLAVEWEB: TIBStringField;
    IBDContactoMOVIL: TIBStringField;
    IBDContactoMOVIL2: TIBStringField;
    IBDContactoNOTAS: TWideMemoField;
    IBDBcos: TIBDataSet;
    IBDBcosID: TIntegerField;
    IBDBcosMODULO: TIBStringField;
    IBDBcosCODIGO: TIBStringField;
    IBDBcosBANCO: TIBStringField;
    IBDBcosENTIDAD: TIntegerField;
    IBDBcosOFICINA: TIntegerField;
    IBDBcosDC: TIntegerField;
    IBDBcosCUENTA: TIntegerField;
    IBDBcosTF: TIBStringField;
    IBDConfiID: TIntegerField;
    IBDConfiXEMPRESA: TIBStringField;
    IBDConfiXCALLE: TIBStringField;
    IBDConfiXCP: TIBStringField;
    IBDConfiXPOBLACION: TIBStringField;
    IBDConfiXPROVINCIA: TIBStringField;
    IBDConfiXTF: TIBStringField;
    IBDConfiXTF2: TIBStringField;
    IBDConfiXLOGO: TBlobField;
    IBDConfiXWEB: TIBStringField;
    IBDConfiXEMAIL: TIBStringField;
    IBDConfiXMOVIL: TIBStringField;
    IBDConfiXFAX: TIBStringField;
    IBDConfiXCIF: TIBStringField;
    IBDConfiXREGMERCANTIL: TIBStringField;
    IBDConfiXNOTA: TWideMemoField;
    IBDConfiXCOLORA: TIBStringField;
    IBDConfiXCOLORB: TIBStringField;
    IBDConfiXCOLORACT: TIBStringField;
    IBDConfiXCOLORNOACT: TIBStringField;
    IBDConfiXNUMPRE: TIBStringField;
    IBDConfiXNUMPED: TIBStringField;
    IBDConfiXNUMALB: TIBStringField;
    IBDConfiXNUMFAC: TIBStringField;
    IBDConfiXNUMLOTE: TIBStringField;
    IBDConfiXNUMCLI: TIBStringField;
    IBDConfiXNUMPRO: TIBStringField;
    IBDConfiXNUMAGEN: TIBStringField;
    IBDConfiXNUMALMACEN: TIBStringField;
    IBDConfiXNUMALMACENDEF: TIBStringField;
    IBDConfiXLARGOLOTE: TIntegerField;
    IBDConfiXLARGONUM: TIntegerField;
    IBDConfiXSERIE: TIBStringField;
    IBDConfiXSERIE2: TIBStringField;
    IBDConfiXSERIE3: TIBStringField;
    IBDConfiXUASARSERIEYEAR: TIBStringField;
    IBDConfiXLDPD1: TWideMemoField;
    IBDConfiXLDPD2: TWideMemoField;
    IBDConfiXLDPD3: TWideMemoField;
    IBDConfiXNOMMONEDA: TIBStringField;
    IBDConfiXNOMIMPUESTO: TIBStringField;
    IBDConfiXDESIMP1: TIBStringField;
    IBDConfiXIMP1: TIBBCDField;
    IBDConfiXDESIMP2: TIBStringField;
    IBDConfiXIMP2: TIBBCDField;
    IBDConfiXDESIMP3: TIBStringField;
    IBDConfiXIMP3: TIBBCDField;
    IBDConfiXDESIMP4: TIBStringField;
    IBDConfiXIMP4: TIBBCDField;
    IBDConfiXDESREQ1: TIBStringField;
    IBDConfiXREQ1: TIBBCDField;
    IBDConfiXDESREQ2: TIBStringField;
    IBDConfiXREQ2: TIBBCDField;
    IBDConfiXDESREQ3: TIBStringField;
    IBDConfiXREQ3: TIBBCDField;
    IBDConfiXDESREQ4: TIBStringField;
    IBDConfiXREQ4: TIBBCDField;
    IBDConfiXMODCOPIASEG: TIBStringField;
    procedure IBDatabase1BeforeConnect(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DM: TDM;

implementation

{$R *.dfm}


procedure TDM.IBDatabase1BeforeConnect(Sender: TObject);
//------------------------------------------------------------------------------
//*****************************************************[ Antes de conectar ]****
// Cogemos la ruta del Ejecutable
//------------------------------------------------------------------------------
var Ruta:string;
begin
    Ruta:=ExtractFilePath(Application.ExeName);    //Sacamos la ruta
    if FileExists(Ruta+ 'PGF2.FDB') then  IBDatabase1.DatabaseName:=ExtractFilePath(Application.ExeName) + 'PGF2.FDB'
                       else
    begin
       if FileExists(ruta+'bd\'+'PGF2.FDB') then IBDatabase1.DatabaseName:=ExtractFilePath(Application.ExeName)+'bd\' + 'PGF2.FDB'
                                           else
                                           begin
                                               Showmessage('Lo sentimos pero no encontramos el archivo PGF2.FDB, donde se encuentra el ejecutable, o en la capeta BD de la ubicación del Ejecutable');
                                           end;
    end;
//    ShowMessage(ruta+'bd\'+'PGF2.FDB');
//    ShowMessage(Ruta+ 'PGF2.FDB');
end;

end.


Como podemos ver tenemos en el evento IBDatabase1BeforeConnect el buscar la base de datos donde esta el ejecutable o en su defecto dentro de la carpeta bd\ que debe estar donde este el ejecutable, con lo que podemos usar el programa desde un pendrive por ejemplo (teóricamente)
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita