Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.00/2: Рейтинг темы: голосов - 2, средняя оценка - 4.00
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364

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

03.11.2009, 11:04. Показов 474183. Ответов 282
Метки нет (Все метки)

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

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

Добавлено через 45 секунд
ззы. флуд и спам в этой теме будет награжден красными карточками
17
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.11.2009, 11:04
Ответы с готовыми решениями:

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

Обсуждение поста #137 в теме "Делимся наработками". Программный модуль контроля ресурсов принтеров сети.
Сейчас тестовая страница на каждом принтере выдаёт эту информацию.

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

282
 Аватар для Aeliot
177 / 62 / 3
Регистрация: 17.11.2011
Сообщений: 318
09.10.2013, 21:14
Студворк — интернет-сервис помощи студентам
Как-то замучившись с вопросом "Чего бы это сделать в первую очередь?", накидал простенькую базу чтобы справиться с накопившимися делами. Получилось быстрее, чем искать подходящий сервис
Из плюшек:
- ведение нескольких проектов.
- расстановка дел по приоритетам.
- статусы задач (новое, в работе, выполнено).
- автоматическое вскрытие выполненных задач.
- подсветка наиболее важных задач.
- список пожеланий ("Хорошо бы было, если сделать...") с возможностью последующего их закрепления за конкретным проектом.
Вложения
Тип файла: zip accdb_ ProgrammingProects _out.zip (62.8 Кб, 1762 просмотров)
2
 Аватар для VinniPuh
9118 / 6107 / 591
Регистрация: 27.03.2013
Сообщений: 19,919
29.12.2013, 20:55
Немного доработанный вариант + поиск к ранее выложенному примеру Делимся наработками
Не могу не поделиться
Вложения
Тип файла: rar Регионы Стран-03.rar (1,009.9 Кб, 1273 просмотров)
4
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
20.02.2014, 08:27
Backup баз данных с помощью командной строки WinRAR.
Хоть наработка и не относится напрямую к Access, но необходима часто.
Файл !DoBackup.bat:
XML
1
2
3
@Echo Off
@Echo Copy, please wait...
@"c:\program files\WinRar\WinRAR.exe" a -ep -u -dh -agYYYY-MM-DD_HH'mm'ss -ibck -m5 "%~dp0\.rar" @!FileList.txt
!FileList.txt (список полных путей копируемых файлов, если файл в пути не указан, копируются все файлы из папки):
XML
1
2
3
\\rc0\s01\DRZ\БД1
\\rc1\common$\VL1\БД2
\\rc3\RZ\!Упр\БД3\BD3.cl
Все файлы копируются в один файл с именем в формате YYYY-MM-DD_HH'mm'ss.rar (можно изменить) в папку где находятся файлы !DoBackup.bat и !FileList.txt.
Периодический запуск !DoBackup.bat организуйте в планировщике, либо другим способом.
4
 Аватар для diam
846 / 84 / 7
Регистрация: 06.12.2009
Сообщений: 345
20.02.2014, 08:53
Аналог предыдщуего сообщения.
Бат-файл, который запускает, декомпилит и сжимает базу данных, а затем архивирует, файл нумерует в порядке очередности за день и ложит в папочку \history

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
chcp 1251 > nul 
chdir "D:\Develop\Source\"
"C:\Program Files\Microsoft Office 2007\Office14\MSACCESS.EXE" "D:\Develop\Source\C_sql.accdb" /decompile /cmd history
 
"C:\Program Files\Microsoft Office 2007\Office14\MSACCESS.EXE" "D:\Develop\Source\C_sql.accdb" /compact
 
set fn=CZ_%date:~6,4%.%date:~3,2%.%date:~0,2%
 
 set i=0
:next
   set /a i=i+1
   set fname=%fn%_%i%.rar
 if exist _history\%fname% goto next
 
chcp 866 > nul 
"D:\Program Files\WinRAR\WinRAR.exe" A _history\%fn%_%i%.rar C_sql.accdb
 
:end
В базе данных, на событие Open стартовой формы в самом начале вешаю код
Visual Basic
1
2
3
4
Private Sub Form_Open(Cancel As Integer)
  If Command = "history" Then Exit Sub
.....
End Sub
А на событие Load стартовой формы
Visual Basic
1
2
3
4
Private Sub Form_Load()
  If Command = "history" Then Application.Quit
.....
End Sub
Таким образом, при запуске батника программа открывается, декомпилится, сжимается и закрывается. И не выполняет лишних действий при старте.
Папка \history должна существовать в том же каталоге, где запускается батник.
6
51 / 2 / 0
Регистрация: 14.02.2014
Сообщений: 24
27.02.2014, 21:08
History - это имя bat - файла?
0
 Аватар для diam
846 / 84 / 7
Регистрация: 06.12.2009
Сообщений: 345
27.02.2014, 23:49
History это имя папки, куда будет сохраняться архив. Папка должна быть в том же месте, где лежит батник. Имя батника значения не имеет.

Если вы про строку If Command = "history" Then .....
то history это аргумент командной строки, с которым была вызвана программа (смотрите в батнике третью строку - там передается аргумент /cmd history. Так вот это он и есть).
2
Заблокирован
02.05.2014, 08:48
Добрый день! На форуме часто вижу вопросы про перенос данных из Excel в Access или наоборот. Давно делал модуль для работы бухгалтерии в нашем учреждении. Который наглядно покажет возможность переноса данных из Excel в Access. Лишнее я удалил из кода.

Если не ошибаюсь в создании модуля принимал участие кто-то из пользователей форума.
Конкретно что-то было с вопросом по дате в Excel.
Извините, забыл имя, пусть простит.
Вложения
Тип файла: rar Пример переноса данных из Excel в Access.rar (48.3 Кб, 1790 просмотров)
1
3357 / 1776 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
03.05.2014, 14:03
inv.DS, что-то у меня ни с Shift ни просто VBA не открывается. Каким образом посмотреть внутренности?
P.S. Офис 2003.

Виноват, нашел. Достаточно форму закрыть и нажать Alt+F11.
0
73 / 47 / 9
Регистрация: 24.03.2014
Сообщений: 470
14.05.2014, 13:05
еще одно простое решение прикрепления файлов в аксе-2003 без дополнительных модулей:

В нужной таблице создаем поле типа MEMO, в него будет сохранятся путь к файлу.
На форме делаем две кнопки, первая кнопка запускает диалог выбора файла и сохраняет путь к нему в определенное поле на этой же форме (его скрываем):
вот код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub НазваниеКнопки_Click()
Dim MD
Set MD = Application.FileDialog(1) 
MD.AllowMultiSelect = False 
MD.Title = "Выбор файла" 
MD.Show
If MD.SelectedItems.Count > 0 Then 
XFileDial = MD.SelectedItems(1)
Else
XFileDial = Null
End If
Me.ИмяПоля = XFileDial ' Поле, куда запишется полный путь к выбранному файлу, в свойствах поля надо указать источником данных соответствующее поле MEMO в таблице.
Set MD = Nothing
End Sub
Код для кнопки запуска файла на основе данных из этого поля:
Visual Basic
1
2
3
Private Sub НазваниеКнопки_Click()
Shell "explorer.exe " & Me.ИмяПоля, vbNormalFocus
End Sub
2
73 / 47 / 9
Регистрация: 24.03.2014
Сообщений: 470
19.08.2014, 16:12
Код для удобного копирования записи в таблице:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim rstC As DAO.Recordset
Dim i As Long
Dim lngId As Long
 
    If Me.Dirty = True Then Me.Dirty = False
 
Set rstC = Me.RecordsetClone
    With Me.Recordset
        rstC.AddNew
        lngId = rstC.Fields(0)
            For i = 1 To rstC.Fields.Count - 1  ' - Первое поле счетчик, его не передаем
                rstC.Fields(i) = .Fields(i)
            Next i
        rstC.Update
        .Requery
        .FindLast "[id]=" & CStr(lngId) ' переходим на последнюю запись
    End With
Set rstC = Nothing
Код вешаем на кнопку в форме. Ограничение - источником формы должна быть таблица или запрос, основанный целиком на основе одной таблице.
0
73 / 47 / 9
Регистрация: 24.03.2014
Сообщений: 470
20.11.2014, 16:16
Экспорт в Excel данных из связанных таблиц:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Dim xlApp As Object, xlBook As Object, xlSheet As Object
  Dim db As DAO.Database, rsd As DAO.Recordset, rse As DAO.Recordset
  Dim sq$, cs&, TmplFileName$
  Set db = CurrentDb
  sq = "SELECT ... FROM... WHERE... ORDER BY ..." ' выборка данных для первого рекордсета
  Set rsd = db.OpenRecordset(sq, dbOpenSnapshot)
  If rsd.EOF Then Exit Sub ' проверяем на отсутствие записей
  Set xlApp = CreateObject("Excel.Application")
  xlApp.Visible = True
  TmplFileName = CurrentProject.path & "\Dot\test1.xlt" ' здесь указываем путь к шаблону (задал относительно - так удобно при использовании базы на разных компах
  Set xlBook = xlApp.Workbooks.Add(TmplFileName)
  Set xlSheet = xlBook.Sheets(1)
  cs = 0
  Do Until rsd.EOF
    If cs > 0 Then Set xlSheet = xlBook.Sheets.Add(, xlBook.Worksheets(cs), , TmplFileName)
    cs = cs + 1
    xlSheet.Name = ' создаем название листа в формате, например, rsd!Name
    xlSheet.Cells(2, 1).Value = ' аналогично ваяем шапку на листе, если есть необходимость - у меня обычно есть
    sq = "SELECT...FROM ...WHERE ... cat_id = " & rsd!id & "" ' создаем второй рекордсет и склеиваем по нужному полю
    Set rse = db.OpenRecordset(sq, dbOpenSnapshot)
    xlSheet.Cells(8, 2).CopyFromRecordset rse ' заполняем листы
    rsd.MoveNext
  Loop
  Set xlSheet = Nothing: Set xlBook = Nothing: Set xlApp = Nothing
  Set rse = Nothing: Set rsd = Nothing: Set db = Nothing
Примечания:
шаблон создаем с одним листом, название ему даем "1". Сам код вешаем на кнопку, которой планируем запускать экспорт. Такую же схему можно реализовать в случае, если первым рекордсетом будет сохраненный запрос SQL, но в этом случае во втором рекордсете нужно будет обращаться к его полю чуть иначе: rsd.Fields("имя поля запроса")
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
13.05.2015, 13:55
Время от времени появляются темы по составлению оглавления из таблицы связей типа идПарент, идЗаголовка. В отличие от обычных рекурсивных спусков по "дереву", оглавление состоит из сжатых нумерованных списков, где нумерация пунктов это последовательные номера в подпункте, а не фактические номера узлов дерева. Например, из списка в таблице надо получить оглавление
Содержание таблицы:
идПарент идЗаголовок ИмяЗаголовка
0 1 Введение
0 2 Обозначения
0 3 Основные
0 4 Заключение
0 5 Список литературы
1 6 От автора
1 7 Актуальность
3 9 Анализ
3 10 Структура
5 13 Интернет
5 14 Бумажный
9 19 Первичный
9 20 Вторичный
10 37 Первая
10 38 Вторая

Требуемое оглавление: (вместо пробелов перед строкой выведены нижние дефисы, поскольку тэг [TABLE] удаляет начальные и конечные пробелы)
Оглавление
1. Введение
__1.1. От автора
__1.2. Актуальность.
2. Обозначения
3. Основные
__3.1. Анализ
____3.1.1. Первичный
____3.1.2. Вторичный
__3.2. Структура
____3.2.1. Первая
____3.2.2. Вторая
4. Заключение
5. Список литературы
__5.1. Интернет
__5.2. Бумажный

Решение этой задачи реализовано здесь Рекурсивный запрос: необходимо сделать содержание книги
4
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,375
15.05.2015, 03:23
mobile, откуда такая жестокость, почему mdb нет? я тоже хочу посмотреть и не один я.
1
 Аватар для VinniPuh
9118 / 6107 / 591
Регистрация: 27.03.2013
Сообщений: 19,919
15.05.2015, 06:47
Солидарен с - alvk!!!
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.05.2015, 08:14
Исправляюсь. Простите блаженного, бога ради
Вложения
Тип файла: rar Оглавление.rar (33.9 Кб, 670 просмотров)
2
459 / 246 / 15
Регистрация: 29.10.2014
Сообщений: 1,084
25.05.2015, 23:36
mobile показал, что информацию нескольких таблиц, объединенных соотношением один-ко-многим можно поместить в одну таблицу. Пользуюсь такой идеей, только отношения между записями этой таблицы выстраиваю не программно. Кроме понятия главная таблица-подчиненная ввожу понятие "главная" запись - "подчиненная" запись, при этом у каждой записи есть Уровень, который у главной записи всегда выше, чем у подчиненной, уровень которой произволен.
Это означает, что (по отношению к книге) книга может состоять из разделов, глав и статей, а может иметь и разделы, которые глав не имеют (одни статьи), а может состоять только из статей, но в таблицу поместится и библиотека (несколько разных изделий с описанием операций каждой детали далее по схеме) и выше.

Вся основная информация в Т101, все связи между записями в Т102, Уровень1 в записи всегда больше Уровня2, запись Т101, связанная с КодЭлемента1 и Уровнем1-главная, с КодЭлемента2-подчиненная. Естественно, в какой нибудь записи Т102 описанная подчиненная запись может считаться уже главной, а главная подчиненной. Но это с другими кодами. Указанное в начале абзаца соотношение между конкретными записями всегда сохраняется
Пользуюсь и традиционными связями

Вообще поля Уровень1 и 2 пока не применяю. Просто стараюсь не дать пользователю нарушать принцип старшинства уровня. Уровень1 предлагаю вводить пользователю из расчета мин необходимого, хотя его можно формировать и программно исходя из уровня входящих.
Изделия.rar
2
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
27.06.2015, 12:26
Функция по подмножеству для конкатенации текстовых полей. Параметры и использование абсолютно аналогично DSum, добавлен необязательный четвертый параметр - разделитель. Скажем, при Delimiter=Chr(13) & Chr(10) все строки будут собраны "в столбик".

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Public Function DConcat(Expr As String, Domain As String, Optional Criteria As Variant, Optional Delimiter As String)
Dim myRst As Recordset, myVal As Variant, Result As String
On Error GoTo ErrHandler
    ' Используем текстовую переменную Result для формирования текста запроса для Recordset
    Result = "Select " & Expr & " As Expr From " & Domain
    If Criteria > "" Then
        Result = Result & " Where " & Criteria
    End If
    Result = Result & "; "
    Set myRst = CurrentDb.OpenRecordset(Result, 4)
    ' А теперь ее же для хранения результата сцепления строк
    Result = ""
    If myRst.RecordCount > 0 Then
        myRst.MoveFirst
        Do While Not myRst.EOF
            myVal = myRst.Fields("Expr")
            If Not IsNull(myVal) Then
                If Result > "" Then
                    Result = Result & Nz(Delimiter, "") & CStr(myVal)
                  Else
                    Result = CStr(myVal)
                End If
            End If
            myRst.MoveNext
        Loop
    End If
    DConcat = Result
    myRst.Close
    Exit Function
ErrHandler:
    If Not (myRst Is Nothing) Then myRst.Close
    MsgBox "Error in function D_Cocnatenate #" & Err.Number & ": " & Err.Description
End Function
0
459 / 246 / 15
Регистрация: 29.10.2014
Сообщений: 1,084
28.06.2015, 19:03
1)В связи с тем, что 2 аргумента - Optional, должен работать вызов:
Private Sub txtИтог_DblClick(Cancel As Integer)
txtИтог.Value = DConcat("F", "S")
End Sub
Не работает
2)Хотя компилятор ошибки и не выдает, в Справке по запросу Optional в разделе Function Statement в последнем примере написано "Optional arguments can have default values and types other than Variant" - необязательные аргументы могут иметь значения и типы, кроме Variant
Думаю нужно это устранить и повторить
1
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
29.06.2015, 06:25
Спасибо за замечание, действительно, забыла прописать значение по умолчанию для опциональных параметров + забыла, зачем третий параметр именно variant (кстати, в исходной функции DSum он тоже необязательный и variant). Добавила проверку.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Public Function DConcat(Expr As String, Domain As String, Optional Criteria As Variant = "", Optional Delimiter As String = "")
Dim myRst As Recordset, myVal As Variant, Result As String
On Error GoTo ErrHandler
    '  Если Criteria число или логическое, то в случае равенства 0 функцию не выполняем
    If VarType(Criteria) < 8 Then
        If Criteria = 0 Then
            DConcat = Null
            Exit Function
        End If
    End If
    ' Используем текстовую переменную Result для формирования текста запроса для Recordset
    Result = "Select " & Expr & " As Expr From " & Domain
    If Criteria > "" Then
        Result = Result & " Where " & Criteria
    End If
    Result = Result & "; "
    Set myRst = CurrentDb.OpenRecordset(Result, 4)
    '  А теперь ее же для хранения результата сцепления строк
    Result = ""
    If myRst.RecordCount > 0 Then
        myRst.MoveFirst
        Do While Not myRst.EOF
            myVal = myRst.Fields("Expr")
            If Not IsNull(myVal) Then
                If Result > "" Then
                    Result = Result & Nz(Delimiter, "") & CStr(myVal)
                  Else
                    Result = CStr(myVal)
                End If
            End If
            myRst.MoveNext
        Loop
    End If
    DConcat = Result
    myRst.Close
    Exit Function
ErrHandler:
    If Not (myRst Is Nothing) Then myRst.Close
    MsgBox "Error in function D_Cocnatenate #" & Err.Number & ": " & Err.Description
End Function
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
21.07.2015, 21:04
Довольно часто возникает тема отправки почты в среде MS Access. Предлагаю программу отправки через CDO с разными возможностями. Есть небольшое описание программы
Вложения
Тип файла: rar sendmail-v5-2.rar (151.0 Кб, 1028 просмотров)
12
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.07.2015, 21:04
Помогаю со студенческими работами здесь

Кто занимался работой с timer поделитесь пожалуйста наработками интеренсыми
Например есть форма и на форме кнопка закрыть нажимая кнопку закрыть идет отсчет 10 9 8... и когда доходит 0 то закрывается программа ,...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru