Toegang tot VBA-tabellen - bijwerken, tellen, verwijderen, maken, hernoemen, exporteren

In deze zelfstudie leert u werken met Access Tables met behulp van VBA.

Toegang tot VBA-tabellen

Om te beginnen zullen we de eenvoudige opdrachten demonstreren voor het werken met tabellen in Access. Verderop in deze tutorial laten we u volledige professioneel ontwikkelde functies zien voor het werken met tabellen in Access.

Tabel maken

Deze code gebruikt SQL om een ​​tabel met de naam "Table1" te maken met de velden "ID" en "Name":

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

Tabel sluiten

Deze regel VBA-code sluit een tabel (wijzigingen opslaan):

DoCmd.Close acTable, "Table1", acSaveYes

Een tabel sluiten zonder op te slaan:

DoCmd.Close acTable, "Table1", acSaveNo

Tabel verwijderen

Deze code verwijdert een tabel (let op: eerst moet de tabel worden gesloten):

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

Tabel hernoemen:

Deze regel code hernoemt een toegangstabel:

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

Een andere optie is het gebruik van de eigenschap TableDefs van een databaseobject.

Stel tdf = db.TableDefs(strOldTableName) in tdf.Name = strNewTableName

Tafel leegmaken / wissen

Deze VBA-code maakt een tabel leeg:

DoCmd.RunSQL "VERWIJDEREN * UIT " & "Tabel1"

Tabel afbreken / records verwijderen

Deze regel VBA-code gebruikt SQL om records uit een tabel te verwijderen die aan bepaalde criteria voldoen:

DoCmd.RunSQL ("VERWIJDEREN * VAN " & "Tabel1" & "WAAR" & "num=2")

Tabel exporteren naar Excel

Om een ​​tabel naar Excel te exporteren, gebruik de DoCmd.OutputTo methode:

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

of gebruik de DoCmd.TransferSpreadsheet methode:

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

Tabel bijwerken

De volgende code werkt een record bij, zonder het waarschuwingsbericht weer te geven:

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

Toegang tot VBA-tabelfuncties

De bovenstaande codevoorbeelden zijn de eenvoudige opdrachten die u kunt gebruiken om te communiceren met tabellen met behulp van VBA. U zult echter vaak veel meer ondersteunende code (inclusief foutafhandeling) moeten toevoegen om deze opdrachten correct te gebruiken. Hieronder vindt u professioneel ontwikkelde functies voor het werken met tabellen in Access.

Tabelrecords tellen

Deze functie telt het aantal records in een tabel:

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) Dan c = 0 Anders c = Nz(r!rCount, 0) End If Count_Table_Records = c Functie verlaten Err: Call MsgBox("Er is een fout opgetreden: " & Err.Description, vbExclamation, "Error") End Function ' Gebruiksvoorbeeld Private Sub Count_Table_Records_Example() MsgBox (Count_Table_Records("Table1")) End Sub

Controleer of de tabel bestaat Functie

Deze functie test of er een tabel bestaat en geeft TRUE of FALSE terug:

Public Function TableExists(ByVal strTableName As String) As Boolean 'Functie: Bepaal of de tabel bestaat in een Access-database 'Argumenten:strTablename: Naam van de tabel die moet worden gecontroleerd Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs(strTableName ) TableExists = (Err.Number = 0) Eindfunctie

Hier is een voorbeeld van de functie die wordt gebruikt:

Private Sub TableExists_Example() If VBA_Access_Checks.TableExists("Table") = True Then MsgBox ("Tabel is gevonden!") Else MsgBox ("Tabel is NIET gevonden!") End If End Sub

Tabelfunctie maken

Deze functie maakt een tabel in Access VBA in de huidige database:

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 Dimger OnData Ga als Integer Dimger OnData 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 Dan CreateTable = True Anders CreateTable = False End If Exit-functie Err: CreateTable = False MsgBox Err.Number & " " & Err.Description End-functie

Deze functie retourneert TRUE als de tabel met succes is gemaakt of FALSE als de tabel niet is gemaakt.

Je kunt de functie als volgt aanroepen:

Private Sub CreateTable_Example() Call CreateTable("f1,f2,f3,f4", "ttest") End Sub

Tabelfunctie verwijderen / neerzetten

Deze functie verwijdert een tabel als deze bestaat:

Openbare functie DeleteTableIfExists(TableName As String) If Not IsNull(DLookup("Name", "MSysObjects", "Name='" & TableName & "'")) Dan DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd. DeleteObject acTable = acDefault, TableName Debug.Print "Table" & TableName & "verwijderd… " DoCmd.SetWarnings True End If End Function

Je kunt de functie als volgt aanroepen:

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

Lege Tafel Functie

Deze functie maakt een tabel leeg als deze bestaat:

Openbare functie EmptyTable(TableName As String) If Not IsNull(DLookup("Name", "MSysObjects", "Name='" & TableName & "'")) Dan DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM " & TableName Debug.Print "Tabel " & TableName & " leeggemaakt… " DoCmd.SetWarnings True End If End-functie

Je kunt de functie als volgt aanroepen:

Private Sub EmptyTable_Example() Roep EmptyTable("Table1") End Sub . aan

Tabelfunctie hernoemen

Deze VBA-functie hernoemt een tabel:

Public Function RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, Optionele strDBPath As String) As Boolean Dim db As DAO.Database Dim tdf As TableDef ' Trap voor eventuele fouten. On Error Resume Next ' Als de databasenaam leeg is… If Trim$(strDBPath) = "" Dan '… stel dan Db in op de huidige Db. Set db = CurrentDb() Else ' Anders stelt u Db in op de opgegeven open database. Stel db = DBEngine.Workspaces(0).OpenDatabase(strDBPath) ' Kijk of er een fout is opgetreden. If Err Then 'MsgBox "Kon de database niet vinden om te openen: " & 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 Anders RenameTable = False End If End Function 'Gebruiksvoorbeeld Private Sub RenameTable_Example() Roep RenameTable("table1", "table2") End Sub

Je kunt de functie als volgt aanroepen:

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

Afkappen/verwijderen van records uit tabel

Deze functie verwijdert records uit een tabel met foutafhandeling:

Openbare functie Delete_From_Table (TableName As String, Criteria As String) Bij fout GoTo SubError DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM " & TableName & " WHERE " & Criteria) DoCmd.SetWarnings True SubExit: Exit Function SubError ": Delete_From_Table error: " & vbCrLf & Err.Number & ": " & Err.Description Resume SubExit End Function 'Gebruiksvoorbeeld Public Sub Delete_From_Table_Example() Call Delete_From_Table("Table1", "num=2") End Sub

Tabel exporteren naar Excel

Deze regel code exporteert een tabel naar Excel (een nieuwe spreadsheet):

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

Of u kunt deze functie gebruiken:

Openbare functie Export_Table_Excel(TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Gebruiksvoorbeeld Sub Export_Table_Excel_Example () Export_Table_Excel("Table1", "c:\templs") Einde sub

De bovenstaande code wordt geëxporteerd naar een nieuwe spreadsheet. In plaats daarvan kunt u een tabel toevoegen aan een bestaand werkblad. Ons artikel over importeren / exporteren in Access VBA behandelt dit in meer detail.

Records aan een tabel toevoegen/toevoegen

Deze functie zal een record aan een tabel toevoegen/toevoegen:

Openbare functie 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 'Gebruiksvoorbeeld Private Sub Append_Record_ampTo_Table () Roep Append_Record_To_Table("Table1", "num", 3) End Sub

Record aan tabel toevoegen vanuit formulier

Deze functie voegt een record toe aan een tabel vanuit een formulier:

Openbare functie 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![ Veld3] = Waarde3 rs.Update rs.Close Set rs = Nothing SubExit: Exit Function SubError: MsgBox "Refresh_Form error: " & vbCrLf & Err.Number & ": " & Err.Description End Function

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave