открыть базу данных с помощью initfile - PullRequest
0 голосов
/ 08 июня 2010

как открыть локальную или удаленную базу данных с IniFile. что-то вроде ниже.

   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;

Ответы [ 3 ]

1 голос
/ 08 июня 2010

Кажется, что ваш код правильный, если вы сталкиваетесь с проблемами, убедитесь, что значение строки INI Connection является допустимым. Хороший способ получить правильную строку подключения - это настроить соединение во время разработки, затем скопировать и вставить его в файл конфигурации.

0 голосов
/ 09 июня 2010

Я нашел свою ошибку. Вместо проверки наличия файла с именем «ado.mdb» в каталоге, основанном на глобальной переменной remote, я должен был искать файл с именем «base_dados.mdb» в каталоге, определяемом значением, из которого я считал INI-файл.

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 голосов
/ 08 июня 2010

Если ваша проблема с FileExists, вот как вы можете ее отследить.

Поставьте точку останова на строке if FileExists.Когда он сломается до отладчика, нажмите CTRL-F7, что вызовет диалог Evaluate / Modify.Введите remote+'db\ado.mdb' в поле ввода и посмотрите, что он дает.Скорее всего, вы получите неверное имя файла.

Например, если remote не заканчивается обратной косой чертой, то это приведет к неверному пути.Вы можете исправить это с помощью функции IncludeTrailingPathDelimiter.Трудно быть уверенным, не видя больше вашего кода, но из моего опыта это, вероятно, то, что происходит.

...