Åtkomst till VBA -tabeller - Uppdatera, räkna, ta bort, skapa, byta namn, exportera

Denna handledning lär dig hur du arbetar med åtkomsttabeller med VBA.

Öppna VBA -tabeller

Till att börja med kommer vi att visa de enkla kommandona för att arbeta med Tabeller i Access. Senare i denna handledning kommer vi att visa dig fullständigt professionellt utvecklade funktioner för att arbeta med tabeller i Access.

Skapa bord

Denna kod kommer att använda SQL för att skapa en tabell med namnet "Table1" med fält "ID" och "Namn":

 Dim tabellnamn som sträng Dim fält som sträng tabellnamn = "Tabell1" fält = "([ID] varchar (150), [Namn] varchar (150))" CurrentDb.Execute "SKAPA TABELL" & tabellnamn och fält

Stäng tabell

Denna rad med VBA -kod stänger en tabell (sparar ändringar):

DoCmd.Close acTable, "Table1", acSaveYes

Så här stänger du ett bord utan att spara:

DoCmd.Close acTable, "Table1", acSaveNo

Ta bort tabell

Denna kod raderar en tabell (notera: först borde tabellen stängas):

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

Byt namn på tabell:

Denna kodrad byter namn på en åtkomsttabell:

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

Ett annat alternativ är att använda egenskapen TableDefs för ett databasobjekt.

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

Tomt / klart bord

Denna VBA -kod kommer att tömma en tabell:

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

Avkorta tabell / radera poster

Denna rad med VBA -kod använder SQL för att ta bort poster från en tabell som uppfyller vissa kriterier:

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

Exportera tabell till Excel

Om du vill exportera en tabell till Excel använder du DoCmd.OutputTo metod:

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

eller använd DoCmd.TransferSpreadsheet metod:

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

Uppdatera tabell

Följande kod uppdaterar en post utan att visa varningsmeddelandet:

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

Öppna VBA -tabellfunktioner

Ovanstående kodexempel är de enkla kommandon du kan använda för att interagera med tabeller med VBA. Men du kommer ofta att behöva lägga till mycket mer stödjande kod (inklusive felhantering) för att korrekt använda dessa kommandon. Nedan hittar du professionellt utveckla funktioner för att arbeta med Tabeller i Access.

Räkna tabellposter

Denna funktion räknar antalet poster i en tabell:

Public Function 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) Sedan c = 0 Annat c = Nz (r! RCount, 0) End If Count_Table_Records = c Avsluta funktion Err: Ring MsgBox ("Ett fel uppstod:" & Err.Description, vbExclamation, "Error") End Function ' Användningsexempel Privat under Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) End Sub

Kontrollera om tabellen existerar

Denna funktion testar om det finns en tabell som returnerar SANT eller FALSKT:

Public Function TableExists (ByVal strTableName As String) As Boolean 'Funktion: Bestäm om tabellen finns i en Access -databas' Argument: strTablename: Namn på tabell för att kontrollera Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Slutfunktion

Här är ett exempel på funktionen som används:

Private Sub TableExists_Example () If VBA_Access_Checks.TableExists ("Table") = True Då MsgBox ("Tabellen hittades!") Annat MsgBox ("Tabellen hittades INTE!") Sluta om End Sub

Skapa tabellfunktion

Denna funktion skapar en tabell i Access VBA i den aktuella databasen:

Public Function 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 Sedan CreateTable = True Else CreateTable = False End Om Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description End Function

Denna funktion returnerar SANT om tabellen skapas framgångsrikt eller FALSK om tabellen inte skapas.

Du kan kalla funktionen så här:

Privat del CreateTable_Example () Call CreateTable ("f1, f2, f3, f4", "ttest") Avsluta sub

Radera / släpp tabellfunktion

Denna funktion kommer att ta bort en tabell om den finns:

Public Function 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 & "delete …" DoCmd.SetWarnings True End If End Function

Du kan kalla funktionen så här:

Private Sub DeleteTableIfExists_Example () Call DeleteTableIfExists ("Table1") End Sub

Tom tabellfunktion

Denna funktion kommer att tömma en tabell om den finns:

Public Function EmptyTable (TableName As String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Then DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Debug.Print "Table" & TableName & "tömd …" DoCmd.SetWarnings True End If End -funktion

Du kan kalla funktionen så här:

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

Byt namn på tabellfunktion

Denna VBA -funktion kommer att byta namn på en tabell:

Public Function RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, optional strDBPath As String) As Boolean Dim db As DAO.Database Dim tdf As TableDef 'Trap for any errors. Vid fel Återuppta nästa "Om databasnamnet är tomt … Om Trim $ (strDBPath) =" "Då" … ställ sedan in Db till nuvarande Db. Ange db = CurrentDb () Annat 'Annars ställer du in Db till den angivna öppna databasen. Ange db = DBEngine.Workspaces (0) .OpenDatabase (strDBPath) 'Se om ett fel uppstod. If Err Då kunde 'MsgBox "inte hitta databasen för att öppna:" & strDBPath RenameTable = False Exit Function 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 Function 'Exempel Privat Sub RenameTable_Example () Call RenameTable ("table1", "table2") End Sub

Du kan kalla funktionen så här:

Private Sub RenameTable_Example () Call RenameTable ("table1", "table2") End Sub

Trunkera / radera poster från tabellen

Denna funktion tar bort poster från en tabell med felhantering:

Public Function 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: Exit Function SubEr: Exit Function SubEr: Delete_From_Table error: "& vbCrLf & Err.Number &": "& Err.Description Resume SubExit End Function 'Usage Exempel Public Sub Delete_From_Table_Example () Call Delete_From_Table (" Table1 "," num = 2 ") End Sub

Exportera tabell till Excel

Denna kodrad exporterar en tabell till Excel (ett nytt kalkylblad):

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

Eller så kan du använda den här funktionen:

Public Function Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Exempel Exempel_Table_Excel_Example () Export_Table_Excel ("Table1", "Tab" Avsluta Sub

Ovanstående kod exporteras till ett nytt kalkylblad. Istället kan du lägga till en tabell i ett befintligt kalkylblad. Vår artikel om import / export i Access VBA behandlar detta mer detaljerat.

Lägg till / lägg till poster i en tabell

Denna funktion lägger till / lägger till en post i en tabell:

Public Function 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 Exempel Private Sub Append_Record_To_Table_ () Ring Append_Record_To_Table ("Tabell1", "num", 3) Avsluta Sub

Lägg till post i tabell från formulär

Denna funktion lägger till en post i en tabell från ett formulär:

Public Function 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

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave