Přístup k tabulkám VBA - aktualizace, počítání, mazání, vytváření, přejmenování, export

Tento tutoriál vás naučí pracovat s přístupovými tabulkami pomocí VBA.

Přístup k tabulkám VBA

Nejprve si ukážeme jednoduché příkazy pro práci s tabulkami v Accessu. Později v tomto tutoriálu vám ukážeme úplné profesionálně vyvinuté funkce pro práci s tabulkami v Accessu.

Vytvořit tabulku

Tento kód použije SQL k vytvoření tabulky s názvem „Tabulka1“ s poli „ID“ a „Název“:

 Dim název_tabulky jako řetězec Dim pole jako řetězec název_tabulky = "Tabulka1" pole = "([ID] varchar (150), [Název] varchar (150))" CurrentDb.Execute "CREATE TABLE" & table_name & fields

Zavřít tabulku

Tento řádek kódu VBA zavře tabulku (uložení změn):

DoCmd.Close acTable, "Table1", acSaveYes

Zavření tabulky bez uložení:

DoCmd.Close acTable, "Table1", acSaveNo

Odstranit tabulku

Tento kód odstraní tabulku (poznámka: nejprve by měla být tabulka uzavřena):

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

Přejmenovat tabulku:

Tento řádek kódu přejmenuje přístupovou tabulku:

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

Další možností je použití vlastnosti TableDefs databázového objektu.

Nastavit tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName

Prázdná / prázdná tabulka

Tento kód VBA vyprázdní tabulku:

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

Zkraťte tabulku / odstraňte záznamy

Tento řádek kódu VBA používá SQL k odstranění záznamů z tabulky, které splňují určitá kritéria:

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

Exportovat tabulku do Excelu

Chcete -li exportovat tabulku do aplikace Excel, použijte DoCmd.OutputTo metoda:

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

nebo použijte List DoCmd.TransferSpreadsheet metoda:

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

Aktualizovat tabulku

Následující kód aktualizuje záznam bez zobrazení varovné zprávy:

DoCmd.SetWarnings (False) DoCmd.RunSQL "Update ProductsT SET ProductsT.ProductName = 'Product AAA' WHERE ((((ProductsT.ProductID) = 1))"

Přístup k tabulkovým funkcím VBA

Výše uvedené příklady kódu jsou jednoduché příkazy, které můžete použít k interakci s tabulkami pomocí VBA. Ke správnému využití těchto příkazů však často budete muset přidat mnohem více podpůrného kódu (včetně zpracování chyb). Níže najdete profesionálně vyvinuté funkce pro práci s tabulkami v Accessu.

Počítat tabulkové záznamy

Tato funkce spočítá počet záznamů v tabulce:

Veřejná funkce 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 ("Select count (*) as rcount from" & TableName) .OpenRecordset If (r .EOF) Potom c = 0 Jinak c = Nz (r! RCount, 0) End If Count_Table_Records = c Exit Function Err: Call MsgBox ("Došlo k chybě:" & Err.Description, vbExclamation, "Error") End Function ' Příklad použití Private Sub Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) End Sub

Zkontrolujte, zda tabulka existuje

Tato funkce otestuje, zda tabulka existuje, vrátí hodnotu TRUE nebo FALSE:

Public Function TableExists (ByVal strTableName As String) As Boolean 'Function: Determine if table exists in an Access database' Arguments: strTablename: Name of table to check Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Koncová funkce

Zde je příklad používané funkce:

Private Sub TableExists_Example () If VBA_Access_Checks.TableExists ("Table") = True Then MsgBox ("Table was found!") Else MsgBox ("Table was NOT found!") End If End Sub

Vytvořit funkci tabulky

Tato funkce vytvoří tabulku v Access VBA v aktuální databázi:

Veřejná funkce 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 On Error GoTo Err 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) =", "Then strCreateTable = Left (strCreateTable, Len (strCreateTable) - 1) strCreateTable = strCreateTable &") "End If CurrentDb.Execute strCreateTable intCounter = 0 intData = 0 If Err.Number = 0 Then CreateTable = True Else CreateTable = False End If Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description End Function

Tato funkce vrátí hodnotu TRUE, pokud je tabulka vytvořena úspěšně, nebo FALSE, pokud tabulka není vytvořena.

Funkci můžete volat takto:

Private Sub CreateTable_Example () Volání CreateTable ("f1, f2, f3, f4", "ttest") End Sub

Funkce Delete / Drop Table

Tato funkce odstraní tabulku, pokud existuje:

Veřejná funkce DeleteTableIfExists (TableName As String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'" ")) Then DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd. DeleteObject acTable = acDefault, TableName Debug.Print "Table" & TableName & "deleted…" DoCmd.SetWarnings True End If End Funkce

Funkci můžete volat takto:

Soukromý podřízený DeleteTableIfExists_Example () Volání DeleteTableIfExists ("Table1") End Sub

Funkce prázdné tabulky

Tato funkce vyprázdní tabulku, pokud existuje:

Veřejná funkce EmptyTable (TableName As String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "" ")) Then DoCmd.SetWarnings False DoCmd.RunSQL" DELETE * FROM "& TableName Debug.Print "Tabulka" & TableName & "vyprázdněno …" DoCmd.SetWarnings True End If End Funkce

Funkci můžete volat takto:

Private Sub EmptyTable_Example () Volejte EmptyTable ("Table1") End Sub

Přejmenovat funkci tabulky

Tato funkce VBA přejmenuje tabulku:

Veřejná funkce RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, Volitelné strDBPath As String) As Boolean Dim db As DAO.Database Dim tdf As TableDef 'Trap for any errors. Při chybě Pokračovat Další 'Pokud je název databáze prázdný … Pokud Oříznout $ (strDBPath) = "" Potom' … pak nastavte Db na aktuální Db. Nastavit db = CurrentDb () Jinak 'Jinak nastavte Db na zadanou otevřenou databázi. Nastavit db = DBEngine.Workspaces (0). OpenDatabase (strDBPath) 'Podívejte se, zda nedošlo k chybě. If Err Then 'MsgBox "Nelze najít databázi k otevření:" & strDBPath RenameTable = False Exit Funkce End If End If If ObjectExists ("Table", strOldTableName, strDBPath) Then Set tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = True Else RenameTable = False End If End Funkce 'Příklad použití Private Sub RenameTable_Example () Volání RenameTable ("table1", "table2") End Sub

Funkci můžete volat takto:

Soukromá podjednotka přejmenováníTabulka () Volejte přejmenovatelnou tabulku ("tabulka1", "tabulka2") Koncová podřízená

Zkraťte / odstraňte záznamy z tabulky

Tato funkce odstraní záznamy z tabulky se zpracováním chyb:

Veřejná funkce Delete_From_Table (TableName jako řetězec, kritéria jako řetězec) Při chybě GoTo SubError DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM" & TableName & "WHERE" & Criteria) DoCmd.SetWarnings True SubExit: Exit Function SubError Chyba Delete_From_Table: "& vbCrLf & Err.Number &": "& Err.Description Resume SubExit End Function 'Usage Example Public Sub Delete_From_Table_Example () Call Delete_From_Table (" Table1 "," num = 2 ") End Sub

Exportovat tabulku do Excelu

Tento řádek kódu exportuje tabulku do aplikace Excel (nová tabulka):

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

Nebo můžete použít tuto funkci:

Public Function Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Usage Example Sub Export_Table_Excel_Example () Export_Table_Excel ("Table1", "Table1", " End Sub

Výše uvedený kód bude exportován do nové tabulky. Místo toho můžete přidat tabulku do existující tabulky. Náš článek o importu / exportu v Access VBA se tomu věnuje podrobněji.

Přidat / připojit záznamy k tabulce

Tato funkce přidá / připojí záznam do tabulky:

Veřejná funkce 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) rs.AddNew rs (FieldName) .Value = FieldValue rs.Update rs.Close Set rs = Nothing SubExit: Exit Function SubError: MsgBox "RunSQL error:" & vbCrLf & Err.Number & ":" & Err.Description Resume SubExit End Function 'Usage Example' Private Sub Append_Record_To_Table_Ex () Volejte Append_Record_To_Table ("Tabulka1", "num", 3) Konec Sub

Přidat záznam do tabulky z formuláře

Tato funkce přidá záznam do tabulky z formuláře:

Veřejná funkce Add_Record_To_Table_From_Form (TableName As String) On Error GoTo SubError Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset (TableName) rs.AddNew 'rs! [Field1] = Value1' rs! [Field2] = Value2 'rs! Field3] = Value3 rs.Update rs.Close Set rs = Nothing SubExit: Exit Function SubError: MsgBox "Refresh_Form error:" & vbCrLf & Err.Number & ":" & Err.Description End Function

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave