Как создать временные таблицы
Что бы не загаживать базу с данными и/или интерфейсную базу временными таблицами я решил перенести их в специальную временную базу данных. Это делает функция CM_CreateTempMDB(). И живет она в модуле mc_TempMDB. Для своей работы функция использует функции из внешних модулей: mc_LT.CM_LT_AddAllExt(), mc_File.CM_GetDBPath(), mc_StrSost.CM_StrSost().
У меня временная база пересоздается каждый раз при запуске программы. Функция копирует шаблоны временных таблиц из интерфейсной базы, имя которых подходит под условие: temp_*_def. Например, temp_import_def.
Текст функции:
Public Sub CM_CreateTempMDB()
' Скоков С.А. 2007-04-02
' Создание временной БД. Временные таблицы в текущей БД должны соответствовать формату temp_*_def.
' Подлинковываться в текущую БД они будут с именами temp_*
' внешние модули: mc_LT, mc_File, mc_StrSost
On Error GoTo Err_
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim pathToDb As String
Call mc_StrSost.CM_StrSost("Создание временного файла")
'-- создание БД
pathToDb = mc_File.CM_GetDBPath & "temp.mdb"
If Dir(pathToDb) <> "" Then
Call Kill(pathToDb)
End If
Set db = CreateDatabase(pathToDb, dbLangGeneral)
db.Close
'-- копирование таблиц во временную БД
Set db = CurrentDb
For Each tdf In db.TableDefs
If tdf.Name Like "temp_*_def" Then
DoCmd.CopyObject pathToDb, Left(tdf.Name, Len(tdf.Name) - 4), acTable, tdf.Name
End If
Next
'-- линковка временных таблиц
mc_LT.CM_LT_AddAllExt (pathToDb)
Exit_:
Call mc_StrSost.CM_StrSost
Exit Sub
Err_:
Err.Raise Err.Number, "CM_CreateTempMDB()->" & Err.Source, Err.Description
Resume Exit_
End Sub
До встречи!
(с) Скоков Сергей
Подписаться на: RSS или e-mail рассылку или добавить в ЖЖ друзья.