Главная страницаОбратная связьКарта сайта

Пароли на базу данных Access

Автор: Savva
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Установка/Изменение/Удаление пароля на базу данных Access

Функция для удаления, задания и изменения пароля базы данных Access используя DAO Engine.

PS. кто будет использовать - в комментариях отметьте версии ОС, Access,Delphi.

Зависимости: Dialogs,DAO2000,ComObj
Автор:       savva, savva@nm.ru, ICQ:126578975, Орел
Copyright:   Сапронов Алексей (Savva)
Дата:        13 сентября 2002 г.
***************************************************** }

//определяем тип, указывающий действие над паролем
type
  TPasswordAction = (paSet, paChange, paRemove);

  ....

function ChangeAccessDBPassword(DatabaseName: string; action: TPasswordAction;
  OldPassword: string = ""; NewPassword: string = ""): boolean;
var
  DAO: _DBEngine;
  db: Database;
  ClassID: TGUID;
  V35, V36: string;
  oldPass, newPass: string;
begin
  Result := false;
  V35 := "DAO.DBEngine.35";
  V36 := "DAO.DBEngine.36";
  try
    try
      ClassID := ProgIDToClassID(v36);
    except
      try
        ClassID := ProgIDToClassID(v35);
      except
        raise;
      end;
    end;
    DAO := CreateComObject(ClassID) as _DBEngine;
    if action = paSet then
    begin
      db := DAO.OpenDatabase(DatabaseName, true, false, "");
      db.NewPassword(#0, NewPassword);
    end
    else
    begin
      db := DAO.OpenDatabase(DatabaseName, true, false, ";pwd=" + OldPassword);
      if action = paChange then
        db.NewPassword(OldPassword, NewPassword)
      else
        db.NewPassword(OldPassword, #0);
    end;
    Result := true;
  except
    // выводим сообщение о ошибке
    on E: Exception do
    begin
      Result := false;
      ShowMessage(e.message);
    end;
  end;
end.

Пример использования:

//устанавливаем новый пароль - БАЗА ДОЛЖНА БЫТЬ НЕ ЗАПАРОЛЕНА,
// иначе будет ошибка:)

procedure TForm1.Button1Click(Sender: TObject);
var
  newPass: string;
begin
  if InputQuery("New password", "Enter new password", newPass) then
    if ChangeAccessDBPassword(ExtractFilePath(ParamStr(0)) + "db2.mdb", paSet,
      "", newPass) then
      ShowMessage("OK!")
    else
      ShowMessage("Error!");
end;

//изменяем пароль

procedure TForm1.Button2Click(Sender: TObject);
var
  oldPass, newPass: string;
begin
  if InputQuery("Old password", "Enter old password", oldPass) then
    if InputQuery("New password", "Enter new password", newPass) then
      if ChangeAccessDBPassword(ExtractFilePath(ParamStr(0)) + "db2.mdb",
        paChange, oldPass, newPass) then
        ShowMessage("OK!")
      else
        ShowMessage("Error!");
end;

//удаляем пароль

procedure TForm1.Button3Click(Sender: TObject);
var
  oldPass: string;
begin
  if InputQuery("Password", "Enter password", oldPass) then
    if ChangeAccessDBPassword(ExtractFilePath(ParamStr(0)) + "db2.mdb",
      paRemove, oldPass, "") then
      ShowMessage("OK!")
    else
      ShowMessage("Error!");
end;

Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Пароли на базу данных Access", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info