Adgang til VBA -tabeller - Opdater, tæl, slet, opret, omdøb, eksporter

Denne vejledning lærer dig, hvordan du arbejder med Access Tables ved hjælp af VBA.

Få adgang til VBA -tabeller

For at starte vil vi demonstrere de enkle kommandoer til at arbejde med Tabeller i Access. Senere i denne vejledning viser vi dig fuldt ud professionelt udviklede funktioner til arbejde med tabeller i Access.

Opret tabel

Denne kode vil bruge SQL til at oprette en tabel med navnet "Table1" med felterne "ID" og "Name":

 Dim tabelnavn som streng Dim felter som streng tabelnavn = "tabel1" felter = "([ID] varchar (150), [navn] varchar (150))" CurrentDb.Execute "CREATE TABLE" & tabelnavn og felter

Luk bord

Denne linje med VBA -kode lukker en tabel (gemmer ændringer):

DoCmd.Close acTable, "Table1", acSaveYes

Sådan lukker du et bord uden at gemme:

DoCmd.Close acTable, "Table1", acSaveNo

Slet tabel

Denne kode vil slette en tabel (Bemærk: først skal tabellen lukkes):

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

Omdøb tabel:

Denne kodelinje omdøber en adgangstabel:

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

En anden mulighed er at bruge egenskaben TableDefs for et databaseobjekt.

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

Tom / klar tabel

Denne VBA -kode vil tømme en tabel:

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

Afkort tabellen / slet poster

Denne linje med VBA -kode bruger SQL til at slette poster fra en tabel, der opfylder visse kriterier:

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

Eksporter tabel til Excel

For at eksportere en tabel til Excel skal du bruge DoCmd.OutputTo metode:

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

eller brug DoCmd.TransferSpreadsheet metode:

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

Opdater tabel

Følgende kode opdaterer en registrering uden at vise advarslen:

DoCmd.SetWarnings (Falsk) DoCmd.RunSQL "Opdater ProdukterT SET ProdukterT.ProductName = 'Produkt AAA' HVOR (((ProdukterT.ProductID) = 1))"

Få adgang til VBA -bordfunktioner

Ovenstående kodeeksempler er de enkle kommandoer, du kan bruge til at interagere med tabeller ved hjælp af VBA. Dog skal du ofte tilføje meget mere understøttende kode (inklusive fejlhåndtering) for at kunne bruge disse kommandoer korrekt. Nedenfor finder du professionelt udviklede funktioner til arbejde med Tabeller i Access.

Tælle tabeloptegnelser

Denne funktion tæller antallet af poster i en 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) Derefter c = 0 Else c = Nz (r! RCount, 0) End If Count_Table_Records = c Exit Function Err: Call MsgBox ("En error occurred:" & Err.Description, vbExclamation, "Error") End Function ' Brugseksempel Privat under Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) End Sub

Kontroller, om tabellen findes funktion

Denne funktion tester, om der findes en tabel, der returnerer SAND eller FALSK:

Public Function TableExists (ByVal strTableName As String) As Boolean 'Funktion: Bestem om der findes en tabel i en Access -database' Argumenter: strTablename: Tabellenavn for at kontrollere Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Slutfunktion

Her er et eksempel på funktionen i brug:

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

Opret tabelfunktion

Denne funktion opretter en tabel i Access VBA i den aktuelle database:

Offentlig funktion CreateTable (tabelfelter som streng, tabelnavn som streng) Som boolsk dim strCreateTable som streng Dim intCount som heltal Dim strFields () Som streng Dim strValues ​​() Som streng Dim strInsertSQL som streng Dim intCounter som heltal Dim intData som heltal på fejl Gå til fejl 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 Derefter CreateTable = True Else CreateTable = False End If Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description End Function

Denne funktion returnerer SAND, hvis tabellen er oprettet med succes eller FALSK, hvis tabellen ikke er oprettet.

Du kan kalde funktionen sådan:

Privat sub CreateTable_Example () Opkald CreateTable ("f1, f2, f3, f4", "ttest") Afslut Sub

Slet / slip tabelfunktion

Denne funktion sletter en tabel, hvis den findes:

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 & "deleted …" DoCmd.SetWarnings True End If End -funktion

Du kan kalde funktionen sådan:

Private Sub DeleteTableIfExists_Example () Call DeleteTableIfExists ("Tabel1") Afslut Sub

Tom tabelfunktion

Denne funktion vil tømme en tabel, hvis den findes:

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ømt …" DoCmd.SetWarnings True End If End -funktion

Du kan kalde funktionen sådan:

Private Sub EmptyTable_Example () Call EmptyTable ("Tabel1") Afslut Sub

Omdøb tabelfunktion

Denne VBA -funktion omdøber en tabel:

Public Function RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, Valgfri strDBPath As String) As Boolean Dim db As DAO.Database Dim tdf As TableDef 'Trap for eventuelle fejl. Ved fejl Genoptag næste 'Hvis databasens navn er tomt … Hvis Trim $ (strDBPath) = "" Så' … indstil derefter Db til den aktuelle Db. Indstil db = CurrentDb () Ellers 'Ellers skal du indstille Db til den angivne åbne database. Indstil db = DBEngine.Workspaces (0) .OpenDatabase (strDBPath) 'Se om der opstod en fejl. Hvis Err derefter 'MsgBox "Kunne ikke finde databasen til at åbne:" & 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 'Usage Example Private Sub RenameTable_Example () Call RenameTable ("table1", "table2") End Sub

Du kan kalde funktionen sådan:

Private Sub RenameTable_Example () Call RenameTable ("tabel1", "tabel2") Afslut Sub

Trunker / slet poster fra tabel

Denne funktion sletter poster fra en tabel med fejlhåndtering:

Offentlig funktion Delete_From_Table (tabelnavn som streng, kriterier som streng) ved fejl 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 fejl: "& vbCrLf & Err.Number &": "& Err.Description Genoptag SubExit End Funktion 'Brug Eksempel Public Sub Delete_From_Table_Example () Call Delete_From_Table (" Table1 "," num = 2 ") End Sub

Eksporter tabel til Excel

Denne kodelinje eksporterer en tabel til Excel (et nyt regneark):

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

Eller du kan bruge denne funktion:

Offentlig funktion Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Exempel Eks ._Table_Excel_Example () Export_Table_Excel ("Tabel1", "Tabel1", "Tabel1", "Tabel1", "Eksport_tabel") Afslut Sub

Ovenstående kode eksporteres til et nyt regneark. I stedet kan du tilføje en tabel til et eksisterende regneark. Vores artikel om import / eksport i Access VBA dækker dette mere detaljeret.

Tilføj / tilføj poster til en tabel

Denne funktion tilføjer / tilføjer en post til en tabel:

Offentlig funktion 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 = Intet SubExit: Exit Function SubError: MsgBox "RunSQL error:" & vbCrLf & Err.Number & ":" & Err.Beskrivelse Genoptag SubExit Slut funktion 'Anvendelseseksempel Privat Sub Append_Record_To_Table_ () Ring til Append_Record_To_Table ("Tabel1", "num", 3) Afslut sub

Føj post til tabel fra formular

Denne funktion tilføjer en post til en tabel fra en formular:

Offentlig funktion 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 vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave