|
19318 / 2626 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
|
|
Делимся наработками03.11.2009, 11:04. Показов 488689. Ответов 282
Метки нет (Все метки)
в этой теме предлагаю выкладывать интересные наработки по акцессу...
зы. в дальнейшем на основе их можно будет создать темы "важное" Добавлено через 45 секунд ззы. флуд и спам в этой теме будет награжден красными карточками
17
|
|
| 03.11.2009, 11:04 | |
|
Ответы с готовыми решениями:
282
Для рубрики "Делимся наработками", добить БД поставка-сделка авто Обсуждение поста #137 в теме "Делимся наработками". Программный модуль контроля ресурсов принтеров сети. Строковый тип данных. С наработками. Работает, но не верно |
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|||||||||||||||||||||
| 14.07.2025, 13:32 | |||||||||||||||||||||
|
Как повернуть, обрезать, масштабировать или отразить изображение?
Вот четыре наиболее распространённых действия обрезка, переворот, поворот и изменение размера (будет ещё больше). Вращать
Взято тут Подсказал АЕ В примере реализовано поворот и отображение
2
|
|||||||||||||||||||||
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 22.07.2025, 11:42 | |
|
Размер графического файла
Продолжаю выкладывать примеры с графикой. Новая версия моего примера. Теперь добавлено вычисление размера файла в пикселях (не твипах). Работает с форматами BMP, JPG, GIF, PNG. Формат базы MDB. Проверялся в Access 2003 и Access 2019 (32 и 64 бит) Файл тяжеловат. Много API. Можно упростить. Часть кода позаимствовал здесь
1
|
|
|
13254 / 5933 / 1526
Регистрация: 05.10.2016
Сообщений: 16,598
|
||
| 30.07.2025, 06:48 | ||
|
На MSA 2024 x64 выдал ошибку компиляции: Подправил по своему скромному разумению.
1
|
||
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 31.07.2025, 14:22 | |
|
Продолжаю выкладывать примеры работы с графикой.
Поскольку здесь главное - работа с графикой, то я убрал из примера всё, что связано с выбором картинки (открытие файла). Пример сразу полегчал. Исчезла куча вызовов API. Вместо определения размера файла через API я воспользовался библиотекой Shell.ddl. Для этого в референсах подключил Microsoft Shell Controls And Automation Кроме того добавил определение размера файла изображения в байтах.
1
|
|
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
||||||
| 01.08.2025, 12:31 | ||||||
|
Как запретить закрытие задачи (для VB и VBA) по Alt+F4
Иногда (а у меня довольно часто) бывает необходимо заставить пользователя правильно закрыть приложение: т.е. последовательно закрыть все открытые формы, а потом и само приложение специальной кнопкой (или пунктом меню) на которой весит команда DoCmd.Quit. Но некоторые пользователи имеют дурную привычку закрывать приложение при помощи крестика оконного меню (справа вверху). Или при помощи комбинации клавиш Alt+F4. Как заблокировать кнопку закрытия окна Access можно прочитать в статье Disable кнопку закрытия окна MsAccess. А вот с блокировкой закрытия Access через Alt+F4 пришлось немного повозиться. Поиск в Интернете привел меня на сайт VB Forums . Здесь в топике Disable ALT-F4 пользователь под ником Lord Orvell предложил код для блокировки сочетаний клавиш Ctrl+Esc, Alt+Tab, Alt+Esc для программ на VB. Lord Orvell писал: well, here's some code for vb6. You didn't specify your vb but here you go. It's disables alt-esc and then windows key. You can see how it works though and use it to block ANY key. Basically you reroute all keypresses through the sub in the module and prevent ones you don't like from getting back to the OS. Вот этот код.
Продолжение следует
0
|
||||||
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
||||||
| 01.08.2025, 12:38 | ||||||
|
Продолжение
aka Бенедикт с сайта SQL.RU доработал предложенный код для использования его в программах Access VBA. Для работы требуется ОС Windows NT4 с SP 3 и выше.
комментарий, почему низкоуровневый клавиатурный хук, а не обычный Для отлова клавиатурных комбинаций в своём приложении более логичным и традиционным (совместимым) было бы использование функции SetWindowsHookEx с первым параметром, равным WH_KEYBOARD, а не WH_KEYBOARD_LL. Зачем, казалось бы, организовывать глобальный перехват и распозновать, в своём ли процессе произошло некое событие, когда можно организовать перехват в своём процессе? Ан нет. Выяснилось, что Access использует цикл обработки сообщений (message loop) с вызовом функции PeekMessage с флагом PM_NOREMOVE. Таким образом, пока сообщение (WM_KEYDOWN) не будет извлечено из очереди сообщений, на каждой итерации цикла обработки сообщений будет вызываться процедура-хук. Производительности VBA-шной процедуры в этом случае, видимо, недостаточно, Access просто "тонет", загрузка процессора 100%. Аналогичное поведение можно увидеть при сабклассинге некоторых Access-овских окон. Поэтому приходится искать альтернативные пути. В качестве приложения пример блокировки крестика закрытия окна Access
2
|
||||||
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 12.08.2025, 11:41 | |
|
Альтернатива использования типа поля "Вложение" в базах данных
--------------------------------------------------------------------------------------- Почему не стоит использовать тип данных «Вложение» в Microsoft Access Тип данных "Вложение", появившийся в Access 2007, позволяет пользователям вставлять файлы непосредственно в базы данных. Однако у этой функции есть существенные недостатки: Раздувание базы данных Использование полей для вложений приводит к быстрому увеличению размера базы данных. Каждый прикреплённый файл увеличивает размер базы данных на весь свой объём, и небольшая база данных быстро превращается в большую. Влияние на производительность Большие базы данных, созданные на основе полей "Вложения", могут негативно влиять на производительность, замедляя начальную загрузку, выполнение запросов и работу в целом. Сложное Взаимодействие Для программного управления полями "Вложения" требуется специальный код, что затрудняет вставку, извлечение и обработку вложенных файлов. Альтернатива -------------------------- Вместо использования полей для вложений рекомендуется хранить пути к файлам и их имена (включая расширения) в базе данных. Такой подход: - Уменьшает размер базы данных - Поддерживает более высокую производительность - Упрощает управление файлами и доступ к ним - Обеспечение совместимости со старыми системами Отказавшись от полей для вложений и используя вместо них пути к файлам, вы создадите более эффективную и производительную базу данных. Можно использовать два подхода - просто записывать в базу местоположение выбранного файла - копировать файлы в определённую папку, возможно общего доступа Пример Демонстрационная версия использует два тесно связанных подхода и включает все необходимые компоненты для написания кода (такие как выбор файлов, открытие файлов, удаление файлов и т. д.). Вы можете свободно изучать её и изменять в соответствии со своими требованиями. Пример выполнен в формате accdb Взято тут И ещё раз. Не используйте поля типа "Вложение" в своих базах! Их можно использовать, если вам нужно сохранить всего пару вложений, например логотипы и т. д
0
|
|
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 12.08.2025, 12:25 | |
|
Для любопытных Поле типа Вложение (Attachment). Описание и использование
Здесь описано, что такое поле Вложение и как с ним работать. Возможно позже я помещу эту статью в топик Написание статей. Там ей наверное самое место. Можно глянуть сюда
1
|
|
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 13.08.2025, 16:39 | |
|
Продолжаю выкладывать примеры работы с графикой.
Добавил преобразование форматов рисунков BMP, JPEG, GIF, TIFF, PNG.
2
|
|
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 15.08.2025, 08:49 | |
|
Вроде последнее действие над изображениями - масштабирование (изменение размеров)
Примечание. Хочу сказать, что для операций с графикой, таких, как масштабирование и конвертация, если Вы хотите получить качественное изображение лучше пользоваться графическими редакторами. Там больше настроек и методов конвертации и масштабирования. Но для большинства задач подходят и эти.
0
|
|
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 26.08.2025, 09:40 | |
|
ZoomBox
Бывает так, что есть текстовое поле, содержимое которого может варьироваться в широких пределах. От одного слова до нескольких предложений. На форме размещать большое поле может быть некрасиво, да и иногда нет под это места. Полосы прокрутки не всегда спасают. Лично я давно разработал специальную форму, состоящую из большого текстового поля и пары кнопок (""Принять" и "Отменить"), куда и вывожу содержание выбранного поля. Вызвать его можно или специальной кнопкой, расположенной рядом с полем, или дважды щёлкнув мышью на нужное поле. Выбор за разработчиком. И вот гуляя по интернету нашел похожий образец. Где взял - не помню. Автор кода - Terry Kreft, модифицирован Stephen Lebans. В отличии от моего решения, для выводимой информации можно выбрать фонт, размер и цвет. Рекомендую. Примечание. Необходимо подключить библиотеку Microsoft Scripting Runtime
0
|
|
|
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
|
|
| 27.08.2025, 04:30 | |
|
0
|
|
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 27.08.2025, 09:58 | |
|
0
|
|
|
788 / 67 / 4
Регистрация: 28.05.2015
Сообщений: 114
|
|
| 27.08.2025, 13:25 | |
|
Если бы при сокрытии окна Access
можно было бы управлять расположением штатного окна области ввода, то в таком нештатном не было бы необходимости.
0
|
|
|
Мы один, давай на "ты"
3858 / 1400 / 348
Регистрация: 16.06.2016
Сообщений: 3,300
|
|
| 27.08.2025, 17:59 | |
|
0
|
|
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
||||||
| 29.08.2025, 13:38 | ||||||
|
Дополнение к посту Как запретить закрытие задачи (для VB и VBA) по Alt+F4 здесь
С сайта Андрея Митина от одного из пользователей Порывшись на форуме и поспрашивавши у форумчан на MSAccess 2016 Я отключил комбинации клавиш так: в событиях формы включил "перехват нажатия клавиш" и в "кнопка вниз" написал.
0
|
||||||
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|||||||||||||||||||||||||||||||
| 01.09.2025, 12:17 | |||||||||||||||||||||||||||||||
|
Модуль класса VBA для работы с изображениями WIA
Классовые модули предоставляют широкие возможности. … В приложении представлен модуль класса, создан на основе различных функций WIA. Пример(ы) использования На первый взгляд модули могут показаться сложными, но они упрощают процесс написания кода. Получение некоторой информации об Изображении
Одно из главных преимуществ WIA заключается в том, что вы можете вносить изменения в базовое изображение и отображать результат без необходимости сохранять файл на диск. Если у вас есть элемент управления Image, вы можете сделать что-то вроде этого:
Порядок имеет значение При выполнении операций с изображениями важно помнить, что порядок операций может повлиять на конечный результат. Например, изменение размера или обрезка должны выполняться после любого необходимого поворота, иначе вы не получите желаемый конечный результат. Заключение Вот и всё, что нужно знать о манипуляциях с изображениями! Одно из главных преимуществ WIA заключается в том, что вы можете выполнять все манипуляции в памяти, даже отображать/просматривать результаты в элементе управления изображением, без необходимости постоянно сохранять изменения на жёстком диске, что исключает бесполезные операции ввода-вывода. Таким образом, вы выполняете операцию .Save только тогда, когда вас устраивают результаты. WIA встроен в Windows, поэтому его не нужно устанавливать. Он не зависит от разрядности, поэтому вам не нужно беспокоиться о 32- или 64-разрядной установке. Он работает во всех приложениях VBA (Access, Excel, Word, Outlook и т. д.). Взято тут
1
|
|||||||||||||||||||||||||||||||
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 01.09.2025, 14:07 | |
|
Дополнение к посту ZoomBox
Код для ZoomBox взят тут автор статьи Том ван Стифут отрывок из статьи Системный зум-бокс оставляет желать лучшего. Среди проблем можно выделить следующие: - Текст в ZoomBox выделен, из-за чего его трудно читать. - Шрифт текста очень мелкий. - Вы можете изменить размер шрифта, но Access забывает об этом, когда вы закрываете приложение. - Размер формы нельзя изменить, поэтому её неудобно использовать для больших объёмов текста. - ZoomBox не поддерживает форматированный текст. Улучшенная версия устраняет все перечисленные выше ограничения ..... Как организовать вызов ZoomBox с новым кодом? Всё начинается с макроса AutoKeys. Это специальный макрос, который должен иметь такое название. Access использует его для поиска специальных сочетаний клавиш. +{F2} обозначает сочетание клавиш Shift+F2, после чего макрос открывает frmZoom. Пример AutoKeys можно глянуть в приложении
1
|
|
|
1370 / 290 / 16
Регистрация: 16.01.2014
Сообщений: 922
|
|
| 02.09.2025, 09:29 | |
|
Изменение размера и/или преобразование форматов изображений с помощью GDI+ API
Ещё немного о работе с графикой. Windows GDI+ — это API на основе классов для программистов C/C++. Это позволяет приложениям использовать графический и форматированный текст как на дисплее видео, так и на принтере. Приложения на основе API Microsoft Win32 напрямую не обращаются к графическому оборудованию. Вместо этого GDI+ взаимодействует с драйверами устройств от имени приложений. GDI+ также поддерживается Microsoft Win64. Если кто-то захочет использовать GDI+ для изменения размера/масштабирования изображений и/или изменения формата файла изображения, то может использовать следующий код (смотри приложение GDIplus): Лично я считаю, что WIA намного проще, но GDI+ позволяет делать гораздо больше, чем просто масштабировать и менять формат изображения. Так что всё зависит от ваших потребностей, но, по крайней мере, теперь у вас есть выбор! Также обратите внимание, что GDI+ поддерживает вывод изображений только в следующих форматах: BMP GIF JPG PNG TIFF Взято Resizing and/or Converting Image Formats Using GDI+ API Примечание Если размер поста более 15000 знаков, то пост не сохраняется и приходится его делить или часть кода помещать в приложения
0
|
|
| 02.09.2025, 09:29 | |
|
Кто занимался работой с timer поделитесь пожалуйста наработками интеренсыми Делимся. Делимся vpn) Делимся опытом Делимся знаниями по С++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|