Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
ange

Решить проблемы: пользователь заходить несколько раз.

15.03.2010, 11:50. Показов 1002. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день. У меня вот такой вопрос. Есть программа, с которой работают по сети пользователи через авторизацию. Необходимо запретить повторный вход пользователя, логин которого уже занят. Так, например запустил и зашел в прогу Сидоров Вася, потом вышел в другой кабинет и там опять пытается запустить ее под своим логином. Это надо запретить. Я пыталась создать в базе таблицу с полем Загрузка. То есть если Сидоров зашел, то значение устанавливается в True, вышел в False. Но здесь возникают проблемы с зависанием машины, глюканием проги, вообщем, не всегда ведь выход из программы может быть корректным. В этом случем Сидоров навсегда остается заблокированным. Думала поставить таймер и каждые предположим пять секунд закидывать в табл. время, а потом при проверке проверять, как давно было обновлено это поле и если больше чем 5 сек назад, то считаю, что выход некорректен и запускаю Сидорова без проблем. Но и тут возникают траблы - если на машине 1 и машине 2 установлено не идентичное время, то когда машина1 работает нормально, а время у машины 2 бежит вперед, то получается разница более чем в пять сек. Вообщем, вот так. Может быть кто посоветует что-нибудь другое?
Заранее спасибо за помощь!!!!!
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2010, 11:50
Ответы с готовыми решениями:

Вывести числа, которые встречаются в массиве несколько раз / один раз
дан массив состоящий из 100 целых чисел. а)Вывести все числа,которие встречаются в етом массиве несколько раз б)Вывести все...

Компьютер несколько раз отключался после чего в очередной раз потух и больше не включался.
У меня возникла такая проблема. Компьютер несколько раз отключался после чего в очередной раз потух и больше не включался. При последнем...

Сделать так, чтобы можно было добавить несколько одинаковых блюд, не кликая несколько раз
Ребята, подскажите! На форме2 надо сделать так, чтобы можно было добавить несколько одинаковых блюд, не кликая несколько раз, а чтобы в...

8
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
15.03.2010, 12:13
используй время на сервере SQL, а не на машинах пользователей
0
ange
15.03.2010, 12:39
а как мне узнать время на сервере? разве что писать процедуру в SQL сервере?
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
15.03.2010, 12:57
в твоей таблице, где ты хранишь логины пользователей, заведи поле LoginTime со значением по-умолчанию GETDATE()
0
Gloom
15.03.2010, 13:13
Лучше сделай так:
При старте проверяем - существует ли временная таблица ##Сидоров, ##Петров, etc - т.е. с именем пользователя. Если не существует, значит всё ОК - можем работать - и первым делом эту самую таблицу и создадим (лучше всё это в ХП засунуть). Ну а если существует, значит пользователь уже залогинился - не пустим его.
И отслеживать ничего не надо - при разрыве соединения сервер сам удалит временные таблицы...
ange
15.03.2010, 13:28
хорошо, создание временной таблицы как я предполпгпю так
db.execute 'CREATE TABLE #tmpA(id INT, value FLOAT)'
а как проверить, есть ли уже такая таблица или нет?????
Gloom
15.03.2010, 13:52
Проверить существование таблицы можно так, например:
select object_id('tempdb..##mytable')--если не существует, то вернёт NULL

И имя таблицы должно начинаться обязательно с ##, иначе её будет видно только в текущем соединении...
ange
15.03.2010, 14:04
Пишу процедуру

CREATE PROCEDURE RunApp AS

begin
if (not object-id ('tempdb..##Сидоров') is NULL)
'есть такая таблица, как-то должна вернуть в прогу ложь
'(завершение проги)
else
'нет такой таблицы - создаю
CREATE TABLE ##Сидоров(id INT)
'как то должна вернуть в прогу истину
'(загружаем польз-ля)
end

А вот как передать это в VB???? Я очень извиняюсь, но до сих пор никогда не использовала процедуры
Messir
16.03.2010, 01:43
Мой вариант:
Прога состоит из двух частей - клиента и сервера. Сервер запущен всегда (на компе-сервере). Когда пользователь запускает клиента, то клиент коннектится к серверу. Сервер проверяет, не залогинен ли такой пользователь, и если да, то посылает клиенту ответ, что нельзя подключиться и разрывает соединение (клиент, соответственно, отрубается). Если же не залогинен, то сервер дает 'добро' и регистрирует где-то (в той же БД например), что пользователь залогинен. Клиент, получив разрешение, начинает дальнейшую работу. Если же клиент отрубается, то сервер улавливает разрыв соединения и вычеркивает пользователя из базы данных (клиент соединен с сервером на протяжении всего времени работы).
Я бы делал так... Хотя не настаиваю на оптимальности этого варианта.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2010, 01:43
Помогаю со студенческими работами здесь

Три проблемы. Помогите решить
Здравствуйте,люди добрые! У меня целых три проблемы.... 1)Недавно купили новый системник, поставили винду. Включаю компьютер,выходит на...

XML-XSL проблемы которые трудно решить
Помогите пожалуста есть xml <DECLARATION_TYPE>1</DECLARATION_TYPE> <DECLARATION_TYPE>2</DECLARATION_TYPE> надо вместо 1 в xsl...

Решить несколько задач
30. В заданном дереве найти поддерево двоичного поиска с максимальным количеством элементов. 4. Найти длину кратчайшего цикла в графе. ...

Решить несколько уравнений
Ребят помогите пожалуйста бедному управленцу, мне срочно надо решить несколько задач и уравнений в VBA, а я вообще ни чего не шарю в компе...

Решить несколько задач
Умные люди помогите девушке с заданиями пожалуйста (( в архиве в вордовских доках задания , дабы не создавать огромный пост с всеми ими ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru