Достъп до VBA таблици - Актуализиране, Преброяване, Изтриване, Създаване, Преименуване, Експорт

Този урок ще ви научи как да работите с Access Tables с помощта на VBA.

Достъп до VBA таблици

За начало ще демонстрираме простите команди за работа с таблици в Access. По -късно в този урок ще ви покажем пълни професионално разработени функции за работа с таблици в Access.

Създаване на таблица

Този код ще използва SQL за създаване на таблица с име „Таблица1“ с полета „ИД“ и „Име“:

 Dim table_name As String Dim fields As String table_name = "Table1" fields = "([ID] varchar (150), [Name] varchar (150))" CurrentDb.Execute "CREATE TABLE" & table_name & fields

Затваряне на таблицата

Този ред с код VBA ще затвори таблица (запазване на промените):

DoCmd.Close acTable, "Таблица1", acSaveДа

За да затворите таблица без запазване:

DoCmd.Close acTable, "Таблица1", acSaveNo

Изтриване на таблица

Този код ще изтрие таблица (забележка: първо таблицата трябва да бъде затворена):

DoCmd.Close acTable, "Таблица1", acSaveДа DoCmd.DeleteObject acTable = acDefault, "Таблица1"

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

Този ред код ще преименува таблица за достъп:

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

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

Задайте tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName

Празна / изчистена таблица

Този код VBA ще изпразни таблица:

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

Нарежете таблицата / Изтрийте записите

Този ред с код VBA използва SQL за изтриване на записи от таблица, които отговарят на определени критерии:

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

Експортирайте таблица в Excel

За да експортирате таблица в Excel, използвайте DoCmd.OutputTo метод:

DoCmd.OutputTo acOutputTable, "Таблица1", acFormatXLS, "c: \ temp \ ExportedTable.xls"

или използвайте DoCmd.TransferSpreadsheet метод:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Таблица1", "c: \ temp \ ExportedTable.xls", Вярно

Актуализирайте таблицата

Следният код ще актуализира записа, без да показва предупредителното съобщение:

DoCmd.SetWarnings (False) DoCmd.RunSQL "Актуализиране на продукти T SET ПродуктиT.ProductName = 'Продукт AAA' КЪДЕ (((ProductsT.ProductID) = 1))"

Достъп до VBA таблични функции

Горните примери за код са простите команди, които можете да използвате за взаимодействие с таблици с помощта на VBA. Често обаче ще трябва да добавите много повече поддържащ код (включително обработка на грешки), за да използвате правилно тези команди. По -долу ще намерите професионално разработени функции за работа с таблици в Access.

Пребройте табличните записи

Тази функция ще брои броя на записите в таблица:

Публична функция Count_Table_Records (TableName As String) As Integer On Error GoTo Err: Dim r As DAO.Recordset Dim c As Integer Set r = CurrentDb.OpenRecordset ("Изберете count (*) като rcount от" & TableName) .OpenRecordset If (r .EOF) Тогава c = 0 Иначе c = Nz (r! RCount, 0) Край Ако Count_Table_Records = c Изход от функцията Err: Извикайте MsgBox ("Възникна грешка:" & Err.Description, vbExclamation, "Грешка") Крайна функция ' Пример за използване Частен подсчет_таблица_записи_пример () MsgBox (брой_таблица_записи ("таблица1"))

Проверете дали таблицата съществува функция

Тази функция ще тества дали съществува таблица, връщайки TRUE или FALSE:

Публична функция TableExists (ByVal strTableName As String) Като Boolean 'Функция: Определете дали таблица съществува в база данни на Access' Аргументи: strTablename: Име на таблица за проверка Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Крайна функция

Ето пример за използваната функция:

Private Sub TableExists_Example () If VBA_Access_Checks.TableExists ("Таблица") = Вярно Тогава MsgBox ("Таблица е намерена!") Друг MsgBox ("Таблица НЕ е намерена!") Край Ако End Sub

Създаване на функция за таблица

Тази функция ще създаде таблица в Access VBA в Access в текущата база данни:

Публична функция CreateTable (table_fields As String, table_name As String) As Boolean Dim strCreateTable As String Dim intCount As Integer Dim strFields () As String Dim strValues ​​() As String Dim strInsertSQL As String Dim intCounter As Integer Dim intData As Integer При грешка GoTo strFields = Split (table_fields, ",") strCreateTable = "CREATE TABLE" & table_name & "(" For intCounter = 0 To UBound (strFields) - 1 strCreateTable = strCreateTable & "[" & strFields (intCounter) & "] varchar ( 150), "Next If Right (strCreateTable, 1) =", "Тогава strCreateTable = Left (strCreateTable, Len (strCreateTable) - 1) strCreateTable = strCreateTable &") "Край Ако CurrentDb.Execute strCreateTable intCounter = 0 intData = 0 Ако Err.Number = 0 Тогава CreateTable = True Else CreateTable = False End If Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description Крайна функция

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

Можете да извикате функцията по следния начин:

Частен под

Функция за изтриване / пускане на таблица

Тази функция ще изтрие таблица, ако съществува:

Обществена функция DeleteTableIfExists (TableName As String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Тогава DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd DeleteObject acTable = acDefault, TableName Debug.Print "Table" & TableName & "deleted …" DoCmd.SetWarnings True End If End Функция

Можете да извикате функцията по следния начин:

Private Sub DeleteTableIfExists_Example () Извикване DeleteTableIfExists ("Table1") End Sub

Функция за празна таблица

Тази функция ще изпразни таблица, ако съществува:

Публична функция EmptyTable (TableName As String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Тогава DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Debug.Print "Table" & TableName & "emptied …" DoCmd.SetWarnings True End If End Функция

Можете да извикате функцията по следния начин:

Частен под EmptyTable_Example () Извикване EmptyTable ("Таблица1") Край Sub

Преименувайте функцията на таблицата

Тази функция VBA ще преименува таблица:

Публична функция RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, Незадължително strDBPath As String) Като Boolean Dim db Като DAO.Database Dim tdf Като TableDef 'Trap за всякакви грешки. При включване на грешка Следваща 'Ако името на базата данни е празно … Ако Trim $ (strDBPath) = "" След това "… след това задайте Db на текущия Db. Задайте db = CurrentDb () В противен случай 'В противен случай задайте Db на посочената отворена база данни. Задайте db = DBEngine.Workspaces (0) .OpenDatabase (strDBPath) 'Вижте дали е възникнала грешка. Ако Err Тогава 'MsgBox "Не може да се намери база данни за отваряне:" & strDBPath RenameTable = False Exit Функция End End Ако End If Ако ObjectExists ("Таблица", strOldTableName, strDBPath) След това задайте tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = True Else RenameTable = False End If End Function 'Пример за използване Private Sub RenameTable_Example () Call RenameTable ("table1", "table2") End Sub

Можете да извикате функцията по следния начин:

Private Sub RenameTable_Example () Извикване RenameTable ("table1", "table2") End Sub

Нарежете / изтрийте записите от таблицата

Тази функция ще изтрие записи от таблица с обработка на грешки:

Обществена функция Delete_From_Table (TableName As String, Criteria As String) On Error GoTo SubError DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM" & TableName & "WHERE" & Criteria) DoCmd.SetWarnings True SubExit: Грешка Delete_From_Table: "& vbCrLf & Err.Number &": "& Err. Описване Възобновяване на под -изход Крайна функция 'Пример за използване Public Sub Delete_From_Table_Example () Извикване Delete_From_Table (" Table1 "," num = 2 ") End Sub

Експортирайте таблица в Excel

Този ред код ще експортира таблица в Excel (нова електронна таблица):

DoCmd.OutputTo acOutputTable, "Таблица1", acFormatXLS, "c: \ temp \ ExportedTable.xls"

Или можете да използвате тази функция:

Публична функция Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Функция 'Пример за използване Ex Export_Table_Excel_Example1 "\ Export_T End Sub

Горният код ще се експортира в нова електронна таблица. Вместо това можете да добавите таблица към съществуваща електронна таблица. Нашата статия за импортиране / експортиране в Access VBA обхваща това по -подробно.

Добавяне / добавяне на записи към таблица

Тази функция ще добави / добави запис към таблица:

Публична функция Append_Record_To_Table (TableName As String, FieldName As String, FieldValue As String) On Error GoTo SubError Dim rs As DAO.Recordset Dim SQL As String Dim CurrentYear As Integer Set rs = CurrentDb.OpenRecordset (TableName) nrs.Ad .Value = FieldValue rs.Update rs.Close Set rs = Nothing SubExit: Exit Функция SubError: MsgBox "RunSQL error:" & vbCrLf & Err.Number & ":" & Err.Description Resume SubExit End Function 'Пример за използване Private Private Append_Text_Record_ () Обадете се Append_Record_To_Table ("Таблица1", "номер", 3) Край на под

Добавяне на запис към таблица от формуляр

Тази функция ще добави запис към таблица от формуляр:

Обществена функция Add_Record_To_Table_From_Form (Име на таблицата като низ) При грешка GoTo SubError Dim rs Като DAO.Recordset Задайте rs = CurrentDb.OpenRecordset (TableName) rs.AddNew 'rs! [Field1] = Value1' rs2 [Field2] Field3] = Value3 rs.Update rs.Close Set rs = Nothing SubExit: Exit Функция SubError: MsgBox "Refresh_Form error:" & vbCrLf & Err.Number & ":" & Err.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave