В vba access: Справочник по Visual Basic для приложений (VBA) в Access

Содержание

Microsoft Access. Работа с таблицами из VBA

Microsoft Access. Работа с таблицами из VBA

Работа с таблицами в Microsoft Access может осуществляться как мастерами, так и через язык программирование. В этой части книги рассказывается об этом способе разработки.

 

Вы научитесь создавать таблицу, проверять ее наличие в базе данных, создавать поля и изменять их свойства средствами VBA.

 

Наверное, Вы уже научились создавать таблицу с помощью мастера, этот способ указан слева. Теперь давайте попробуем создать ее программным способом. Иногда этот способ становится более предпочтительным, чем стандартный. В качестве переменной создаваемой таблицы будем использовать имя StrTable = «Калькулятор»

 

 

На этом снимке экрана показан интерфейс Microsoft Access 2016 для создания таблиц. Для этого в панели меню находится кнопка Конструктор таблиц

 

  

 

Public Function funCreateTable(strTable As String) As Boolean

    Dim dbs As Database, tdf As TableDef

    On Error GoTo 999 ‘Назначаем переход по ошибке

    funCreateTable = False ‘Возвращаем результат при ошибке

    If funVerifyTable(strTable) = False Then ‘Проверяем таблицу

        dbs = appAccess. CurrentDb ‘Находим базу данных

        tdf = dbs.CreateTableDef(strTable)  ‘Создаем таблицу

        tdf.Fields.Append tdf.CreateField(«Пункт», dbLong) ‘Создаем 1 поле

        dbs.TableDefs.Append tdf ‘Добавляем таблицу

        funCreateFields strTable ‘<3> Создаем поля

        funCreateTable = True ‘Возвращаем результат

    End If

    Exit Function

999:

    MsgBox(Err.Description, vbCritical, «Создание таблицы») ‘Сообщаем красиво об ошибке

    Err.Clear() ‘Очищаем поток от ошибок

End Function

 

Проверка таблицы

Очень часто при работе с базой данных Вам надо проверить наличие в базе данных объекта. На данном примере указан способ проверки таблицы в базе данных.

Если объекта нет, то случается ошибка и программа очищает поток от ошибок, возвращая значение False.

 

На этом снимке экрана в Access 2016 отображается таблица Калькулятор. Помните, что системные и другие таблицы в разных базах данных могут быть скрыты от просмотра.

 

Public Function funVerifyTable(strTable As String) As Boolean

    Dim tdf As TableDef

    On Error GoTo 999  ‘Назначаем переход по ошибке

    funVerifyTable = False ‘Возвращаем результат при ошибке

    tdf = appAccess.CurrentDb.TableDefs(strTable) ‘Находим объект

    If (tdf Is Nothing) = False Then funVerifyTable = True ‘Проверяем объект

    tdf = Nothing ‘Уничтожаем переменную

    Exit Function ‘Выходим из программы

999:

    Err.Clear() ‘Очищаем поток от ошибок

End Function

Создание полей таблицы

Создание полей с помощью программы является важным элементом программирования баз данных.

Так как в складском и бухгалтерском учете очень сложно учесть все поля таблиц из-за часто меняющихся требований к учету, естественно Вы должны предусмотреть в своих программах изменение базы данных различных версий по шаблону (метод называется репликацией). В данном примере в таблицу «Калькулятор», переменная strTable, добавляются два новых поля Выражение иИтог, а также изменяются свойства поля Пункт

 

На этом снимке экрана таблица Калькулятор в Access 2016 находится в режиме проектирования полей. Мы видим три поля, тип данных и описание.

 

Public Function funCreateFields(strTable As String) As Boolean

    Dim dbs As Database, tdf As TableDef, fld As Field

    On Error GoTo 999 ‘Назначаем переход по ошибке

    funCreateFields = False ‘Возвращаем результат при ошибке

 

    dbs = appAccess.CurrentDb ‘Определяем базу данных

    tdf = dbs.TableDefs(strTable) ‘Находим таблицу

    With tdf ‘Выбираем таблицу для изменения

        .Fields.Append.CreateField(«Выражение», dbText, 75) ‘Создаем поле Выражение

        . Fields.Append.CreateField(«Итог», dbDouble) ‘Создаем поле Итог

    End With

    fld = tdf.Fields(«Пункт») ‘Изменяем свойства поля «Пункт»

    funChangeProperty(fld, «Description», dbText, «Номер выражения в калькуляторе») ‘Изменяем описание

    funChangeProperty(fld, «Format», dbText, «Fixed») ‘Назначаем фиксированный формат

    funChangeProperty(fld, «DecimalPlaced», dbByte, 0) ‘Отключаем десятичные знаки

    fld = Nothing ‘Уничтожаем переменную поля

    tdf = Nothing ‘Уничтожаем переменную таблицы

    funCreateFields = True ‘Возвращаем результат

    Exit Function ‘Выходим из программы

999:

    MsgBox(Err.Description, vbCritical, «Создание таблицы») ‘Сообщаем об ошибке

    Err.Clear() ‘Очищаем поток от ошибок

End Function

Изменение свойств таблицы

Когда Вы создаете поле программным методом, некоторые его свойства, например, Описание (Description) не создаются автоматически.

Вам необходимо научиться изменять свойства полей базы данных, а в случае необходимости добавлять их в базу данных.

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

 

У каждого поля кроме его имени и типа данных есть дополнительные свойства. На этой форме в Access 2016 показано, что их можно увидеть в конструкторе таблицы

‘Параметры:

‘   fld — поле в таблице (Объект Field)

‘   strName — имя свойства (Description, Format …)

‘   varType — тип свойства (dbText, dbLong …)

‘   varValue — значение свойства

Function funChangeProperty(fld As Field, strName As String, varType

                As Variant, varValue As Variant) As Boolean

    Dim prp As Object

    On Error GoTo 999 ‘Назначаем переход по ошибке

    funChangeProperty = False ‘Возвращаем результат при ошибке

    fld. Properties(strName) = varValue ‘Присваиваем значение полю

    funChangeProperty = True ‘Возвращаем результат

    Exit Function ‘Выходим из программы

999:

    If Err = 3270 Then  ‘Свойство не найдено

        prp = fld.CreateProperty(strName, varType, varValue) ‘Создаем свойство

        fld.Properties.Append prp ‘Добавляем свойство

        Err.Clear() ‘Очищаем поток от ошибки

        Resume Next ‘Возвращаемся к следующему оператору

    End If

    Err.Clear() ‘Очищаем от незнакомой ошибки

End Function

Проверка знаний

Теперь Вы научились создавать таблицы и поля базы данных, а также изменять из свойства. 

Ваш результат обучения Вы можете увидеть, нажав кнопку [Проверка N3] внизу экрана. Перед Вами отобразится база данных, в которой будет пустая таблица «Калькулятор». На следующем этапе программирования мы будем создавать запросы SQL, которые нужны для управления формой калькулятора. Итак для изучения следующей лекции нажмите кнопку Вперед>

 

 

ОГЛАВЛЕНИЕ

ССЫЛКИ ПО ТЕМЕ

  1. Введение в проектирование
  2. Определение переменных
  3. Cоздание базы данных  
  4. Работа с таблицами  
  5. Работа с SQL запросами  
  6. Создание модуля  
  7. Создание формы
  8. Создание макроса
  9. Создание панели меню

Вся книга в интернете

Форум по Microsoft Access  

Книга для чтения в формате RSS

Загрузить книгу в pdf формате

Загрузить исходники по теме (скоро …)

Подписка на новости по Email

Сообщество Microsoft Access в Google +

Заказ обучения или разработки программы

 

Автор: Виктор Leadersoft на 8:33

Отправить по электронной почте Написать об этом в блоге Опубликовать в Twitter Опубликовать в Facebook Поделиться в Pinterest

Ярлыки: 3. Обучение , Access , BookAccess , VBA

visual basic — Миграция элемента управления из VB6 в VBA (MS Access)


Вопрос задан


Изменён
1 месяц назад


Просмотрен
11 раз

Я не специалист в MS Access и VBA и что-то самому разобраться не совсем получается:
Итак, есть одно приложение MS Access, которое использует UserControl (ocx) созданный в VB6.
Исходники элемента управления тоже есть — работа с Clipboard, рисование кой-чего на UserControl, на первый взгляд ничего сложного.
Вот кстати код, который был взят за основу некоторой части этого элемента:
ссылка

Нужно портировать приложение на Access 64bit, поэтому было принято решение код из библиотеки перенять в VBA-Code проекта, ну и снабдить вызовы windows функций соседствующими директивами (#if Win64 then).

Вопрос 1:
Что взять за основу userControl? подформуляр? именно так я пытаюсь сейчас сделать, но мучают сомнения, да и как то туго продвигаюсь.
Или может быть можно как-то взять за основу, скажем VBA-элемент Image и инкапсулировать свою логику в нем, а потом использовать элемент в нескольких формах приложения.
Нужно будет еще реализовать Drag & Drop для него (все есть в ocx-коде, но еще не дошел до этой части)

Вопрос 2:
Нет студии VB6, где бы я мог проверить — а в коде ocx есть вызовы «Clipboard.SetData Picture», где Picture as IPictureDisp.
Похоже что в ocx у UserControl (VB6) имеется своя реализация Clipboard, которой нет в VBA.
Я Clipboard подменил DataObject (из Windows Forms 2.0 Object Library), но он умеет только строки, а не такие графические структуры. Что использовать здесь?

Буду рад вашим советам и наводкам.

  • vba
  • visual-basic
  • usercontrol
  • x86-64
  • vb6







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации


Почта

Необходима, но никому не показывается




Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки


Таблицы Access VBA — обновление, подсчет, удаление, создание, переименование, экспорт

В этом учебном пособии вы узнаете, как работать с таблицами Access с помощью VBA.

Доступ к таблицам VBA

Для начала продемонстрируем простые команды для работы с таблицами в Access. Позже в этом уроке мы покажем вам все профессионально разработанные функции для работы с таблицами в Access.

Create Table

Этот код будет использовать SQL для создания таблицы с именем «Table1» с полями «ID» и «Name»:

    Dim имя_таблицы как строка
    Затемнить поля как строку
    
    имя_таблицы = "Таблица1"
    fields = "([ID] varchar(150), [Имя] varchar(150))"
    
    CurrentDb.Execute "CREATE TABLE" и table_name и поля
 

Close Table

Эта строка кода VBA закроет таблицу (с сохранением изменений):

 DoCmd.Close acTable, "Table1", acSaveYes 

Чтобы закрыть таблицу без сохранения:

 DoCmd.Close acTable, "Table1 ", acSaveNo 

Удалить таблицу

Этот код удалит таблицу (примечание: сначала таблица должна быть закрыта):

 DoCmd. Close acTable, "Table1", acSaveYes
DoCmd.DeleteObject acTable = acDefault, "Table1" 

Переименовать таблицу:

Эта строка кода переименует таблицу доступа:

 DoCmd.Rename "Table1", acTable, "Table1_New" 

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

 Установить tdf = db.TableDefs(strOldTableName)
tdf.Name = strNewTableName 

Пустая/Очистить таблицу

Этот код VBA очистит таблицу:

 DoCmd.RunSQL "DELETE * FROM" & "Table1" 

VBA Coding Made Easy

Остановить поиск кода VBA в сети. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области программирования и множеством функций, позволяющих сэкономить время для всех пользователей!

Узнать больше

Truncate Table / Delete Records

Эта строка кода VBA использует SQL для удаления записей из таблицы, соответствующих определенным критериям:

 DoCmd. RunSQL ("DELETE * FROM" & "Table1" & "WHERE" & "num=2") 

Экспорт таблицы в Excel

Для экспорта таблицы в Excel используйте метод DoCmd.OutputTo :

 DoCmd.OutputTo acOutputTable, "Table1", acFormatXLS, "c:\temp\ExportedTable.xls" 

или используйте метод DoCmd.TransferSpreadsheet :

 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, ":T \temp\ExportedTable.xls", True 

Обновление таблицы

Следующий код обновит запись без отображения предупреждающего сообщения:

 DoCmd.SetWarnings (False)
DoCmd.RunSQL "Обновление продуктовT SET ProductsT.ProductName = 'Product AAA' WHERE (((ProductsT.ProductID)=1))" 

Программирование на VBA | Генератор кода работает на вас!

Доступ к функциям таблиц VBA

Приведенные выше примеры кода представляют собой простые команды, которые можно использовать для взаимодействия с таблицами с помощью VBA. Однако вам часто потребуется добавить гораздо больше вспомогательного кода (включая обработку ошибок), чтобы правильно использовать эти команды. Ниже вы найдете профессионально разработанные функции для работы с таблицами в Access.

Count Table Records

Эта функция будет подсчитывать количество записей в таблице:

 Открытая функция Count_Table_Records(TableName As String) As Integer
При ошибке Перейти к ошибке:

    Dim r As DAO.Recordset
    Dim c как целое число
    Set r = CurrentDb.OpenRecordset("Выберите count(*) как rcount из " & TableName).OpenRecordset
    
    Если (r.EOF) Тогда
        с = 0
    Еще
        с = Nz(r!rCount, 0)
    Конец, если
   
    Count_Table_Records = c
    Выход из функции

Ошибка:
    Call MsgBox("Произошла ошибка: " & Err.Description, vbExclamation, "Ошибка")
Конечная функция

'Пример использования
Частный подчиненный Count_Table_Records_Example()
   MsgBox (Count_Table_Records ("Таблица1"))
Конец суб 

 

Функция проверки существования таблицы

Эта функция проверяет, существует ли таблица, возвращая ИСТИНА или ЛОЖЬ:

 Открытая функция TableExists(ByVal strTableName As String) As Boolean
    
    'Функция: определить, существует ли таблица в базе данных Access. 
    'Аргументы:strTablename: Имя таблицы для проверки
    Dim tdf как DAO.TableDef
    
    При ошибке Возобновить Далее
    Установите tdf = CurrentDb.TableDefs (strTableName)
    TableExists = (Err.Number = 0)

Завершить функцию 

Вот пример используемой функции:

 Private Sub TableExists_Example()
    Если VBA_Access_Checks.TableExists("Таблица") = True Тогда
        MsgBox ("Таблица найдена!")
    Еще
        MsgBox ("Таблица НЕ найдена!")
    Конец, если
End Sub 

Функция создания таблицы

Эта функция создаст таблицу в Access VBA в текущей базе данных:

 Открытая функция CreateTable (table_fields As String, table_name As String) As Boolean
    Dim strCreateTable как строка
    Dim intCount как целое число
    Dim strFields() как строка
    Dim strValues() как строка
    Dim strInsertSQL как строка
    Dim intCounter как целое число
    Dim intData как целое число
 
    При ошибке Перейти к ошибке
 
    strFields = Разделить (table_fields, ",")
 
 
    strCreateTable = "СОЗДАТЬ ТАБЛИЦУ" & имя_таблицы & "("
 
    Для intCounter = 0 для UBound (strFields) - 1
        strCreateTable = strCreateTable & "[" & strFields(intCounter) & "] varchar(150),"
    Следующий
 
    Если Right(strCreateTable, 1) = "," Тогда
        strCreateTable = Left (strCreateTable, Len (strCreateTable) - 1)
        strCreateTable = strCreateTable & ")"
    Конец, если
 
    CurrentDb. Execute стркреатетабле
 
    Интерсчетчик = 0
    Целые данные = 0
 
    Если Число Ошибок = 0 Тогда
        СоздатьТаблицу = Истина
    Еще
        СоздатьТаблицу = Ложь
    Конец, если
    
    Выход из функции
Ошибка:
        СоздатьТаблицу = Ложь
        MsgBox Err.Number & " " & Err.Description
Завершить функцию 

Эта функция вернет значение TRUE, если таблица создана успешно, или FALSE, если таблица не создана.

Вы можете вызвать функцию следующим образом:

 Private Sub CreateTable_Example()
   Вызов CreateTable("f1,f2,f3,f4", "ttest")
End Sub 

Функция удаления/удаления таблицы

Эта функция удалит таблицу, если она существует:

 Общедоступная функция DeleteTableIfExists(TableName As String)
    Если Not IsNull(DLookup("Name", "MSysObjects", "Name='" & TableName & "'")) Then
        DoCmd.SetWarnings Ложь
        DoCmd.Close acTable, TableName, acSaveYes
        DoCmd. DeleteObject acTable = acDefault, TableName
        Debug.Print «Таблица» и «Имя таблицы» и «удалена...»
        DoCmd.SetWarnings Истина
    Конец, если
Завершить функцию 

Вы можете вызвать функцию следующим образом:

 Private Sub DeleteTableIfExists_Example()
   Вызов DeleteTableIfExists("Таблица1")
End Sub 

Автомакрос | Окончательная надстройка VBA | Нажмите для бесплатной пробной версии!

Функция пустой таблицы

Эта функция очистит таблицу, если она существует:

 Публичная функция EmptyTable(TableName As String)
    Если Not IsNull(DLookup("Name", "MSysObjects", "Name='" & TableName & "'")) Then
        DoCmd.SetWarnings Ложь
        DoCmd.RunSQL "УДАЛИТЬ * ИЗ" и имя_таблицы
        Debug.Print «Таблица» и «Имя таблицы» и «опустошена...»
        DoCmd.SetWarnings Истина
    Конец, если
Завершить функцию 

Вы можете вызвать функцию следующим образом:

 Private Sub EmptyTable_Example()
   Вызов пустой таблицы («Таблица1»)
End Sub 

Функция переименования таблицы

Эта функция VBA переименует таблицу:

 Открытая функция RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, необязательный strDBPath As String) As Boolean
    Dim db как DAO. Database
    Dim tdf как TableDef

    ' Ловушка для любых ошибок.
    При ошибке Возобновить Далее

    ' Если имя базы данных пусто...
    Если Trim$(strDBPath) = "" Тогда
        ' ...затем установите Db на текущий Db.
        Установить БД = ТекущаяБД()
    Еще
        ' В противном случае установите Db в указанную открытую базу данных.
        Установить db = DBEngine.Workspaces(0).OpenDatabase(strDBPath)

        ' Посмотрите, не произошла ли ошибка.
        Если ошибся, то
            'MsgBox "Не удалось найти базу данных для открытия: " & strDBPath
            ПереименоватьТаблицу = Ложь
            Выход из функции
        Конец, если
    Конец, если

    Если ObjectExists("Таблица", strOldTableName, strDBPath) Тогда
        Установите tdf = db.TableDefs (strOldTableName)
        tdf.Name = strNewTableName
        db.Закрыть
        ПереименоватьТаблицу = Истина
    Еще
        ПереименоватьТаблицу = Ложь
    Конец, если
Конечная функция

'Пример использования
Частная подпрограмма RenameTable_Example()
    Вызовите RenameTable("таблица1", "таблица2")
Конец суб 

Вы можете вызвать функцию следующим образом:

 Private Sub RenameTable_Example()
    Вызовите RenameTable("таблица1", "таблица2")
End Sub 

Усечение/удаление записей из таблицы

Эта функция удалит записи из таблицы с обработкой ошибок:

 Общедоступная функция Delete_From_Table(TableName As String, Criteria As String)
    При ошибке GoTo SubError
    
    DoCmd. SetWarnings Ложь
    DoCmd.RunSQL ("УДАЛИТЬ * ИЗ" и "Имя таблицы" и "ГДЕ" и критерии)
    DoCmd.SetWarnings Истина
    
Подвыход:
    Выход из функции
Подошибка:
    MsgBox "Ошибка Delete_From_Table: " & vbCrLf & Err.Number & ": " & Err.Description
    Возобновить
Конечная функция

'Пример использования
Общедоступная подпрограмма Delete_From_Table_Example()
 Вызов Delete_From_Table("Таблица1", "число=2")
Конец суб 

Экспорт таблицы в Excel

Эта строка кода экспортирует таблицу в Excel (новую электронную таблицу):

 DoCmd.OutputTo acOutputTable, "Table1", acFormatXLS, "c:\temp\ExportedTable.xls" 

Или вы можете использовать эту функцию:

 Общедоступная функция Export_Table_Excel (TableName As String, FilePath As String)
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True
Конечная функция

'Пример использования
Sub Export_Table_Excel_Example ()
    Export_Table_Excel ("Таблица1", "c:\temp\ExportedTable. xls")
Конец суб 

Приведенный выше код будет экспортирован в новую электронную таблицу. Вместо этого вы можете добавить таблицу в существующую электронную таблицу. В нашей статье об импорте/экспорте в Access VBA это рассматривается более подробно.

Автомакрос | Окончательная надстройка VBA | Нажмите для бесплатной пробной версии!

Добавить/добавить записи в таблицу

Эта функция добавит/добавит запись в таблицу:

 Открытая функция Append_Record_To_Table(TableName As String, FieldName As String, FieldValue As String)
    При ошибке GoTo SubError
    
    Dim rs As DAO.Recordset
    Dim SQL как строка
    Dim CurrentYear как целое число
    
    Установите rs = CurrentDb.OpenRecordset (имя таблицы)
    
    rs.AddNew
    rs(имя поля).Value = значение поля
    rs.Обновление
    
    rs.Закрыть
    Установить rs = ничего
    
Подвыход:
    Выход из функции
Подошибка:
    MsgBox "Ошибка RunSQL: " & vbCrLf & Err. Number & ": " & Err.Description
    Возобновить
Конечная функция

'Пример использования
Частная подпрограмма Append_Record_To_Table_Example()
    Вызов Append_Record_To_Table("Таблица1", "число", 3)
Конец суб 

Добавить запись в таблицу из формы

Эта функция добавит запись в таблицу из формы:

 Открытая функция Add_Record_To_Table_From_Form(TableName As String)
    При ошибке GoTo SubError
    
    Dim rs As DAO.Recordset
    
    Установите rs = CurrentDb.OpenRecordset (имя таблицы)
    rs.AddNew
    'rs![Поле1] = Значение1
    'rs![Поле2] = Значение2
    'rs![Поле3] = Значение3
    rs.Обновление
    
    rs.Закрыть
    Установить rs = ничего
    
Подвыход:
    Выход из функции
Подошибка:
    MsgBox "Ошибка Refresh_Form: " & vbCrLf & Err.Number & ": " & Err.Description
    
Завершить функцию 

 

 

Узнайте все о коде Microsoft Access VBA — функциях VBA, ярлыках и многом другом…!

Сводка:

Это руководство поможет вам сориентироваться в инструментах программирования, т. е. в коде VBA в Microsoft Access, и направит вас к некоторым ресурсам, где вы можете узнать больше о программировании.

Вы, должно быть, использовали макросы Access и очень хорошо знаете, насколько сложно с ними работать.….. не ? Но знаете ли вы, что можете упростить эту сложность, просто используя коды VBA в Access.

Теперь вы спросите, что это за код VBA и как его использовать? Что ж, чтобы получить ответы на такие вопросы, вам просто нужно придерживаться этого поста, получить полную информацию и упростить свой стиль работы в MS Access.

Введение в Access VBA

VBA — это язык программирования, который можно использовать для создания мощных приложений в Access. VBA включает в себя множество команд, которые позволяют выполнять гораздо более сложные операции, которые гораздо сложнее выполнить с помощью макросов Access.

Кроме того, вы можете расширить возможности VBA, используя сторонние элементы управления и написав свои собственные функции/процедуры для своих конкретных нужд. Вы также можете использовать код VBA для интеграции вашего доступа с другими программами.

Программирование Microsoft Access с помощью VBA может быть намного проще, если вы знаете сочетания клавиш для наиболее распространенных команд и наиболее распространенных фрагментов кода, которые вы будете использовать в редакторе после отладки приложения Access.

Проблемы остались? Исправьте их с помощью этого инструмента восстановления доступа:

Это программное обеспечение эффективно восстанавливает и восстанавливает все объекты ACCDB/MDB, включая таблицы, отчеты, запросы, записи, формы и индексы, а также модули, макросы и другие материалы.

  1. Загрузите Stellar Repair для Access с рейтингом Great на Cnet (загрузка начинается на этой странице ).
  2. Щелкните Browse и Search , чтобы найти поврежденную базу данных Access.
  3. Нажмите кнопку Восстановить , чтобы восстановить и просмотреть объекты базы данных.

Знаете ли вы, что вы можете активировать встроенные функции VBA в своем приложении Access 2013/2016. Хочет знать, как затем следовать этим пошаговым инструкциям.

Чтобы использовать встроенные функции VBA в вашей базе данных доступа, вам нужно будет включить визуальный базовый справочник под названием «Visual Basic для приложений».

  • Для этого нужно просто открыть базу. Нажмите Alt + F11, чтобы открыть  Microsoft Visual Basic  Когда появится окно Microsoft Visual Basic , выберите Ссылки в меню Инструменты .
  • Когда появится окно Ссылки , найдите ссылку под названием Visual Basic for Applications и убедитесь, что она отмечена флажком.
  • После этого нажмите кнопку OK.
  • Теперь ваша база данных доступа может использовать встроенные функции VBA. 902:30

Код общего доступа для программирования и отладки VBA

Вот список общего кода VBA, который поможет вам выполнить задачу VBA, так что держите его под рукой.

Чтобы открыть форму в представлении формы:

DoCmd.OpenForm » имя формы «,acNormal

Чтобы внести изменения в свойство формы в открытой форме:

Формы![ formName ]. имя_свойства = новое значение

Получить значение из элемента управления в открытой форме:

Формы![ formName ]![ controlName ].Value

Изменение значения элемента управления в открытой форме:

Формы![ formName ]![ controlName ].Value = newValue

Изменение свойства элемента управления в открытой форме:

Формы![ formName ]![ имя_управления ]. имя свойства = новое значение

Закрыть форму, сохранив изменения:

DoCmd.Close acForm, » formName «, acSaveYes

Распечатать отчет:

DoCmd.OpenReport » reportName «, acViewNormal

Запустить запрос действия:

DoCmd.RunSQL » Оператор SQL »

Для отображения простого сообщения

MsgBox » ваше сообщение »

Чтобы задать вопрос «да/нет» на экране.

переменная = MsgBox (« ваше сообщение », vbQuestion + vbYesNo)

ЧИТАЙТЕ ТАКЖЕ:

Как исправить ошибку MS Access Reserved 7713, 7748, 7711 В Access 2016/ 2013/2010/2007

Навигация и выбор кода в Vba

Вы можете использовать эти ярлыки VBA в окне кода и непосредственном окне ( которые позволяют вам запускать код в любое время, прямо на месте), чтобы упростить ваш стиль работы.

Действие Горячая клавиша
Переместить курсор вправо на один символ
Выберите символ справа Shift+→
Переместить курсор вправо на одно слово Ctrl+→
Выбор до конца слова Ctrl+Shift+→
Переместить курсор влево на один символ
Выбор символа слева от курсора Shift+ ←
Переместить курсор влево на одно слово Ctrl+ ←
Переместить курсор в начало строки Дом
Выделить текст в начале строки Shift+Home
Переместить курсор в конец строки Конец
Выделить текст до конца строки Shift+Конец
Переместить курсор на строку вверх
Переместить курсор на строку вниз
Переместить курсор к следующей процедуре Ctrl+↓
Переместить курсор на предыдущую процедуру Ctrl+↑
Прокрутка вверх на один экран ПгУп
Прокрутить на один экран вниз ПГДН
Перейти к началу модуля Ctrl+Home
Выделить весь текст в верхней части модуля Ctrl+Shift+Home
Перейти к нижней части модуля Ctrl+Конец
Выделить весь текст в нижней части модуля Ctrl+Shift+End
Выбор выреза Ctrl+X
Выбор копии Ctrl+C
Выбор пасты Ctrl+V
Вырезать текущую строку в буфер обмена Ctrl+Y
Удалить до конца слова Ctrl+Delete
Удалить символ или выделенный текст Удалить (Del)
Удалить символ слева от курсора Возврат
Удалить до конца слова Ctrl+Delete
Удалить в начало слова Ctrl+Backspace
Отменить Ctrl+Z
Линия отступа Вкладка
Линия выступа Shift+Tab
Найти Ctrl+F
Заменить Ctrl+H
Найти далее Ф3
Найти предыдущий Shift+F3
Получить справку по выбранному слову Ф1
Краткая информация Ctrl+I

Клавиши быстрого доступа общего редактора VBA

В следующей таблице приведены сведения о клавишах быстрого доступа и их функциях, доступных в редакторе Visual Basic, где вы будете писать, изменять и запускать код VBA.

Действие Горячая клавиша
Переключение между Access и редактором VBA Alt+F11
Справка Ф1
Просмотр объектов Ф2
Просмотр свойств/событий Ф4
Окно просмотра кода Ф7
Просмотр непосредственного окна Ctrl+G
Контекстное меню просмотра Shift+F10 (или щелчок правой кнопкой мыши)
Запуск вспомогательной/пользовательской формы Ф5
Останов выполнения кода Ctrl+Break
Закройте редактор VBA и вернитесь в Access Alt+Q

Клавиши быстрого доступа для отладки VBA

Код на языке программирования должен быть написан точно, не должно быть ошибок или багов. Если есть какие-либо ошибки или ошибки, это покажет проблему компиляции. К счастью, вы можете быстро отлаживать код в VBA с помощью этих ярлыков отладки.

Действие Горячая клавиша
Переключить точку останова Ф9
Войдите в Ф8
Переступить через Shift+F8
Выйти Ctrl+Shift+F8
Перейти к курсору Ctrl+F8
Очистить все точки останова Ctrl+F9

ChangeLinkPath

Эта функция в основном используется для изменения старого пути для связанных таблиц на новый путь. Функция делает это, удаляя связанные таблицы, а затем повторно связывая их с той же таблицей в базе данных, указанной в новом пути.

Открытая функция ChangeLinkPath(strNewPath As String) As String

Dim dbs As DAO. Database
Dim strTblName As String
Dim colTbl As Collection
Dim intbl As Integer

Если strNewPath <> «» И Dir(strNewPath) <> «» Тогда

      Set colTbl = New Collection 
      Set dbs = CurrentDb 

для inttbl = dbs.tabledefs.count -от 1 до 0 Шаг с -1
, если dbs.tabledefs (inttbl) .connect <> «» и _
Не dbs.tabledefs (inttbl). ” & strNewPath Тогда 
coltbl.add dbs.tabledefs (inttbl) .name
dbs.tabledefs.delete dbs.tabledefs (inttbl) .name
End, если
ntemble

00301030301030303010300300

000 0

90 0 0 .

для inttbl = coltbl.count к 1 шагу -1
strtblname = coltbl (inttbl)
docmd.transferdatabase aclink, «Microsoft Ascess», _
. 0190
            Debug.Print «установлено соединение с ‘» & strTblName & «‘» 
      Next intTbl 

      Set dbs = Nothing 
      Set colTbl = Nothing 
      Debug.Print «DONE!»
      ChangeLinkPath = «ГОТОВО!»

Else
      Debug.Print «Новый путь не указан. Никаких изменений!»
      ChangeLinkPath = «Новый путь не указан. Никаких изменений!»

Конец, если

Exit Function 
End Function

ImportExportSpecification

Этот раздел Access VBA содержит документацию по всем объектам, свойствам, методам и событиям, содержащимся в объектной модели доступа.

ImportExportSpecification  содержит всю информацию, необходимую для доступа, чтобы повторить операцию импорта/экспорта без ввода каких-либо данных.

Необходимо использовать метод Add коллекции ImportExportSpecifications для создания нового объекта ImportExportSpecification . Используйте метод Execute  , чтобы запустить сохраненную операцию импорта или экспорта.

ЧИТАЙТЕ ТАКЖЕ:

5 исправлений для восстановления базы данных Access, которая находится в несогласованном состоянии Он используется для создания объединенной строки из значений одного поля из всех записей, которые необходимо включить в объединенную строку.

Включаемые записи, а также поле, используемое для создания объединенной строки, задаются оператором SQL, который передается функции.

Переданный оператор SQL должен возвращать только одно поле, чтобы эта функция работала правильно. Значение в объединенной строке задается строкой, предоставленной функции в качестве строки-разделителя.

Открытая функция ConcatenateFieldValues(pstrSQL As String, _
      Необязательный pstrDelim As String = «, «) As String

Dim strConcat As String

‘======Для комментария ADO следующие 2 строки и =======
‘====== раскомментируйте строки ADO ниже =======
Dim db As DAO. Database
Dim rs As DAO.Recordset
On Error Resume Next
strConcat = «»
‘======Для ADO закомментируйте следующие 2 строки DAO и ==== ===
‘====== раскомментировать строки ADO ниже =======
Set db = CurrentDb
Set rs = db.OpenRecordset(pstrSQL)

‘====== Для ADO раскомментируйте следующие две строки и =====
‘====== закомментируйте строки DAO выше и ниже ======
‘ Dim rs As New ADODB.Recordset
‘ rs.Open pstrSQL, CurrentProject.Connection, _
‘       adOpenKeyset, adLockOptimistic
С rs
Если нет .0190
            .MoveFirst
            Do While Not .EOF
                  strConcat = strConcat & .Fields(0) & pstrDelim
                  .MoveNext
            Loop
      End If
      . Close
End С
Установите rs = Ничего
‘====== Комментарий следующих 2 строк для ADO ========
db.Close
Set db = Nothing
If Len(strConcat) > 0 Then strConcat = _
      Left(strConcat, Len(strConcat) – Len(pstrDelim))
ConcatenateFieldValues ​​= strConcat
Exit Function
End Function

DeleteAllRelationships()

DeleteAllRelationships() функция используется в основном для удаления 9 093 отношений 09189 0 0 код0064 в текущей базе данных.

В некоторых случаях база данных доступа не может отображать отношения между таблицами в окне отношений. Поскольку вы не могли ни просмотреть отношения, ни удалить их, в результате чего ваша база данных перейдет в несогласованное состояние. Так что для таких случаев этот код предоставляется как исправление.

Функция DeleteAllRelationships() As String
‘ ВНИМАНИЕ! Удаляет все отношения в текущей базе данных.
Dim db As Database ‘ Текущая БД
Dim rex As Relations ‘ Отношения текущей БД.
Dim rel As Отношение ‘ Отношение удаляется.
Dim iKt As Integer ‘ Количество удаленных отношений.
Dim sMsg As String ‘ Строка MsgBox.

sMsg = «Об удалении ВСЕХ взаимосвязей между таблицами в текущей базе данных». & vbCrLf & «Продолжить?»
Если MsgBox(sMsg, vbQuestion + vbYesNo + vbDefaultButton2, «Вы уверены?») = vbNo Then
DeleteAllRelationships = «Операция отменена»
Выход из функции
Конец, если

SET DB = CurrentDB ()
SET REX = DB.RELATIONS
IKT = REX.Count
DO while rex.count> 0
DELUG.PRINT while rex.count> 0
DELUG.