Ver Mensaje Individual
  #5  
Antiguo 20-09-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Reputación: 18
waly2k1 Va por buen camino
Rta.

En la conexion debes dejar la propiedad connected en false
luego en la aplicación lees de un ini o como sea la ubicación real de la BD sino cuando arranca busca la BD de tu disco local y no la encuentra, entonces te surgen errores.

Te copio a continuación una rutina que la invoco en el evento create de un datamodule, si no usas uno, al crear el form. Pero no te olvides de la propiedad Connected = false en el inspector de objetos y agregar IniFiles a las uses. Cambia el nombre de la DB de tu aplicación y password en caso que la utilices.

Código:
procedure TData.OpenConx();
Var
    sDBName:String;
    sServer:String;

    fIni:TIniFile;
    sFile:String;
    sAppFolder:String;
    i:Integer;
begin
    Conx.Close;
    sAppFolder := ExtractFilePath( Application.ExeName );
    ChDir( sAppFolder );
    sFile := sAppFolder + 'Config.ini';
    fIni := TIniFile.Create( sFile );

    while true do
    begin
        if Not FileExists( sFile ) then
        begin
            fIni.WriteString( 'DATABASE', 'Root', sAppFolder + 'Data\TSPoS.mdb' );
        end;

        sDataPath := fIni.ReadString( 'DATABASE', 'Root', sAppFolder + 'Data\TSPoS.mdb' );


        fIni.Free;
    // Cierro INI

        sConx := 'Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Jet OLEDB:Database Password=' + sPassword + ';Data Source=' + sDataPath;

        if Conx.Connected then Conx.Close;
        Conx.ConnectionString := sConx;
        Conx.Open;
        Conx.Connected := True;

        for i := 0 To Data.Conx.DataSetCount-1 do
        begin
//              ShowMessage( Conx.DataSets[i].Name ); // Por si tira error se cual es el que jode
              if Pos( 'TMP', UpperCase( Conx.DataSets[i].Name ) ) = 0 then // Si no es un tmp que lo abra, sino no, ya q las tmp las genero en ejecucion
              begin
                  Conx.DataSets[i].Active := true;
              end;
        end;
        exit;
    end;
end;

Saludos y espero soluciones tu problema.
Responder Con Cita