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

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

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

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

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

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

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

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

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

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

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

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

111
Aeliot
175 / 60 / 3
Регистрация: 17.11.2011
Сообщений: 318
09.10.2013, 21:14 #41
Как-то замучившись с вопросом "Чего бы это сделать в первую очередь?", накидал простенькую базу чтобы справиться с накопившимися делами. Получилось быстрее, чем искать подходящий сервис
Из плюшек:
- ведение нескольких проектов.
- расстановка дел по приоритетам.
- статусы задач (новое, в работе, выполнено).
- автоматическое вскрытие выполненных задач.
- подсветка наиболее важных задач.
- список пожеланий ("Хорошо бы было, если сделать...") с возможностью последующего их закрепления за конкретным проектом.
2
Вложения
Тип файла: zip accdb_ ProgrammingProects _out.zip (62.8 Кб, 957 просмотров)
VinniPuh
Эксперт MS Access
6061 / 3481 / 352
Регистрация: 27.03.2013
Сообщений: 12,827
29.12.2013, 20:55 #42
Немного доработанный вариант + поиск к ранее выложенному примеру http://www.cyberforum.ru/ms-access/thread60797-page4.html#post4405491
Не могу не поделиться
4
Вложения
Тип файла: rar Регионы Стран-03.rar (1,009.9 Кб, 627 просмотров)
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,072
20.02.2014, 08:27 #43
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
403 / 76 / 7
Регистрация: 06.12.2009
Сообщений: 296
20.02.2014, 08:53 #44
Аналог предыдщуего сообщения.
Бат-файл, который запускает, декомпилит и сжимает базу данных, а затем архивирует, файл нумерует в порядке очередности за день и ложит в папочку \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 должна существовать в том же каталоге, где запускается батник.
5
solobala
51 / 2 / 1
Регистрация: 14.02.2014
Сообщений: 24
27.02.2014, 21:08 #45
History - это имя bat - файла?
0
diam
403 / 76 / 7
Регистрация: 06.12.2009
Сообщений: 296
27.02.2014, 23:49 #46
History это имя папки, куда будет сохраняться архив. Папка должна быть в том же месте, где лежит батник. Имя батника значения не имеет.

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

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

Виноват, нашел. Достаточно форму закрыть и нажать Alt+F11.
0
Eujine
71 / 45 / 9
Регистрация: 24.03.2014
Сообщений: 465
14.05.2014, 13:05 #49
еще одно простое решение прикрепления файлов в аксе-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
Eujine
71 / 45 / 9
Регистрация: 24.03.2014
Сообщений: 465
19.08.2014, 16:12 #50
Код для удобного копирования записи в таблице:

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
Eujine
71 / 45 / 9
Регистрация: 24.03.2014
Сообщений: 465
20.11.2014, 16:16 #51
Экспорт в 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
denza-ja
1 / 1 / 0
Регистрация: 17.12.2014
Сообщений: 8
17.12.2014, 13:04 #52
а нету этой БД на русском языке???
1
Nikita-C
0 / 0 / 2
Регистрация: 25.12.2014
Сообщений: 75
24.02.2015, 19:22 #53
Здравствуйте.
Случайно нет БД "видеомагазин" ?
0
mobile
Эксперт MS Access
22496 / 12814 / 2613
Регистрация: 28.04.2012
Сообщений: 14,015
13.05.2015, 13:55 #54
Время от времени появляются темы по составлению оглавления из таблицы связей типа идПарент, идЗаголовка. В отличие от обычных рекурсивных спусков по "дереву", оглавление состоит из сжатых нумерованных списков, где нумерация пунктов это последовательные номера в подпункте, а не фактические номера узлов дерева. Например, из списка в таблице надо получить оглавление
Содержание таблицы:
идПарент идЗаголовок ИмяЗаголовка
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. Бумажный

Решение этой задачи реализовано здесь http://www.cyberforum.ru/ms-access/thread1434512.html#post7604532
3
alvk
Эксперт MS Access
5541 / 3439 / 166
Регистрация: 12.08.2011
Сообщений: 8,682
15.05.2015, 03:23 #55
mobile, откуда такая жестокость, почему mdb нет? я тоже хочу посмотреть и не один я.
1
VinniPuh
Эксперт MS Access
6061 / 3481 / 352
Регистрация: 27.03.2013
Сообщений: 12,827
15.05.2015, 06:47 #56
Солидарен с - alvk!!!
0
mobile
Эксперт MS Access
22496 / 12814 / 2613
Регистрация: 28.04.2012
Сообщений: 14,015
15.05.2015, 08:14 #57
Исправляюсь. Простите блаженного, бога ради
2
Вложения
Тип файла: rar Оглавление.rar (33.9 Кб, 253 просмотров)
commun
426 / 217 / 10
Регистрация: 29.10.2014
Сообщений: 857
25.05.2015, 23:36 #58
mobile показал, что информацию нескольких таблиц, объединенных соотношением один-ко-многим можно поместить в одну таблицу. Пользуюсь такой идеей, только отношения между записями этой таблицы выстраиваю не программно. Кроме понятия главная таблица-подчиненная ввожу понятие "главная" запись - "подчиненная" запись, при этом у каждой записи есть Уровень, который у главной записи всегда выше, чем у подчиненной, уровень которой произволен.
Это означает, что (по отношению к книге) книга может состоять из разделов, глав и статей, а может иметь и разделы, которые глав не имеют (одни статьи), а может состоять только из статей, но в таблицу поместится и библиотека (несколько разных изделий с описанием операций каждой детали далее по схеме) и выше.
Делимся наработками
Вся основная информация в Т101, все связи между записями в Т102, Уровень1 в записи всегда больше Уровня2, запись Т101, связанная с КодЭлемента1 и Уровнем1-главная, с КодЭлемента2-подчиненная. Естественно, в какой нибудь записи Т102 описанная подчиненная запись может считаться уже главной, а главная подчиненной. Но это с другими кодами. Указанное в начале абзаца соотношение между конкретными записями всегда сохраняется
Пользуюсь и традиционными связями
Делимся наработками
Вообще поля Уровень1 и 2 пока не применяю. Просто стараюсь не дать пользователю нарушать принцип старшинства уровня. Уровень1 предлагаю вводить пользователю из расчета мин необходимого, хотя его можно формировать и программно исходя из уровня входящих.
Изделия.rar
1
texnik-san
шапоклякистка 8-го дня
3629 / 2190 / 389
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
27.06.2015, 12:26 #59
Функция по подмножеству для конкатенации текстовых полей. Параметры и использование абсолютно аналогично 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
commun
426 / 217 / 10
Регистрация: 29.10.2014
Сообщений: 857
28.06.2015, 19:03 #60
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
28.06.2015, 19:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2015, 19:03
Привет! Вот еще темы с решениями:

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

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

Делимся результатами 3dMark`11
виложуєм в ету тему свои результати в 11 маку и конфигурации

Ведьмак 2: делимся впечатлениями
Кто уже играл, поделитесь впечатлениями. То есть: лучше ли Ведьмак 2 по...


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

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

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