Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/1049: Рейтинг темы: голосов - 1049, средняя оценка - 4.80
БурундукЪ
9557 / 2560 / 83
Регистрация: 17.02.2009
Сообщений: 10,364
1

Делимся наработками

03.11.2009, 11:04. Просмотров 190123. Ответов 133
Метки нет (Все метки)

в этой теме предлагаю выкладывать интересные наработки по акцессу...

зы. в дальнейшем на основе их можно будет создать темы "важное"

Добавлено через 45 секунд
ззы. флуд и спам в этой теме будет награжден красными карточками
15
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2009, 11:04
Ответы с готовыми решениями:

Для рубрики "Делимся наработками", добить БД поставка-сделка авто
День добрый, форумчане. Хочу довести до ума БД, чтобы добавить в раздел форума...

Строковый тип данных. С наработками. Работает, но не верно
Написать программу определения в заданной строке номера первого по порядку...

Кто занимался работой с timer поделитесь пожалуйста наработками интеренсыми
Например есть форма и на форме кнопка закрыть нажимая кнопку закрыть идет...

Делимся.
Доброго времени суток всем посетителям этой темы!=) Хочу попросить вас...

Делимся знаниями по С++
По вашему зачем нужна виртуальная функция в программе? Какой от нее толк если...

133
alvk
Эксперт MS Access
5690 / 3579 / 185
Регистрация: 12.08.2011
Сообщений: 9,255
18.08.2018, 10:27 121
Кирпичики помню, 10 лет назад их изучал Хорошая подборка.
1
Eugene-LS
Нарушитель
Эксперт MS Access
3597 / 2000 / 375
Регистрация: 05.10.2016
Сообщений: 5,513
18.08.2018, 12:29 122
Цитата Сообщение от alvk Посмотреть сообщение
Кирпичики помню, 10 лет назад их изучал Хорошая подборка.
Приятно читать такое автору всегда.
Ну просто мёд на сердце.
Спасибо на добром слове.
(А всё Пух виноват - сдал меня с потрохами)
1
Silur
26 / 28 / 1
Регистрация: 16.01.2014
Сообщений: 38
28.08.2018, 15:06 123
Автоматическое подключение внешних таблиц

Для чего разделяют базы? Для того, чтобы при модификации кода, разработке новых форм и отчетов можно было легко заменить файл с кодом и оставить базу с таблицами нетронутой. (Разбиение производится так же при построении сетевых систем, но это мы оставим в стороне)
После разделения получаются два файла, один из них будет иметь старое имя и в нем будет содержаться програмный код, запросы, формы, отчеты, а другой будет иметь имя "ИмяБазы_be.mdb" или "ИмяБазы_be.accdb" (расширение зависит от версии файла), и в нем будут содержаться таблицы с данными.
Предлагаемый пример позволяет автоматизировать подключение базы с таблицами к базе с кодом, а не возиться с ручным подключением таблиц при смене размещения программы или при получении новой версии. Необходимо соблюдать только одно условие: файл с кодом и файл с таблицами должны находится в одном разделе. Теперь достаточно макрос autoexec вставить функцию fnConnectCureFolderCheck() и программа сама найдет базу с таблицами и подключит все таблицы, находящиеся в базе.
Примечание: функция fnConnectCureFolderCheck() отличается от функции fnConnectCureFolder() наличием блока контроля предыдущего подключения.
Ограничения: такой способ не годится для сетевых версий программ, т.к. в этом случае база с таблицами располагается на сервере и требуется явно указать путь к ней. Хотя саму подпрограмму подключения всех таблиц из указанной базы можно использовать.

В приложении содержатся два примера: для формата MDB (Access 2000) и формата ACCDB. Если место не менялось, то происходит контроль подключения. Функцию перелинковки всех связанных таблиц можно отключить для ускорения запуска программы
4
Вложения
Тип файла: rar sd_TestTbl_v12.rar (125.3 Кб, 18 просмотров)
Silur
26 / 28 / 1
Регистрация: 16.01.2014
Сообщений: 38
29.08.2018, 11:35 124
И ещё немного о подключении таблиц из других баз.

Программный модуль, облегчающий подключение таблиц из внешних баз

Возможности:
можно подключать произвольное число баз и таблиц (в пределах разумного)
можно сохранять выбранные подключения/линковки
можно линковать как все, так и отдельные таблицы из выбранной базы
можно присваивать линкованным таблицам новые имена
можно осуществлять подключения/отключения как всех сразу так и отдельных баз
Список таблиц подключаемой базы программа создаёт автоматически (по нажатию кнопки)

Краткая инструкция в приложенном примере. Пример дан в форматах MDB и ACCDB

Дополнительно приложен пример Крамарева Владимира. Взят на сайте Новиков Сергея в далёком 2002 году.
Описание в архиве.

P.S. Интерфейс красивее чем у меня. Завидую. Делает практически то же что у меня. Пример как-то затерялся у меня в архивах. Пришлось разрабатывать свой. И только через пару лет после создания своего модуля я наткнулся на этот пример. Ещё одно доказательство того, что появление "новых" велосипедов - недостаточная информированность разработчиков.

"Всё уже украдено до нас" операция Ы (с)
3
Вложения
Тип файла: rar sd_Connect_v21.rar (200.8 Кб, 19 просмотров)
Тип файла: zip CnTbl.zip (235.4 Кб, 20 просмотров)
Silur
26 / 28 / 1
Регистрация: 16.01.2014
Сообщений: 38
23.09.2018, 22:54 125
И снова новая версия модуля подключения.

Теперь модуль может работать с запароленными базами данных, а так же в 32-х и 64-х битных версиях Access.
4
Вложения
Тип файла: rar sd_Connect_v41.rar (182.8 Кб, 24 просмотров)
RufusXA
0 / 0 / 0
Регистрация: 29.10.2018
Сообщений: 2
29.10.2018, 15:33 126
Цитата Сообщение от andrew_main Посмотреть сообщение
Доброе время суток.
Я чуствую себя тупицей, но...
на стр 2 пользователь dinX выложил БД учет СИ.
Я никак не могу запустить, не принимает пароль, потому что не могу сменить путь ко второй части БД - серверной.
Как пройти это момент?
 Комментарий модератора 
сообщение 28 от 22/06/2012 --еле нашла ,через импорт в новую пустую базу отключила autoexec, затем проверку кодированного пароля

Как этим пользоваться?
Может быть кто-то выложит жизнеспособный вариант? Пожалуйста

 Комментарий модератора 
открыть --открыла, но за 2 часа не смогла заставить работать(ошибки компиляции)
0
RufusXA
0 / 0 / 0
Регистрация: 29.10.2018
Сообщений: 2
31.10.2018, 15:32 127
Как-будто бы ожило творение из 2012го...
Но я не шарю в Accesse и прошу помощи с этим справиться
Пароль такой же - 12345
0
Миниатюры
Делимся наработками  
Вложения
Тип файла: rar 181031_Клиент002.rar (790.9 Кб, 21 просмотров)
Silur
26 / 28 / 1
Регистрация: 16.01.2014
Сообщений: 38
02.11.2018, 15:31 128
Попробуй вот этот вариант. У меня открывается нормально в 32-х разрядном Access. Сделал однопользовательской. Лень было делать многопользовательской. Ставлю: Завод 3, Admin Admin, ну и пароль тот же 12345.
0
Вложения
Тип файла: rar База Данных СИ.rar (1.03 Мб, 11 просмотров)
Silur
26 / 28 / 1
Регистрация: 16.01.2014
Сообщений: 38
04.11.2018, 08:58 129
Дополнительно. Такое сообщение бывает, если не подключены таблицы. Вообще то должно было подключаться автоматически.
1. Выполнить вручную. Открыть панель навигации (F11 или запуск с Shift). Открыть модуль basConnect, вручную запустить функцию fnConnectCureFolder(). Можно работать.
2. В макросе autoexec функцию fnConnectCureFolder() поднять в списке вверх на 3 место. Подправить написание (оказалась отсутствует закрывающая скобка в вызове.

Ну и версия с исправленным autoexec
0
Вложения
Тип файла: zip База Данных СИ 3.zip (1.86 Мб, 9 просмотров)
Silur
26 / 28 / 1
Регистрация: 16.01.2014
Сообщений: 38
04.11.2018, 09:48 130
Плохо, что сообщения можно менять только в течении 5 минут. Хотел подправить, но уже нельзя.

ProgressBar без ProgressBar-a

Взято очень давно с сайта http://www.jsilver.newmail.ru/ (страничка Джона Сильвера) Сайта такого уже нет. Программа была сделана в Access 97. Я её преобразовал в формат Access 2000.

Попробуйте, Вам понравится. Всё сделано средствами Access. Никаких ActiveX.

Дополнительно.

Последняя версия модуля sd_Connect. Добавлена возможность менять путь и пароль для файлов с таблицами. Таблицы SystemBases и SystemTables переименованы в USystemBases и USystemTables. Теперь они не видны при обычных настройках панели навигации. Чтобы их увидеть необходимо поставить флажок в поле "Показывать системные объекты"
В файле с суффиксом "i" поизвращался над интерфейсом. Сделал цветные овальные кнопки. Смотрится вполне неплохо.
0
Вложения
Тип файла: zip ProgrBarKidding.zip (20.7 Кб, 14 просмотров)
Тип файла: zip sd_Connect_v43.zip (518.8 Кб, 9 просмотров)
Eugene-LS
Нарушитель
Эксперт MS Access
3597 / 2000 / 375
Регистрация: 05.10.2016
Сообщений: 5,513
04.11.2018, 13:36 131
Цитата Сообщение от Silur Посмотреть сообщение
Взято очень давно с сайта http://www.jsilver.newmail.ru/ (страничка Джона Сильвера) Сайта такого уже нет.
Ну уж действительно совсем давно, что и почти не правда.
Я был владельцем данного ресурса.
Его развитие и продолжение можно теперь найти тут: http://msa.polarcom.ru/
... сколько лет то прошло ... аж страшно ...

Silur, спасибо за приятные воспоминания, тут уместно добрым словом помянуть сайт Сергея Новикова (aka NSA) которого уже нет (сайта).
1
Silur
26 / 28 / 1
Регистрация: 16.01.2014
Сообщений: 38
04.11.2018, 22:49 132
"Ничто на Земле не проходит бесследно..."

Архивная версия сайта Новикова Сергея - MS Access 97 со всех сторон с примерами

Да, Евгений, мы с Вами заочно знакомы. На Вашем сайте есть и мои примеры. Вот хотя бы Пример использования модуля класса для работы с внешними устройствами (побитная обработка данных)
1
Silur
26 / 28 / 1
Регистрация: 16.01.2014
Сообщений: 38
24.11.2018, 16:01 133
Модуль авторизации

Данный модуль имеет 3 вида авторизации
1. без авторизации
2. Windows авторизация
3. авторизация по Login/Password
Выложен он будет в режиме "Без авторизации"

Переключать режимы авторизации может администратор программы (БД). Для этого надо нажать кнопку "Сервис" (ключ и молоток) Появляется форма "Сервис" с двумя кнопками (пока).
Нажимаем на кнопку "Настройка программы". Для режима без авторизации программа запросит пароль администратора. При других режимах программа проверит админские привилегии пользователя.

ВНИМАНИЕ! Сейчас для администратора установлен пароль "121212". Для всех остальных пользователей пароль не установлен. Логин администратора всегда "admin". Этот логин зарезервирован за системой. Пользователи не должны его использовать.

Вводим пароль. Откроется форма "Настройки программы". Выбираем нужный режим и закрываем форму.
Тут можно сменить и пароль администратора, нажав кнопку "Смена пароля текущего пользователя". У Вас снова будет запрошен пароль администратора, При правильном вводе будет предложено ввести новый пароль. Так меняется пароль администратора в режиме "Без авторизации"

Добавлять, удалять пользователя и изменять его параметры может только администратор БД (или пользователь "admin", который является администратором по умолчанию). Для этого в параметрах пользователя необходимо установить флажок "Администратор"
А вот пароль устанавливает сам пользователь.

Для изменения параметров пользователей нажмите на кнопку "Менеджеры" (два профиля). Откроется форма со списком пользователей. Внизу есть кнопки "Добавить", "Изменить", "Удалить".
Выберите пользователя и нажмите на кнопку "Изменить". Откроется соответствующая форма. Перейдите на закладку "Авторизация".
Там находятся два поля "Логин Windows" и "Логин программы"
В поле "Логин Windows" вносится логин под которым пользователь регистрируется в Windows. Предназначен для режима Windows авторизации.
В поле "Логин программы" вносится логин для режима авторизации Login/Password. При создании нового пользователя пароль всегда пустой. Чтобы его изменить, необходимо при заданном режиме "Авторизация по Login/Password" войти в программу по своим логином. В поле "Пароль" ничего не вводить. Затем выбрать режим "Сервис" и "Смена пароля текущего пользователя". Введите новый пароль и подтвердите его. Пробелы вводить нельзя. Регистры в пароле учитывается.
Кроме того там есть кнопка для сброса пароля. Если пользователь забыл свой пароль, то руководитель может его сбросить.

Логины и пароли пользователей хранятся в таблице UserManager. Режим авторизации и пароль администратора хранятся в таблице tbl_SetProgramm.

При "Windows авторизации" программа при запуске просматривает поле LoginWin в таблицы UserManager. В случае совпадения входит в программу под найденным логином.

При авторизация по Login/Password программа запрашивает логин и пароль пользователя.

Попробуйте, как работает и выскажите своё мнение.

Заданные мной логины для программы
Иванов - Ivan
Петров - Peter
Сидоров - Sidor
Александров - Alex
Фёдоров - Fedor
Ефимов - Efim
Сергеев - Serg
Регистр для логина неважен. т.е. Alex=alex=aLeX

Пользователь Иванов - Ivan указан как администратор БД.

P.S. Ещё раз напоминаю, пароль для администратора сейчас установлен 121212.

В приложении - описанный модуль и доработанная функция InputBox для ввода паролей (я не автор доработки, я её только дописал под 64 битную версию Access)
0
Вложения
Тип файла: rar Authorization_0.5.5.rar (122.1 Кб, 10 просмотров)
Тип файла: rar InputBoxEx.rar (17.4 Кб, 9 просмотров)
amd48
435 / 161 / 27
Регистрация: 18.05.2016
Сообщений: 425
Записей в блоге: 1
29.11.2018, 21:37 134
Создадим таблицу с названием dual (пасхалочка из Oracle) с одним текстовым полем, которое назовём любым образом. В таблицу вставим одну запись с текстом " " (т.е. просто один пробел)
Теперь эту таблицу можно использовать в запросах в качестве заглушки, когда нам надо ввести явное значение для какого-нибудь поля. Вместо dual можно использовать MSysObjects, но dual пишется короче и запомнить проще. И в этом контексте использования гуглится гораздо чаще.

Один селект без явного указания источника MSA ещё может обработать. Типа такого:
SQL
1
SELECT dateserial(1970,1,1)
А два селекта подряд типа этого он выполнять уже отказывается:
SQL
1
2
3
SELECT dateserial(1970,1,1)
UNION
SELECT dateserial(1980,1,1)
А с таким проблем уже нет:
SQL
1
2
3
SELECT dateserial(1970,1,1) FROM dual
UNION
SELECT dateserial(1980,1,1) FROM dual
А теперь
Создадим массив цифр от 0 до 9
SQL
1
SELECT 0 AS n FROM dual UNION SELECT 1 FROM dual UNION  SELECT 2 FROM dual UNION SELECT 3 FROM dual UNION SELECT 4 FROM dual UNION SELECT 5 FROM dual UNION SELECT 6 FROM dual UNION SELECT 7 FROM dual UNION SELECT 8 FROM dual UNION SELECT 9 FROM dual
Получаем 10 записей с цифрами от 0 до 9. Назовём этот запрос "nn"

Создадим последовательность календарных дней от 01.01.1970 до 24.01.2082
Такого календарика на 40932 дня должно хватить для большинства задач реальной жизни
SQL
1
2
3
4
5
6
7
8
9
10
11
SELECT * FROM (
SELECT dateserial(1970,1,(n1.n&n2.n&n3.n&n4.n)+1) AS dt FROM nn AS n1,nn AS n2,nn AS n3,nn AS n4 
UNION 
SELECT dateserial(1997,5,(n1.n&n2.n&n3.n&n4.n)+1) FROM nn AS n1,nn AS n2,nn AS n3,nn AS n4 
UNION 
SELECT dateserial(2024,9,(n1.n&n2.n&n3.n&n4.n)+1) FROM nn AS n1,nn AS n2,nn AS n3,nn AS n4 
UNION 
SELECT dateserial(2052,1,(n1.n&n2.n&n3.n&n4.n)+1) FROM nn AS n1,nn AS n2,nn AS n3,nn AS n4 
UNION 
SELECT dateserial(2079,5,(n1.n&n2.n&n3.n)+1) FROM nn AS n1,nn AS n2,nn AS n3
) ORDER BY 1
5847 воскресений за этот период
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT dt FROM (
SELECT dateserial(1970,1,(n1.n&n2.n&n3.n&n4.n)+1) AS dt FROM nn AS n1,nn AS n2,nn AS n3,nn AS n4 
UNION 
SELECT dateserial(1997,5,(n1.n&n2.n&n3.n&n4.n)+1) FROM nn AS n1,nn AS n2,nn AS n3,nn AS n4 
UNION 
SELECT dateserial(2024,9,(n1.n&n2.n&n3.n&n4.n)+1) FROM nn AS n1,nn AS n2,nn AS n3,nn AS n4 
UNION 
SELECT dateserial(2052,1,(n1.n&n2.n&n3.n&n4.n)+1) FROM nn AS n1,nn AS n2,nn AS n3,nn AS n4 
UNION 
SELECT dateserial(2079,5,(n1.n&n2.n&n3.n)+1) FROM nn AS n1,nn AS n2,nn AS n3
)
WHERE weekday(dt,2)=7
 ORDER BY 1
и MSA даже не поперхнулся. Экономьте дисковое пространство
1
29.11.2018, 21:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2018, 21:37

Делимся vpn)
Ребят, накидайте vpn серверов работающих на просторах СНГ.

Делимся опытом
Добрый день! Давайте делиться мыслями о разработках, которые прямо не...

FX-6300, делимся опытом
Всем здрасте. Вот хотел спросить у вас, кто чего добился в разгоне 6300? Я...


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

Или воспользуйтесь поиском по форуму:
134
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru