|
Вопрос # 2 675/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Есть два вопроса.
1) Мне нужно создать БД для одного предприятия.
Вопрос заключается в том что там используется очень много одинаковых таблиц.
Дак вот. Если я создам в Database Desktop все "Каркасы таблиц со всеми связями"..а потом буду использовать эти карсы для разных отделов предприятия, то будет ли путаться информация и будет ли все работать нормально?
2) Сделал элементарную защиту паролем для программы, но при написании кода
procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text='???') and (MaskEdit1.Text='???') then
Form2.ShowModal
else
ShowMessage('неверный логин или пароль');
end;
вроде все работает нормально, но мне нужно что когда все же пароль ввели правильно открылась Форма программы, а эта форма для входа стала невидимой, а у меня что то не получается..
Если вам понятны мои проблемы помогите пожалуйста..
С УВАЖЕНИЕМ Артём..
 |
Вопрос задал: 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 и форма не закроется. При отмене ввода пароля всё приложение закроется.
Приложение: Переключить в обычный режим-
- begin
- if Form2.ShowModal = 3 then Application.Terminate;
- end;
-
-
- begin
-
-
- begin
-
- ModalResult := 0;
- end;
- end;
-
-
- begin
-
- end;
 |
Ответ отправил: Quark (статус: 1-ый класс)
Время отправки: 23 апреля 2009, 22:13
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 29 апреля 2009, 13:51; участников в обсуждении: 3.
|
Вадим К (статус: Академик), 23 апреля 2009, 19:04 [#1]:
Зачем создавать "много много одинаковых таблиц"? проще создать одну таблицу, просто внести ещё одно поле "номер предприятия".
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Dron (статус: Студент), 23 апреля 2009, 20:37 [#2]:
2) Попробуйте так:
Form2.Show;
Hide;
По идее должно делать то, что вам нужно.
С уважением.
|
|
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 (статус: Посетитель), 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;
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|