Ver Mensaje Individual
  #5  
Antiguo 08-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Reputación: 26
BlueSteel Va por buen camino
Cool

Hola ContraVeneno

mira.. implemente el codigo que me enviastes y me funciona bien.. aunque he tenido un problema...

Vamos por paso...

Cree un formulario para conexión con base de datos, en donde ingreso el servidor, el usuario, la clave y nombre de la base....

cuando ingreso a dicho formulario realizo esto
Código Delphi [-]
     if FileExists('D:\Sistemas\Biovial\config.ini') Then
        Begin
             Parametro := TiniFile.Create('D:\Sistemas\Biovial\config.ini');
             vSer.Text := Parametro.ReadString('BaseDato','Servidor',' ');
             vUsu.Text := Parametro.ReadString('BaseDato','Usuario',' ');
             vPas.Text := Parametro.ReadString('BaseDato','Clave',' ');
             vBas.Text := Parametro.ReadString('BaseDato','Base',' ');
             Parametro.Free;
        End
     Else
        ShowMessage('Debe Ingresar Información de Base de Datos para continuar');

es decir, pregunta si existe el archivo .ini.. si es así me rescata los datos y me los pasa a los Edits correspondientes... de lo contrario me envia para ingresar los datos.

Con el sgte codigo conecto la base de datos.. y esto me funciona super... y los mismos datos que ingrese los almaceno en el archivo .ini... se supone que si no esta creado el archivo .ini me lo crea, de lo contrario solo actualiza...

Código Delphi [-]
     if Datos.ADBiovial.Connected Then Datos.ADBiovial.Connected := False;
     Datos.ADBiovial.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False'+
                                         ';User ID='+QuotedStr(vUsu.Text)+
                                         ';Initial Catalog='+QuotedStr(vBas.Text)+
                                         ';PassWord='+QuotedStr(vPas.Text)+
                                         ';Data Source='+QuotedStr(vSer.Text);
     try
        Datos.ADBiovial.Connected := True;
        Parametro := TiniFile.Create('D:\Sistemas\Biovial\config.ini');
        Parametro.WriteString('BaseDato','Servidor',vSer.Text);
        Parametro.WriteString('BaseDato','Usuario',vUsu.Text);
        Parametro.WriteString('BaseDato','Clave',vPas.Text);
        Parametro.WriteString('BaseDato','Base',vBas.Text);
        Parametro.Free;
        ShowMessage('Base de Dato ya fue asignada');
     except
        ShowMessage('Error de conexión, ingrese ruta nuevamente');
        vSer.SetFocus;
     end


el problema se me genera cuando ingreso al sistema, lo que realizo en el Evento onCreate del formulario principal (Menu)... es lo sgte

Código Delphi [-]
procedure TMenu.FormCreate(Sender: TObject);
Var
   Parametro:Tinifile;
begin
     // Pregunto si existe el directorio, de lo contrario lo creo...
     If not DirectoryExists('D:\Sistemas\Biovial') Then
        Begin
            {$I-}
            MkDir('D:\Sistemas\Biovial');
        End;
     // Pregunto si existe el archivo, de lo contrario envio a Form Conexion_Base para crear archivo y conectar
     if FileExists('D:\Sistemas\Biovial\config.ini') Then
        Begin
             Parametro := TiniFile.Create('D:\Sistemas\Biovial\config.ini');
             Try
                vSer := Parametro.ReadString('BaseDato','Servidor',' ');
                vUsu := Parametro.ReadString('BaseDato','Usuario',' ');
                vPas := Parametro.ReadString('BaseDato','Clave',' ');
                vBas := Parametro.ReadString('BaseDato','Base',' ');
             Finally
                Parametro.Free;
             End;
             With Datos.ADBiovial Do  // Ruta al Formulario y Componente ADOConection
                  Begin
                      if not Connected Then
                         Begin // Aqui paso todos los parametros y conecto...
                              ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False'+
                                                  ';User ID='+QuotedStr(vUsu)+
                                                  ';PassWord='+QuotedStr(vPas)+
                                                  ';Initial Catalog='+QuotedStr(vBas)+
                                                  ';Data Source='+QuotedStr(vSer);
                              Connected := True;
                              ShowMessage('Base conectada');
                         End
                  End;
        End
     Else
        Begin
             ShowMessage('Debe Seleccionar Base de Datos para continuar');
             Base_Conexion := TBase_Conexion.Create(Self);
             Try
                Base_Conexion.ShowModal;
             Finally
                Base_Conexion.Free;
             End;
        End;
end;

Bueno, esto último me genera el siguiente error...

Project Biobial.exe raised exception class EAccessViolation with message 'Access violation at address 004D5C69 in module BioBial.exe'. Read of address 00000058'.

Aunque el error siempre aparece... presiono Ok.. y se puede ejecutar el sistema ... es decir igual conecta

y realizo la compilación paso a paso el error se marca aquí

Código Delphi [-]
  With Datos.ADBiovial Do  // Ruta al Formulario y Componente ADOConection

Que podra ser ??
__________________
BlueSteel
Responder Con Cita