![]() |
|
|
![]()
|
|
| freshAngel |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
Система клиент - сервер.
Информацию в БД (access) находящуюся на сетевом диске можно добавлять информацию один раз в месяц, для каждого пользователя. Проверка была - ли запись в БД, ведется по следующему алгоритму if(логин = введеный логин && месяц из БД = текущий месяц && год из БД = текущий год) - пользователь уже делал запись ну, а если нет, запись не найдена, то можно добавлять... Все работает, но если изменить дату на локальном компьютере (например, сделать, на год меньше), то соотвественно, исходя из предыдущего условия, открывается возможность добавления информации. Как можно улучшить защиту!? И второй вопрос... Есть два стрингрида на вкладках tabset (по одному stringgrid на вкладку). Есть кнопка: Обновить информацию из БД. При ее нажатии происходит повторное, чтение информации из БД и занесение ее в стринггриды. Плохо, только одно, что обновляется только stringgrid на текущей вкладке, там, где в данный момент находится пользователь. Если пользователь находится на второй вкладке, то при попытке обновления первого stringgrid вываливается ошибка, что - то типа: Вкладка номер 1, в режиме visible=false, невозможно обновить stringgrid1 Естественно, что при если: Вкладка1 - visible = false, то Владка2 - visible=true и наоборот |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
А если вставлять дату не из самой программы, а ту, которая на сервере? Нечто вроде
(т.е. date() - это функция не твоей проги, а внутренняя функция VBA) Сам не пробовал, поэтому не отвечаю. Это уже другой вопрос. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| freshAngel |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
Была такая мысль, насчет даты с сервера.
Только незнаю как вставить, а если
То обновиться дата, с локального компьютера... А вот как получиться дату именно с компьютера сервера!? Примечание Хотя, если честно, непробовал. Тестировал программу использую файл БД с локального компьютера. Попробую, что будет если файл БД, брать, как и положено, с сервера А что на счет DBGrid, там оно мне не нужно... Работаю непосредственно с SQL - запросами и вывожу в StringGrid результат из массива найденных строк... Это сообщение отредактировал(а) freshAngel - 26.10.2008, 15:06 |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Почему с локального-то? Ведь ты не посылаешь в запрос функцию date() (или как там она на Билдере) из своей проги. Ты берёшь date(), которая на сервере. Хотя я тоже не пробовал и гарантировать этого не могу. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| freshAngel |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
Проверил.
Как я и думал, дата ставится с локального компьютера, а не с того, на сетевом диске которого лежит файл БД. Просто, это не есть сервер базы данных, как например, MySQL, а простой файл БД. Собственно и значения он берет с локального компьютера, и поддерживает лишь необходимый минимум функций для работы. Есть еще идеи!? |
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
ну, по крайней мере можно запретить делать запись на более ранние даты, те, если пользователем сделана запись (последняя) в октябре 2008, то он не может сделать запись, если изменит дату на более раннюю (только если изменит на более позднюю у него будет возможность добавлять данные).
а еще можно запретить пользователю менять дату/время и все дела. -------------------- |
|||
|
||||
| freshAngel |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
Средствами windows можно, конечно. Но это не очень хорошее решение проблемы. Придумал, такую вещь, как актуальный месяц. Тоесть администратору, вручную, нужно будет "закрывать" текущий месяц. При вводе данных проверка: if(месяц внесения записи =< закрытый месяц OR месяц внесения записи > (закрытый месяц + 2)) Как видно из условия, данная проверка, позволяет так - же запретить вносить данные на следующий месяц. Например, закрытый месяц: 08.2008 Вносить данные можно в: 09.2008 А так - как 08.2008 + 2 = 10.2008 тоесть следующий месяц, данные вносить тоже нельзя. Ну а если администратор забыл закрыть текущий месяц, это его проблемы... Еще, неплохо - бы получать дату с сервера, только как это сделать!? Есть еще какие - либо идеи!? Это сообщение отредактировал(а) freshAngel - 1.11.2008, 19:29 |
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
freshAngel, создай на удаленном компьютере простой сервер. А в своей программе клиент, и делай запрос к тому серверу по поводу даты. Можно еще не напрямую коннетится к базе Access, а через посредника.
Добавлено через 7 минут и 58 секунд Может быть можно средствами апи узнать дату на чужом компьютере без сервера. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |