Ver Mensaje Individual
  #8  
Antiguo 05-07-2007
[juanramones] juanramones is offline
Miembro Premium
 
Registrado: ene 2007
Posts: 6
Reputación: 0
juanramones Va por buen camino
Archivos .ini y Selección de Bases de Datos con TADO Controls

En agradecimiento a muchos que han colaborado doy este pequeño aporte con los conocimientos adquiridos de los participantes de este Club.

Digamos que el archivo de texto Inicio.ini es el de configuración general de la aplicación y contiene lo siguiente

Código:
[Configuracion]
udl=db1.udl
y que el archivo de texto Bases.ini contiene los siguiente:
Código:
[BD]
udl1=db1.udl
udl2=db2.udl
udl3=db3.udl
udl4=db4.udl
Donde [BD] es una sección y donde
udl=db1.udl es una variable con un valor asignado y así con cada udl#=db#.udl que indica los archivos .udl de configuración de acceso a Bases de Datos.

Recomiendo leer todos los comentarios de las líneas de código a continuación


Código Delphi [-]
function BasesDisponibles : TStringList;  // función que extrae las bases disponibles según el archivo Bases.ini
  var
    AIniFile : TIniFile; // Archivo de Inicio .INI   // USES IniFiles, // Manejo de Archivos .ini
    Ruta: string;
    StrLst : TStringList;
begin
  StrLst := TStringList.Create; 
  Ruta := ExtractFileDir(ParamStr(0));   // Ruta desde donde se ejecuta el archivo Principal de la aplicación
  AIniFile := TIniFile.Create(Ruta + '\Bases.ini');   // se abre o se crea el archivo de inicio del sistema
  AIniFile.ReadSectionValues('BD',StrLst);// para leer sólo los nombres de secciones se usa  AIniFile.ReadSections(StrLst);
  AIniFile.Free; // Cierra el Archivo y libera el objeto.
  result := StrLst;
end;

procedure TForm.Carga_Items_DB(DbSeleccionada: String);  // carga los datos de las bases en un ComboBox y coloca por defecto el de la Configuración del archivo Inicio.ini
  var
    StrLst : TStringList;   // USES Classes,  // Manejo de TStrings
    i : Integer;
begin
  StrLst := BasesDisponibles;
  for i := 0 to StrLst.Count - 1 do // recorre todos los ítems de StrLst
  begin
    ComboBoxBases.Items.Add(StrLst.Strings[i]); // la forma debe tener un Control de Tipo TComboBox
    if StrLst.Strings[i] = DbSeleccionada then
    begin
      ComboBoxBases.ItemIndex := i;
    end;
  end;
end;

procedure TForm.BotonOkClick(Sender: TObject); // Procedimiento de Evento al presionar un Botón de OK en la forma
  // Guarda los Cambios
  var
    Ruta: string;
    StrLst : TStringList;
    AIniFile : TIniFile; // Archivo de Inicio .INI   // USES IniFiles, // Manejo de Archivos .ini
begin
  Ruta := ExtractFileDir(ParamStr(0));   // Ruta desde donde se ejecuta el archivo Principal de la aplicación
  AIniFile := TIniFile.Create(Ruta + '\Inicio.ini');   // se abre o se crea el archivo de inicio del sistema
  AIniFile.WriteString('Configuracion', 'udl', ComboBox.Items[ComboBox.ItemIndex]);
  AIniFile.Free; // Cierra el Archivo y libera el objeto.
end;

procedure TForm.FormShow(Sender: TObject); // Procedimiento del Evento OnShow que se debe llamar cuando se carga la Forma 
  var
    AIniFile : TIniFile;
    Inicio : string;
    DbSeleccionada : String;
begin
  // Archivo de inicio de la aplicación
  Inicio := ExtractFileDir(ParamStr(0)) + '\Inicio.ini';
  AIniFile := TIniFile.Create(Inicio);
  DbSeleccionada := AIniFile.ReadString('Configuracion','udl','db1.udl');
  Carga_Items_DB(DbSeleccionada);
  AIniFile.Free;
  UdlStr := ExtractFileDir(ParamStr(0)) + '\' + DbSeleccionada;
  DataModule.DB.Connected := False;  // se desconecta de la Base de Datos // Control TADOConnection dentro de un Data Module
  DataModule.DB.Close; // se cierra la BD
  DataModule.DB.ConnectionString := 'FILE NAME=' + UdlStr; // se indica la cadena de conexión con el archivo de configuración de la BD
  DataModule.DB.Open; // Se abre nuevamente la BD
end;

-----------------------------------------------
Con colaboración podemos lograr cosas grandes.
Responder Con Cita