Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 675

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Есть два вопроса.
1) Мне нужно создать БД для одного предприятия.
Вопрос заключается в том что там используется очень много одинаковых таблиц.
Дак вот. Если я создам в Database Desktop все "Каркасы таблиц со всеми связями"..а потом буду использовать эти карсы для разных отделов предприятия, то будет ли путаться информация и будет ли все работать нормально?
2) Сделал элементарную защиту паролем для программы, но при написании кода


procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text='???') and (MaskEdit1.Text='???') then
Form2.ShowModal
else
ShowMessage('неверный логин или пароль');
end;

вроде все работает нормально, но мне нужно что когда все же пароль ввели правильно открылась Форма программы, а эта форма для входа стала невидимой, а у меня что то не получается..

Если вам понятны мои проблемы помогите пожалуйста..

С УВАЖЕНИЕМ Артём..

Приложение:
  1.  


dreiv Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: dreiv (статус: Посетитель)
Вопрос отправлен: 23 апреля 2009, 19:01
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Quark

Здравствуйте, dreiv!

1) На мой взгляд, лучше сделать единую таблицу (если они все идентичны), добавив в неё ИД отдела, а потом просто сделать для каждого отдела свой уровень доступа по ИД. Но имеет смысл, только если используется локальная сеть с единым доступ к БД. И в этом случае лучше использовать какой-либо SQL-сервер.

Встречный вопрос: какой движок БД?

2) если правильно понял ваш текст, сначала запускается Form1, в ней ввод пароля и проверка его, в случае, если всё правильно - запуск основной рабочей формы Form2 методом ShowModal.
В этом случае эффективнее делать наоборот - основная форма приложения запускается первой, но при её загрузке (событие onShow или OnCreate) вызывается форма запроса пароля методом ShowModal. В ней делается проверка пароля, и если он правильный - присваивайте свойству ModalResult значение integer больше 2, если не верный - значение 0, можно ещё сделать значение 3 - нажатие кнопки "Отмена" (если есть).
В итоге получится так: при правильно вводе пароля ModalResult будет больше 0 и форма автоматически закроется, предоставив основному приложению спокойно работать. При ошибке пароля ModalResult будет = 0 и форма не закроется. При отмене ввода пароля всё приложение закроется.

Приложение:
  1.  
  2. begin
  3. if Form2.ShowModal = 3 then Application.Terminate;
  4. end;
  5.  
  6.  
  7. begin
  8.  
  9.  
  10. begin
  11.  
  12. ModalResult := 0;
  13. end;
  14. end;
  15.  
  16.  
  17. begin
  18.  
  19. end;


Ответ отправил: Quark (статус: 1-ый класс)
Время отправки: 23 апреля 2009, 22:13


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 29 апреля 2009, 13:51; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 23 апреля 2009, 19:04 [#1]:

Зачем создавать "много много одинаковых таблиц"? проще создать одну таблицу, просто внести ещё одно поле "номер предприятия".
Галочка "подтверждения прочтения" - вселенское зло.
Dron

Dron (статус: Студент), 23 апреля 2009, 20:37 [#2]:

2) Попробуйте так:
Form2.Show;
Hide;
По идее должно делать то, что вам нужно.
С уважением.
POWER

POWER (статус: Посетитель), 29 апреля 2009, 13:47 [#3]:

если они используют одинаковые таблици ты можешь их переименовать а в dbgrid свойствах полей можешь назвать как им захочеться. Это для того чтоб при запросе у тя не возникло проблема.
ответ на 2-й вопрос:
Можешь создать таблицу и в них отправить свой пароль.

например твоя таблица называется pswd, и в нем будет 1 поле.

Добавление нового пароля в pswd:

edit1-текущий пароль
edit2-новый пароль
edit3-повтор пароля

begin
if edit1.text=table1.fields.fields[0].asstring //сверяем текущий пароль and edit2.text=edit3.text //сверяем новый пароль наличии одиноковости then
table1.fields.fields[0].asstring:=edit3.text;

end;


Пароль для входа в программу:
begin
if edit1.text=table1.fields.fields[0].asstring then
yourform.show;
end;
POWER

POWER (статус: Посетитель), 29 апреля 2009, 13:51 [#4]:

Извиняюсь, так торопился что не дописал до конца.

1)если они используют одинаковые таблици ты можешь их переименовать а в dbgrid свойствах полей можешь назвать как им захочеться. Это для того чтоб при запросе у тя не возникло проблема.

2)Можешь создать таблицу и в них отправить свой пароль.

например твоя таблица называется pswd, и в нем будет 1 поле.

Добавление нового пароля в pswd:

edit1-текущий пароль
edit2-новый пароль
edit3-повтор пароля

begin
if edit1.text=table1.fields.fields[0].asstring //сверяем текущий пароль and edit2.text=edit3.text //сверяем новый пароль наличии одиноковости then
table1.open;
table1.Append;
table1.fields.fields[0].asstring:=edit3.text;
table1.first;
end;


Пароль для входа в программу:
begin
if edit1.text=table1.fields.fields[0].asstring then
yourform.show;
end;

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:50
Выполнено за 0.03 сек.