С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 6

Генерация паролей с занесением в таблицу пользователей

26.05.2009, 18:47. Показов 4875. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача: Занести в каждую запись таблицы [Таблица] в поле [Код] случайный набор из 5-8 символов с использованием Запроса на обновление.
Генерация случайного набора из 5-8 символов - готова, в Запросе работает нормально (в основе - встроенная функция Rnd() и шаблонная последовательность разрешенных символов).
Однако, Access оптимизирует вызовы функций в запросах, и в связи с этим генерирует случайные наборы символов один раз - перед запуском Запроса. Результат - набор чисел случайный, но повторяется во всех записях.
Пробовал варианты:
- с использованием даты-времени,
- с включением в формулу генерации значения поля-счетчика с параметром "случайное число".
- и др.
Результат неудовлетворительный: могут быть отрицательные числа, длина значения поля изменяется, значения не включают буквы и др. лабуда. К тому же все это требует многих наворотов и получатся слишком путано.
"Нутром" чую, что должно быть простое решение, как заставить Запрос рассчитывать значение поля индивидуально для каждой записи.
В Инете нашел, что надо выполнить команду Randomize перед выполнением запроса, но не соображу как это организовать.

HELP.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2009, 18:47
Ответы с готовыми решениями:

Шифрование паролей перед занесением в базу данных
для авторизации на ресурсе используется пара логин+пароль, но предположим, что бд могут тупо слить. значит, для того, чтобы сохранить...

Сложности с занесением информации в главную таблицу
Имеется бд все таблицы связаны Главная таблица Karta приняла такие типы данных Как в делфи вносить текстовые данные в эту таблицу...

решение задачи с занесением данных в таблицу, создание анимации в Pointe
Добрый день!!! Помогите начинающему программисту написать прогу для Excel i Power Point. 1. Текст задачи: за какое время вскипит вода в...

16
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
26.05.2009, 19:02
как запрос запускается?
точнее, чем?
0
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 6
26.05.2009, 19:22  [ТС]
Пока вручную - для разработки принципа.
Дальше - можно макросом, можно кнопкой из формы..........
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
26.05.2009, 19:29
если макросом, то
сделать в модулях аксовых процедуру или функцию
типа
Visual Basic
1
2
3
Public Sub Randomization()
    Randomize 
end Sub
если кнопкой, то
Randomize
прописать перед вызовом запроса в коде ВБА.

если есть форма, которая открывается, при загрузке базы, то по событию Form_Load
1
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 6
27.05.2009, 10:41  [ТС]
Спасибо!
Подумаю завтра, сейчас пора пилить домой - устал, глаза уже на этот ящик не смотрят....................

Добавлено через 15 часов 7 минут 26 секунд
Не выходит каменный цветок...............

Код VBA для кнопки вызова запроса:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Êíîïêà16_Click()
On Error GoTo Err_Êíîïêà16_Click
 
    Dim stDocName As String
   
    stDocName = "RE-PASS-2"
    
    Randomize
    
    DoCmd.OpenQuery stDocName, acNormal, acEdit
 
Exit_Êíîïêà16_Click:
    Exit Sub
 
Err_Êíîïêà16_Click:
    MsgBox Err.Description
    Resume Exit_Êíîïêà16_Click
    
End Sub
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
27.05.2009, 12:33
во-1х, имя "RE-PASS-2" использует знаки минус, поэтому нужно писать так "[RE-PASS-2]"
во-2х, можно код в студию (то что касается рандомизации, хотябы)
0
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 6
27.05.2009, 15:15  [ТС]
1. Предложенная конструкция "[RE-PASS-2]" не работает. Access выдает сообщение об ошибке "Приложению ХХХХ не удается найти объект '[RE-PASS-2]' ".
2. После переименования запроса [RE-PASS-2] ---> [REPASS2] и соответствующего изменения кода кнопки, Access выдает сообщение об ошибке "Приложению ХХХХ не удается найти объект '[REPASS2]' ".
3. Конструкция "RE-PASS-2" ошибок не вызывает и запрос запускается.

ВЫВОД: Использование в имени запроса символа "-" не является нарушением соглашений об именах объектов базы данных Access и не приводит к ошибкам компиляции.

4. Рандомизация: Запрос - "Обновление:" --->
SQL
1
Mid("0123456789abcdefghijklmnopqrstuvwxyz";36*Rnd())+1;1)+Mid("0123456789abcdefghijklmnopqrstuvwxyz";36*Rnd())+1;1)+
....... (до необходимой длины поля).
Результат - например "zv2yd" во всех записях.
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
27.05.2009, 17:07
1.
Цитата Сообщение от Colonel Посмотреть сообщение
ВЫВОД: Использование в имени запроса символа "-" не является нарушением соглашений об именах объектов базы данных Access и не приводит к ошибкам компиляции.
я и не говорил, что является нарушением )))

Не по теме:

оказывается квадратных скобок не нужно (давно с такой гадостью как аксовые запросы не работал)



2.кста, в запросе
Цитата Сообщение от Colonel Посмотреть сообщение
Mid("0123456789abcdefghijklmnopqrstuvwxy z";36*Rnd( ))+1;1)+Mid("0123456789abcdefghijklmnopq rstuvwxyz" ;36*Rnd())+1;1)
лишняя скобка на закрытие

теперь о рандомизации работающей )))
1. создать в модулях акса функцию, такого типа
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Function random()
Randomize
random = Left(Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1), 10)
End Function
2. создать запрос
SQL
1
SELECT random();

Не по теме:

3. этвсё

0
7 / 6 / 1
Регистрация: 15.05.2009
Сообщений: 14
27.05.2009, 19:05
Цитата Сообщение от Colonel Посмотреть сообщение
как заставить Запрос рассчитывать значение поля индивидуально для каждой записи
Для этого достаточно передать в функцию уникальное значение для каждой записи (например счетчика). Оно в функции не понадобится, но заставит вычислить функцию для каждой записи.
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
27.05.2009, 19:07
Цитата Сообщение от Lukas Посмотреть сообщение
Для этого достаточно передать в функцию уникальное значение для каждой записи (например счетчика).
зачем такие сложности? и так работает. проверено єлектроникой
0
7 / 6 / 1
Регистрация: 15.05.2009
Сообщений: 14
27.05.2009, 19:36
Если не лень, прицепить файл БД с запросом и функцией без аргументов, хочется проверить, потому как у меня с вашей функцией присваивает одно значение для всех записей. (У автора топика тоже).
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
27.05.2009, 19:41
Цитата Сообщение от Lukas Посмотреть сообщение
Если не лень, прицепить файл БД с запросом и функцией без аргументов, хочется проверить, потому как у меня с вашей функцией присваивает одно значение для всех записей.
упс. кто сказал . а вы все почитали или местами?

Не по теме:

?????????????????????????????как любят наши юзвери писать


вот базуха proba.zip, в аксе2000 заделанная
0
7 / 6 / 1
Регистрация: 15.05.2009
Сообщений: 14
27.05.2009, 19:53
Для тех кто не читает задачи автора топика:

Что нужно автору пост№1 : Занести в каждую запись таблицы [Таблица] в поле [Код] случайный набор из 5-8 символов с использованием Запроса на обновление.

И что в прицепленной базе?
Запрос1: SELECT random();
Автор топика будет счастлив. Все задачи решены.
0
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 6
27.05.2009, 20:18  [ТС]
То Бурундук.

1. Благодарю.

2. В реально действующем запросе лишней скобки нет. Данная скобка - от удаленных повторений блока генерации очередного случайного символа.

3. После переноса блока рандомизации в тело модуля и изменении Запрос - "Обновление:" ---> random() результат обновления поля таблицы остался без изменений.

ВЫВОД: Выполнение функции random() производится ACCESSOM ОДНОКРАТНО перед выполнением занесения результата в каждую запись.

Добавлено через 18 минут 12 секунд

Не по теме:

Дальнейшее обсуждение переносится на завтра.
Спасибо.
20:20 мск RU

0
7 / 6 / 1
Регистрация: 15.05.2009
Сообщений: 14
27.05.2009, 20:25
Вот два запроса, один без передачи аргумента в функцию, другой с передачей.
Результаты в таблице в полях Код и Код2 соответственно.
В саму функцию добавил Optional аргумент.
Вложения
Тип файла: zip проба.zip (14.6 Кб, 78 просмотров)
1
0 / 0 / 0
Регистрация: 26.05.2009
Сообщений: 6
28.05.2009, 10:47  [ТС]
То LUKAS:

Большое спасибо за помощь и потраченное личное время !!!

Кинул первый взгляд на решение - все хорошо. Посмотрю более детально и сообщу результат позже!
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
28.05.2009, 11:58
здесь https://www.cyberforum.ru/ms-a... 36931.html про уникальные значения в таблицах Акса
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2009, 11:58
Помогаю со студенческими работами здесь

Генерация паролей
Требуется по запросу выдавать N различных паролей длиной M символов, состоящих из строчных и прописных латинских букв и цифр, кроме тех,...

Генерация паролей
Требуется по запросу выдавать N различных паролей длиной M символов, состоящих из строчных и прописных латинских букв и цифр,...

Генерация паролей
Здравствуйте, есть код: <form method="post"> <input type="text" name="number" value="10"> <input type="submit"...

Генерация паролей
Возникла проблема с рандомной реализацией генерации паролей. По идее символы при генерации должны были браться с таблицы ASCII. Но при...

Генерация паролей
Помогите, пожалуйста, уважаемый программисты!! сочно нужна простенькая задачка (текст) по генерации паролей!!! к сожалению нет...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru