Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi]сделать базу данных


Автор: Lola8669 24.1.2009, 14:31
Чтобы на одном компе она стояла, а с других её могли просматривать! С чего начать, книжку читаю и ничего не могу понять(((

Автор: vovk 24.1.2009, 16:59
Локальная база данных она какбы для того и локальноя чтоб там где стояла там и работалаsmile Вам может нужно сервер поставить? а чтоб ответ както поконкретнее был, может откроете секрет с какой BD работать то собираетесь?

Автор: Lola8669 24.1.2009, 17:32
по учёту студентов и групп, а как сделать, чтобы с другого компьютера можно было заходить в неё под своим логином и паролем??

Автор: Данкинг 24.1.2009, 19:50
Цитата(vovk @  24.1.2009,  16:59 Найти цитируемый пост)
с какой BD работать то собираетесь?

Цитата(Lola8669 @  24.1.2009,  17:32 Найти цитируемый пост)
по учёту студентов и групп

 smile  smile  smile 

Lola8669, СУБД какая? И что значит "с другого компьютера": в локалке, что ли?

Автор: Akella 24.1.2009, 19:56
Создай таблицу пользователей, где храни логин и пароль. При запуске программы требуй ввести логин и пароль. А потом сверяй логин и пароль.
Код

function TfmLogon.CheckPass(user,pass:string):boolean;
Var
 SQL : string;
 q   : TpFIBQuery;
begin
  q := TpFIBQuery.Create(nil);
  try
    q.Database := dm.fibDB;
    q.GoToFirstRecordOnExecute := true;
    SQL := 'SELECT ID FROM USERS WHERE (NAME = '+QuotedStr(user)+') AND (PASS = '+QuotedStr(pass)+') AND (UPPER(DELETED) <> '+QuotedStr('T')+')';
    q.SQL.Add(SQL);
    q.GoToFirstRecordOnExecute := true;
    q.ExecQuery;
    result := q.RecordCount > 0;
  finally
    FreeAndNil(q);
  end;
end;


Автор: Lola8669 24.1.2009, 20:05
Данкинг, СУБД Delphi, база в Access, локальная.

Добавлено через 2 минуты и 50 секунд
Akella, в Access таблицу делать?? и каким образом она будет работать, я не могу понять(((. 

Автор: Akella 24.1.2009, 20:19
Цитата(Lola8669 @  24.1.2009,  20:05 Найти цитируемый пост)
и каким образом она будет работать

кто будет работать  smile ... таблица не работает, а хранит данные, к ней выполняются запросы, я тебе дал пример, готовый код, переделай для себя

Автор: Lola8669 24.1.2009, 20:37
В смысле я и не могу понять что там менять  и куда потом это вводить:(

Автор: Данкинг 24.1.2009, 21:00
Цитата(Lola8669 @  24.1.2009,  20:05 Найти цитируемый пост)
СУБД Delphi

Только честно: а зачем вообще ты решила взяться за то, в чём не разбираешься и что, судя по всему, тебе и не нужно? smile  smile 

Цитата(Lola8669 @  24.1.2009,  20:37 Найти цитируемый пост)
В смысле я и не могу понять что там менять  и куда потом это вводить:(

Где что менять и куда что вводить? smile 

Автор: Lola8669 24.1.2009, 21:10
Данкинг, я сама сделала базу в access и delphi, просто дальше ничего понять не могу!

Автор: Данкинг 24.1.2009, 21:18
Цитата(Lola8669 @  24.1.2009,  21:10 Найти цитируемый пост)
я сама сделала базу в access и delphi

В Дельфи ты что именно сделала?

Автор: Lola8669 24.1.2009, 21:20
много чего, кучу таблиц, поиск, фотки преподов.... ну, блин, всё

Автор: Данкинг 24.1.2009, 21:32
Цитата(Lola8669 @  24.1.2009,  21:20 Найти цитируемый пост)
много чего, кучу таблиц, поиск, фотки преподов.... ну, блин, всё 

Ты в Дельфи фотки преподов сделала? Поделись секретом мастерства, а то я себя полным лохом чувствую! smile 

Автор: Lola8669 24.1.2009, 21:45
ты издеваешься?? или реально не знаешь??

Автор: Данкинг 24.1.2009, 22:00
Цитата(Lola8669 @ 24.1.2009,  21:45)
ты издеваешься?? или реально не знаешь??

Как в Дельфи сделать фотки преподов? Реально не знаю.

Автор: Lola8669 24.1.2009, 22:02
ааа, ну в смысле smile  просматривать и чтобы к каждому можно было открыть и сохранить её или изменить знаю)))))))))))))))))))))))))

Автор: Akella 25.1.2009, 11:35
Lola8669,
http://forum.vingrad.ru/forum/delphi-db-database-reporting.html
вверху есть прикреплённые темы

http://forum.vingrad.ru/forum/database-sql.html
и здесь есть одна тема с примерами

Автор: Lola8669 25.1.2009, 12:41
пасибо! smile 

Автор: Hang 25.1.2009, 21:03
Lola8669, в Access надо делать «кучу таблиц», а не в Delphi! С помощью Delphi ты может разработать визуальные формы для наглядного отображения данных хранящихся в базе.

Автор: Данкинг 25.1.2009, 21:15
Hang, не отвлекай девушку от работы с СУБД "Delphi" ! smile 

Автор: Akella 25.1.2009, 23:00
Неужели в акцессе нет средств для создания визуальных форм?

Автор: Данкинг 25.1.2009, 23:11
Цитата(Akella @ 25.1.2009,  23:00)
Неужели в акцессе нет средств для создания визуальных форм?

Почему - есть, но это, разумеется, уже VBA. smile 

Автор: Lola8669 26.1.2009, 07:22
 smile  smile  smile Чё вы издеваетесь?? Я уже поняла давно, что в Access, а почему "кучу таблиц"?? Какие??

Автор: Akella 26.1.2009, 11:19
Цитата(Lola8669 @  24.1.2009,  21:10 Найти цитируемый пост)
Данкинг, я сама сделала базу в access и delphi, просто дальше ничего понять не могу! 

Создай новый проект в Delphi, добавь модуль DataModule, в него кинь AdoConnection, подключись к базе с помощью мастера (кнопку нажми в свойстве ConnectionString). Кинь на форму ADOTable, привяжи к AdoConnection. В ADOTable выбери таблицу из твоей access-базы. К ADOTable подключи TDataSorce. На главной форме в uses подключи DataModule (File -> Use unit). На главную форму кинь TDBGrid. Этот самый TDBGrid подключ к TDataSorce, который расположен DataModule.

TAdoConnection -> TADOTable -> TDataSorce -> TDBGrid.

К одному и тому же TAdoConnection подключай все остальные связки -> TADOTable -> TDataSorce -> TDBGrid.

Поняла что-нить?

Автор: Lola8669 26.1.2009, 15:51
Akella, я это всё сделала, я не понимаю, что сделать пользователям свои логин и пароль, чтобы, когда они их вводили, то могли просматривать базу данных, которая стоит на другом компе.

Автор: Hang 26.1.2009, 16:25
Цитата

а почему "кучу таблиц"??

потому что ты сама написала, что сделала
Цитата

много чего, кучу таблиц, поиск, фотки преподов.... ну, блин, всё 


Чтобы пользователи могли просматривать базу данных расположенную на другом компьютере (причем ты же наверняка хочешь чтобы с базой работали несколько пользователей одновременно), то тебе необходимо обратить свое внимание на другую СУБД!  smile   

Автор: Akella 26.1.2009, 17:47
Цитата(Lola8669 @  26.1.2009,  15:51 Найти цитируемый пост)
я не понимаю, что сделать пользователям свои логин и пароль, чтобы, когда они их вводили, то могли просматривать базу данных, которая стоит на другом компе. 

я уже запутался с этими формами авторизации smile , за последние несколько дней отвечал несколько раз, ищи в общих вопросх по дельфи и в дельфи + базы данных, эпидемия чтоле на эти формы логина и пароля smile 

Автор: Данкинг 26.1.2009, 19:18
Цитата(Lola8669 @ 26.1.2009,  15:51)
Akella, я это всё сделала, я не понимаю, что сделать пользователям свои логин и пароль, чтобы, когда они их вводили, то могли просматривать базу данных, которая стоит на другом компе.

У AdoConnection есть свойство "loginPrompt". Отлавливай ошибку, которая должна возникнуть, если пароль неверный. Какая ошибка - не знаю, не пробовал подобного.
 Кстати, в Access же можно только один пароль поставить на базу. И никаких прав пользователей там нет. Так вопрос-то в чём именно тогда? Чтобы у каждого юзера были свои права на каждую таблицу?

Автор: Lola8669 26.1.2009, 19:34
Я не могу, мне в Delphi надо. smile 

Автор: Данкинг 26.1.2009, 19:58
Цитата(Lola8669 @  26.1.2009,  19:34 Найти цитируемый пост)
Я не могу, мне в Delphi надо. 

Я про Дельфи и говорил. Только: 
1) пароли где храниться будут?
2) в чём заключается разграничение прав доступа к БД?
3) сама БД, как я понимаю, тоже будет защищена паролем?

Автор: Hang 27.1.2009, 08:23
Обычный "Тяжелый случай" с девушкой и компьютером.  smile 

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

Автор: Akella 27.1.2009, 09:57
Смотри, создаёшь в базе таблицу, где будут храниться код, логин, пароль пользователя. При старте приложения показываешь форму авторизации.

Код

//fmNeoba - главная форма приложения у мну
//при показе главной формы показываем _модальную_ форму авторизации (аутентификации) - fmLogon
procedure TfmNeoba.FormShow(Sender: TObject);
Var
  bFirstStart: boolean;
begin
 //Если первый старт, то показываем запрос логина и пароля
 if bFirstStart then begin

   fmLogon := TfmLogon.Create(Application);

//эта строка сработает только если пользователь введёт
//правильный пароль и нажмёт кнопку bOk на форме авторизации, см. ниже
   if fmLogon.ShowModal = mrOk then begin
     FreeAndNil(fmLogon);
   end else begin
     Freel(fmLogon);
   end;
 end;//if bFirstStart then begin

 bFirstStart := false;
end;



Код

procedure TfmLogon.FormCreate(Sender: TObject);
Var
 ii:variant;
 lu: TLastUser;
 lun: string;
begin

  lu  := TLastUser.Create;
  try
    lun := lu.LastUserName;
  finally
    Freel(lu);
  end;

//читаем из реестра параметры подключения (в данном случае СУБД Firebird)
  with TRegistry.Create do
  try
     RootKey := HKEY_CURRENT_USER;
     OpenKey(RegPath, True);
     if ValueExists('FBConnectionString') then
       with DM.dbNeoba do begin
         DBName := ReadString('FBConnectionString');
         ConnectParams.UserName := ReadString('FBUser');
         ConnectParams.Password := Decrypt(ReadString('FBPassword'), 43586);
         ConnectParams.CharSet := 'WIN1251';
         LibraryName := ReadString('FBClient');
         Connected := true;
       end;

//lcbUsers - выпадающий список (LookupComboBox, где загружен список возможных пользователей из таблицы пользователей)
//пользователь должен из этого списка выбрать свой логин, а ниже ввести пароль в TEdit
    lcbUsers.Properties.DataController.DataSet.Open;
//Выбираем в списке пользователя, который работал с программой в последний раз
    if lcbUsers.Properties.DataController.DataSet.Locate('name', lun, []) then begin
      ii := lcbUsers.Properties.ListSource.DataSet.FieldByName('ID').asInteger;
      lcbUsers.EditValue := ii;
    end;

  finally
    free;
  end;
end;

всё, подготовили форму логина

теперь она будет показана
Код

//если в выпадающем списке уже выбран пользователь, то сразу передаём
//фокус в TEdit, чтобы пользователь сразу мог вводить пароль
procedure TfmLogon.FormShow(Sender: TObject);
begin
  Application.RestoreTopMosts;

//LcbUsers выпадающий список возможных пользователей
//выпадающий список прилеплен к набору данных TUsers
////tUsers - набор данных, в котором живёт запрос типа (Select id, name, pass from TableUsers)

  if LcbUsers.EditValue <> null then
    edPassword.SetFocus
  else
    LcbUsers.SetFocus;

  if LcbUsers.Text <> '' then
    edPassword.SetFocus
  else
    LcbUsers.SetFocus;

end;


Теперь пользователь вводит пароль и нажимает кнопку OK
Код

procedure TfmLogon.btnOkClick(Sender: TObject);
Var
 lu: TLastUser;
begin
//функцию CheckPass см. ниже
  if CheckPass(lcbUsers.Text, edPassword.Text) then  begin

//Ай маладэс.... правэлный парол!!!
    ModalResult := mrOk;

  end else begin
      MessageBox(Application.ActiveFormHandle, 'Пашли фсенах. Неверный пароль!', 'ОШИБКА!', MB_ICONWARNING or MB_OK);
      edPassword.SetFocus;
      edPassword.Text := '';
  end;//else

end;



Код

function TfmLogon.CheckPass(user, pass:string):boolean;
begin
//проверяем пароль
//tUsers - набор данных, в котором живёт запрос типа (Select id, name, pass from TableUsers)
//соответственно tUsersPASS - persistent поле набора данных

  result := pass = tUsersPASS.Value;
end;


Так может выглядеть окно(форма) авторизации
user posted image

Добавлено через 11 минут и 17 секунд
Цитата(Lola8669 @  26.1.2009,  15:51 Найти цитируемый пост)
Akella, я это всё сделала, я не понимаю, что сделать пользователям свои логин и пароль, чтобы, когда они их вводили, то могли просматривать базу данных, которая стоит на другом компе. 

 smile  smile  smile  smile  smile 

а это что? smile 
http://forum.vingrad.ru/index.php?showtopic=245093&view=findpost&p=1767145

Автор: Данкинг 27.1.2009, 10:46
Цитата(Akella @  27.1.2009,  09:57 Найти цитируемый пост)
а это что?

 smile А это расстроенный колобок с мануалом в руках. smile  smile  smile Я думаю, ответ будет примерно таким.

Автор: Akella 27.1.2009, 10:50
 smile 

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