(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Автозагрузка файлов в базу данных

Источник: leadersoft

Я задался идей создать базу данных моей музыкальной коллекции, размещённой на жёстком диске. Пытаюсь это сделать с помощью Access. Но вот одна трудность - мне нужно, чтобы автоматически обновлялись данные в определённой таблице(цах). А данные эти - названия исполнителей и названия песен, записанные в виде ID тэгов в музыкальных файлах MP3. Т.е. при помещении в определённую папку новых MP3 файлов их названия должны автоматически пополнять базу данных.

Хотя этот вопрос впервые встречается среди многих других вопросов по Access, но можно сказать, что эта тема эта достаточно важна не только для новичков, но и для тех, кто профессионально занимается базами данных.
    Например, представим что у Вас есть электронный магазин и все заказы приходят к Вам в виде писем по электронной почте. Ручная обработка писем, их сортировка, чтение и ввод данных в базу данных может занять значительное время. При этом будет трудно избежать ошибок при вводе информации, если вдобавок вы не имеете профессиональных операторов. Естественно можно придумать так, что все письма будут сохраняться в определенной папке, после того, как Вы открываете базу данных, программа автоматически будет читать имена файлов, проверять наличие их (по названию, по дате и времени их создания)  и далее загружать выборочно текст в таблицу базы данных (текст может быть разбит тегами на разделы).
   Попробуем автоматизировать этот процесс. Ниже дается описание алгоритма, что нужно сделать, после этого идет код на VBA.
   1 этап. Создаем макрос AutoExec. Назначение этого макроса - это автоматический запуск некоторой программы, которая должна выполняться всегда при открытии базы. Название программы - funAutoReadAllFiles(). На вход программы необходимо передать данные по каталогу, где надо искать файлы и расширение файлов, которые необходимо считать.
   2 этап. Создаем подпрограмму по загрузке файлов  funAutoReadOneFile. Цель ее - проверка содержимого файла в базе данных и если файла нет, то загрузить его. На вход программы подается информация об имени файла и таблицы, куда необходимо загрузить данные.
   Данный код взят из файла la_files.mdb
'==============================================================
' Прочитаем имена файлов и загрузим их в таблицу
'
Private Sub funAutoReadAllFiles(strDir As String, strFileExt As String)
Dim i As Long, rst As DAO.Recordset
On Error GoTo 999
With Application.FileSearch
.NewSearch
.LookIn = strDir ' *.name
.FileName = strFileExt ' *.txt
.SearchSubFolders = False
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
If MsgBox("Загрузить файл: " & .FoundFiles(i), vbInformation + vbOKCancel, "Загрузить") = vbOK Then
funAutoReadOneFile .FoundFiles(i), "Таблица5"
Me.table5.Requery
End If
Next i
End If
End With
Exit Sub 'Выходим из программы
999:
MsgBox Err.Description
Err.Clear 'Очищаем поток от ошибок
End Sub

'==============================================================
' Загружаем файл в таблицу
'
Private Function funAutoReadOneFile(strFileName As String, strTable)
Dim fs, f, flag
Dim dbs As DAO.Database, rst As DAO.Recordset

On Error GoTo 999
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(strFileName)

' Проверка файла
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("select * from " & strTable)

If rst.RecordCount Then
rst.MoveLast
rst.MoveFirst
End If

rst.FindFirst "[FileName] = '" & strFileName & "'"
If rst.NoMatch = False Then
dbs.Close
rst.Close
Exit Function
End If

' Добавление информации о дате создания
rst.AddNew
rst!FileName = strFileName
rst!DateCreated = f.DateCreated

' Добавление информации о содержимом
rst!Memo = ""
Set f = fs.OpenTextFile(strFileName, 1, False)
Do While f.AtEndOfStream <> True
rst!Memo = rst!Memo & f.ReadLine ' Читаем построчно
Loop
f.Close

' Сохранение содержимого
rst.Update
rst.Close
dbs.Close

Exit Function
999:
MsgBox Err.Description
Err.Clear
rst.Close
End Function

Private Sub butCode1_Click()
Stop
End Sub

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 18.03.2008 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Apps for business (corporate)
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft 365 Business Standard (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Программирование в AutoCAD
Новые материалы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100