Få tilgang til VBA -tabeller - Oppdater, tell, slett, opprett, gi nytt navn, eksporter

Denne opplæringen lærer deg hvordan du arbeider med tilgangstabeller ved hjelp av VBA.

Få tilgang til VBA -tabeller

For å starte vil vi demonstrere de enkle kommandoene for å jobbe med Tabeller i Access. Senere i denne opplæringen vil vi vise deg fulle profesjonelt utviklede funksjoner for arbeid med tabeller i Access.

Lag tabell

Denne koden bruker SQL til å lage en tabell med navnet "Table1" med feltene "ID" og "Name":

 Dim tabellnavn som streng Dim felter som streng tabellnavn = "Tabell1" felt = "([ID] varchar (150), [navn] varchar (150))" CurrentDb.Execute "CREATE TABLE" og tabellnavn og felt

Lukk tabellen

Denne linjen med VBA -kode vil lukke en tabell (lagrer endringer):

DoCmd.Close acTable, "Table1", acSaveYes

Slik lukker du et bord uten å lagre:

DoCmd.Close acTable, "Table1", acSaveNo

Slett tabell

Denne koden sletter en tabell (merk: først bør tabellen lukkes):

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

Gi nytt navn til tabell:

Denne kodelinjen vil gi nytt navn til en tilgangstabell:

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

Et annet alternativ er å bruke TableDefs -egenskapen til et databaseobjekt.

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

Tom / klar tabell

Denne VBA -koden vil tømme en tabell:

DoCmd.RunSQL "SLETT * FRA" og "Tabell1"

Avkort tabell / slett poster

Denne linjen med VBA -kode bruker SQL til å slette poster fra en tabell som oppfyller visse kriterier:

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

Eksporter tabell til Excel

For å eksportere en tabell til Excel, bruk DoCmd.OutputTo metode:

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

eller bruk DoCmd.TransferSpreadsheet metode:

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

Oppdater tabell

Følgende kode vil oppdatere en post, uten å vise advarselen:

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

Få tilgang til VBA -tabellfunksjoner

Kodeeksemplene ovenfor er de enkle kommandoene du kan bruke til å samhandle med tabeller ved hjelp av VBA. Imidlertid må du ofte legge til mye mer støttekode (inkludert feilhåndtering) for å kunne bruke disse kommandoene. Nedenfor finner du profesjonelt utviklede funksjoner for arbeid med Tabeller i Access.

Count Table Records

Denne funksjonen vil telle antall poster i en tabell:

Offentlig funksjon Count_Table_Records (tabellenavn som streng) som heltall på feil 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) Deretter c = 0 Ellers c = Nz (r! RCount, 0) End If Count_Table_Records = c Avslutt funksjon Err: Ring MsgBox ("En feil oppstod:" & Err.Description, vbExclamation, "Error") End Function ' Eksempel på bruk Private Sub Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) End Sub

Sjekk om tabellen eksisterer

Denne funksjonen vil teste om det finnes en tabell som returnerer SANN eller FALSK:

Public Function TableExists (ByVal strTableName As String) As Boolean 'Function: Bestem if tabellen finnes i en Access -database' Argumenter: strTablename: Navn på tabellen for å kontrollere Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Sluttfunksjon

Her er et eksempel på funksjonen som er i bruk:

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

Lag tabellfunksjon

Denne funksjonen vil opprette en tabell i Access VBA i den nåværende databasen:

Offentlig funksjon CreateTable (tabellfelt som streng, tabellnavn som streng) Som boolsk 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 Deretter CreateTable = True Else CreateTable = False End If Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description End Function

Denne funksjonen vil returnere TRUE hvis tabellen er opprettet eller FALSE hvis tabellen ikke er opprettet.

Du kan kalle funksjonen slik:

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

Slett / slipp tabellfunksjon

Denne funksjonen vil slette en tabell hvis den eksisterer:

Offentlig funksjon DeleteTableIfExists (tabellenavn som streng) 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 -funksjon

Du kan kalle funksjonen slik:

Private Sub DeleteTableIfExists_Example () Call DeleteTableIfExists ("Tabell1") Slutt Sub

Tom tabellfunksjon

Denne funksjonen vil tømme en tabell hvis den eksisterer:

Offentlig funksjon EmptyTable (tabellnavn som streng) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Then DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Debug.Print "Table" og TableName & "tømt …" DoCmd.SetWarnings True End If End -funksjon

Du kan kalle funksjonen slik:

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

Gi nytt navn til tabellfunksjonen

Denne VBA -funksjonen vil gi nytt navn til en tabell:

Offentlig funksjon 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 feil. Ved feil Fortsett neste 'Hvis databasenavnet er tomt … Hvis Trim $ (strDBPath) = "" Da' … sett deretter Db til gjeldende Db. Sett db = CurrentDb () Ellers 'Ellers sett Db til den angitte åpne databasen. Sett db = DBEngine.Workspaces (0) .OpenDatabase (strDBPath) 'Se om det oppstod en feil. If Err Then 'MsgBox "Kunne ikke finne databasen for å åpne:" & 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 Private Private RenameTable_Example () Call RenameTable ("table1", "table2") End Sub

Du kan kalle funksjonen slik:

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

Avkort / slett poster fra tabellen

Denne funksjonen vil slette poster fra en tabell med feilhåndtering:

Offentlig funksjon Delete_From_Table (tabellenavn som streng, kriterier som streng) på feil GoTo SubError DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM" & TableName & "WHERE" & Criteria) DoCmd.SetWarnings True SubExit: Exit Function SubEr: Delete_From_Table error: "& vbCrLf & Err.Number &": "& Err.Description Resume SubExit End Funksjon 'Bruk Eksempel Public Sub Delete_From_Table_Example () Call Delete_From_Table (" Table1 "," num = 2 ") End Sub

Eksporter tabell til Excel

Denne kodelinjen eksporterer en tabell til Excel (et nytt regneark):

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

Eller du kan bruke denne funksjonen:

Offentlig funksjon Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Example_Table_Excel_Example () Export_Table_Excel ("Table1", "Tab" Slutt Sub

Koden ovenfor eksporteres til et nytt regneark. I stedet kan du legge til en tabell i et eksisterende regneark. Artikkelen vår om import / eksport i Access VBA dekker dette mer detaljert.

Legg til / legg til poster i en tabell

Denne funksjonen vil legge til / legge til en post i en tabell:

Offentlig funksjon 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 Private Private Append_Record_To_Table_ () Ring Append_Record_To_Table ("Table1", "num", 3) End Sub

Legg post i tabellen fra skjema

Denne funksjonen vil legge til en post i en tabell fra et skjema:

Offentlig funksjon Add_Record_To_Table_From_Form (tabellnavn som streng) på feil GoTo SubError Dim rs som 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 bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave