Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > создание бд Access программным путем в Делфи.


Автор: Teleport 25.10.2008, 00:30
есть форма с кнопкой создать. Нужно создать бд Access программно с двумя таблицами и паролем доступа к базе. Как сделать? Почитал на форуме тему - http://forum.vingrad.ru/topic-112753/view-all.html - ничего не понял... там ясно сказано как к существующей подключаться и как просто создавать, а вот про пароль... ничего не вижу...
Можно подробнее объяснить как именно создать бд Access программно с паролем к ней? или ссылочку...  smile 

Автор: Данкинг 25.10.2008, 01:36
Ну, вот пример из Delphiworld:

Код

//определяем тип, указывающий действие над паролем
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;


Автор: Teleport 26.10.2008, 13:11
примерно  понял, хотядумаю, что будут еще вопросы...))))))) Спасибо. smile

Автор: Данкинг 26.10.2008, 13:47
Цитата(Teleport @ 26.10.2008,  13:11)
примерно  понял, хотядумаю, что будут еще вопросы...))))))) Спасибо. smile

Я сам этот код не проверял, поэтому не отвечаю за него, но вроде как в целом там всё понятно.

Автор: Teleport 27.10.2008, 12:52
я проверю ))))))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)