| 
| 
 | Вопрос # 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 и форма не закроется. При отмене ввода пароля всё приложение закроется.
 Приложение:Переключить в обычный режим  beginif 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;
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |