5 строк кода

Как писать приложения на MS Access

Как создать временные таблицы

Комментариев нет

Что бы не загаживать базу с данными и/или интерфейсную базу временными таблицами я решил перенести их в специальную временную базу данных. Это делает функция 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 рассылку или добавить в ЖЖ друзья.

Written by Сергей Скоков

Октябрь 17th, 2011 at 10:32 пп

Leave a Reply