2010-06-07 2 views
0

comment ouvrir une base de données locale ou distante avec IniFile. quelque chose comme ci-dessous.base de données ouverte avec initfile

vBanco : String; 
    IniFileName : TIniFile; 
begin 
    IniFileName := TIniFile.Create(ExtractFilePath(ParamStr(0))+FileName); 
    Try 
     if FileExists (remote+'db\ado.mdb') then 
     begin 

       vBanco := Trim(IniFileName.ReadString('acesso','BancoRemto','')); 
       Dirlocal := Trim(IniFileName.ReadString('acesso','PastasRemto','')); 
       frmPrincipal.Edit1.text := Dirlocal; 
       Dirtrabalho := (ExtractFilePath(Application.ExeName)); 

       Conection.ConnectionString := vBanco; 
     end 
     else 
     begin 
      Try 
       vBanco := Trim(IniFileName.ReadString('acesso','banco','')); 
       Dirlocal := Trim(IniFileName.ReadString('acesso','PastasLocais','')); 
       frmPrincipal.Edit1.text := Dirlocal; 
       Dirtrabalho := (ExtractFilePath(Application.ExeName)); 
      Finally 
      end; 
     end; 
    Finally 
     IniFileName.Free; 
    end; 
end; 
+1

Les fichiers INI n'ouvrent pas les bases de données. Qu'essayez-vous de faire? Quelle partie de ce code est pertinente pour votre question? Pourriez-vous s'il vous plaît supprimer tout code * qui n'est pas * pertinent? –

+0

@ml: Selon votre profil, vous avez déjà posé sept questions, obtenu des réponses à cinq d'entre elles, et vous n'avez accepté aucune des réponses. Il est considéré comme poli ici sur StackOverflow pour marquer une bonne réponse comme accepté (cliquez sur l'icône de la case à cocher sous le widget de vote) de sorte que le reste d'entre nous savons que vous avez trouvé une réponse satisfaisante. –

+0

Rob et Mason: Pardonnez mon commentaire non sollicité mais les modifications que vous ajoutez à ce forum améliorent immensément la qualité de l'information que le reste d'entre nous peut trouver ici. Je ne sais pas comment vous trouvez le temps de continuer, mais c'est l'une des principales raisons pour lesquelles je prends le temps de suivre "Questions taguées Delphi" sur StackOverflow dans mon agrégateur RSS tous les jours. Je sais que ce n'est pas facile d'être le flic. Merci pour le bon travail. – jrodenhi

Répondre

1

Il semble que si vous avez votre code, si vous utilisez des problèmes assurez-vous que la valeur de la chaîne de connexion INI est valide. Un bon moyen d'obtenir une chaîne de connexion valide est de configurer la connexion au moment de la conception, puis copiez-la et collez-la dans votre fichier de configuration.

+0

le problème est: avec si FileExists); ça ne semble pas marcher !!!!!!!! Merci –

+0

FileExists est une fonction qui n'a absolument rien à voir avec les fichiers INI. Si FileExists est le problème, alors pourquoi les seuls mots de votre question concernent-ils les fichiers INI? Et pouvez-vous s'il vous plaît être plus précis sur ce que «ne semble pas fonctionner» signifie vraiment? –

0

Si votre problème concerne FileExists, procédez comme suit.

Mettez un point d'arrêt sur la ligne if FileExists. Quand il se casse au débogueur, appuyez sur CTRL-F7, ce qui fera apparaître la boîte de dialogue Evaluer/Modifier. Tapez remote+'db\ado.mdb' dans la zone de saisie et voir ce qu'il donne. Cela vous donnera probablement un mauvais nom de fichier.

Par exemple, si remote ne se termine pas par une barre oblique inverse, cela générera un chemin invalide. Vous pouvez résoudre ce problème avec la fonction IncludeTrailingPathDelimiter. Difficile d'être certain sans voir plus de code, mais d'après mon expérience c'est probablement ce qui se passe.

0

J'ai trouvé mon erreur. Au lieu de vérifier l'existence d'un fichier nommé "ado.mdb" dans un répertoire basé sur la variable globale remote, j'aurais dû chercher un fichier nommé "base_dados.mdb" dans un répertoire déterminé par une valeur que j'ai lue depuis un INI fichier.

procedure TfrmDados.ConectionBeforeConnect(Sender: TObject); 
const 
    FileName = 'config.ini'; 
var 
    vBanco : String; 
    IniFileName : TIniFile; 
    LBasedados : String; 
begin 
    IniFileName := TIniFile.Create(ExtractFilePath(ParamStr(0))+FileName); 

    vBanco := Trim(IniFileName.ReadString('acesso','BDtrabalho','')); 
    Dirlocal := Trim(IniFileName.ReadString('acesso','Pastrabalho','')); 
    LBasedados := Dirlocal+'db\base_dados.mdb'; 
    frmPrincipal.Edit1.text := Dirlocal; 
    Dirtrabalho := (ExtractFilePath(Application.ExeName)); 
    if FileExists(LBasedados) then 
    Conection.ConnectionString := vBanco 
    else 
    begin 
    Application.MessageBox('Bade dados do servidor não encontrada vai trabalhar neste Computador!','Ligação Remota FALHOU'); 
    vBanco := Trim(IniFileName.ReadString('acesso','BD_local','')); 
    Dirlocal := Trim(IniFileName.ReadString('acesso','Pasta_local','')); 
    frmPrincipal.Edit1.text := Dirlocal; 
    Dirtrabalho := (ExtractFilePath(Application.ExeName)); 
    Conection.ConnectionString := vBanco; 
    end; 

    IniFileName.Free; 
end; 
+0

Il me semble que le problème de base était que vous ne compreniez pas comment votre programme était supposé fonctionner, et vous avez donc conclu qu'il y avait un problème lié aux fichiers INI ou FileExists. La prochaine fois, s'il vous plaît assurez-vous de comprendre l'objectif en premier. –

Questions connexes