Accesați tabelele VBA - Actualizați, contați, ștergeți, creați, redenumiți, exportați

Acest tutorial vă va învăța cum să lucrați cu tabelele de acces folosind VBA.

Accesați tabelele VBA

Pentru a începe, vom demonstra comenzile simple pentru lucrul cu Tables in Access. Mai târziu în acest tutorial vă vom arăta funcții complete dezvoltate profesional pentru lucrul cu tabele în Access.

Creați tabel

Acest cod va utiliza SQL pentru a crea un tabel numit „Table1” cu câmpurile „ID” și „Name”:

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

Închideți tabelul

Această linie de cod VBA va închide un tabel (salvând modificările):

DoCmd.Close acTable, "Table1", acSaveYes

Pentru a închide un tabel fără a salva:

DoCmd.Close acTable, "Table1", acSaveNo

Ștergeți tabelul

Acest cod va șterge un tabel (notă: mai întâi tabelul ar trebui închis):

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

Redenumiți tabelul:

Această linie de cod va redenumi un tabel de acces:

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

O altă opțiune este utilizarea proprietății TableDefs a unui obiect de bază de date.

Setați tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName

Tabel gol / gol

Acest cod VBA va goli un tabel:

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

Tăiați tabelul / ștergeți înregistrările

Această linie de cod VBA folosește SQL pentru a șterge înregistrările dintr-un tabel care îndeplinesc anumite criterii:

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

Exportați tabelul în Excel

Pentru a exporta un tabel în Excel utilizați DoCmd.OutputTo metodă:

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

sau utilizați DoCmd.TransferSpreadsheet metodă:

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

Tabel de actualizare

Următorul cod va actualiza o înregistrare, fără a afișa mesajul de avertizare:

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

Accesați funcțiile tabelului VBA

Exemplele de cod de mai sus sunt comenzile simple pe care le puteți utiliza pentru a interacționa cu tabele folosind VBA. Cu toate acestea, va trebui adesea să adăugați mult mai mult cod de susținere (inclusiv gestionarea erorilor) pentru a utiliza corect aceste comenzi. Mai jos veți găsi funcții de dezvoltare profesională pentru lucrul cu Tables în Access.

Înregistrări de tabel de numărare

Această funcție va număra numărul de înregistrări dintr-un tabel:

Funcție publică 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) Atunci c = 0 Altceva c = Nz (r! RCount, 0) Sfârșit Dacă Count_Table_Records = c Ieșire funcție Err: Apelați MsgBox („A apărut o eroare:„ & Err.Descriere, vbExclamare, „Eroare”) Finalizare funcție ' Exemplu de utilizare Private Sub Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) End Sub

Verificați dacă tabelul există funcție

Această funcție va testa dacă există un tabel, returnând TRUE sau FALSE:

Funcția publică TableExists (ByVal strTableName As String) Ca funcție booleană: Determinați dacă tabelul există într-o bază de date Access 'Argumente: strTablename: Numele tabelului pentru a verifica Dim tdf Ca DAO.TableDef La eroare Reîncepeți Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Funcția de sfârșit

Iată un exemplu al funcției utilizate:

Private Sub TableExists_Example () If VBA_Access_Checks.TableExists ("Table") = True Atunci MsgBox ("Table a fost găsit!") Altele MsgBox ("Table nu a fost găsit!") End If End Sub

Creați funcția de tabel

Această funcție va crea un tabel în Access VBA în baza de date curentă:

Funcție publică 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 OnTo 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 Apoi CreateTable = Adevărat CreateTable = False End If Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description Function

Această funcție va reveni ADEVĂRAT dacă tabelul este creat cu succes sau FALS dacă tabelul nu este creat.

Puteți apela funcția astfel:

Sub privat CreateTable_Example () Apelați CreateTable ("f1, f2, f3, f4", "ttest") Finalizați sub

Funcția de ștergere / eliminare tabel

Această funcție va șterge un tabel dacă există:

Funcția publică DeleteTableIfExists (TableName As String) Dacă nu este nul (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Apoi DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd. DeleteObject acTable = acDefault, TableName Debug.Print "Table" & TableName & "deleted …" DoCmd.SetWarnings True End If End Function

Puteți apela funcția astfel:

Sub privat DeleteTableIfExists_Example () Apel DeleteTableIfExists („Tabelul1”) Încheiere sub

Funcția tabelului gol

Această funcție va goli un tabel dacă există:

Funcția publică EmptyTable (TableName As String) Dacă nu este nul (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Apoi DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Debug.Print "Table" & TableName & "golit …" DoCmd.SetWarnings True End If End Function

Puteți apela funcția astfel:

Private Sub EmptyTable_Example () Apelați EmptyTable („Tabelul1”) Terminați sub

Redenumiți funcția tabelului

Această funcție VBA va redenumi un tabel:

Funcția publică RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, opțional strDBPath As String) Ca boolean Dim db Ca DAO.Database Dim tdf Ca TableDef 'Trap pentru orice erori. La eroare Reluați Următorul 'Dacă numele bazei de date este gol … Dacă Trim $ (strDBPath) = "" Atunci' … apoi setați Db la Db curent. Setați db = CurrentDb () Altfel 'În caz contrar, setați Db la baza de date deschisă specificată. Setați db = DBEngine.Workspaces (0) .OpenDatabase (strDBPath) „Vedeți dacă a apărut o eroare. If Err Then 'MsgBox "Nu s-a putut găsi baza de date pentru a deschide:" & strDBPath RenameTable = Funcție de ieșire falsă End If End If If ObjectExists ("Table", strOldTableName, strDBPath) Apoi setați tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = True Else RenameTable = Încheiere falsă În cazul în care funcția Sfârșit Exemplu de utilizare Sub privat RenameTable_Example () Apel RenameTable ("table1", "table2") End Sub

Puteți apela funcția astfel:

Private Sub RenameTable_Example () Apel RenameTable ("table1", "table2") Termină sub

Tăiați / Ștergeți înregistrările din tabel

Această funcție va șterge înregistrările dintr-un tabel cu gestionarea erorilor:

Funcția publică 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 SubError: Delete_From_Table error: "& vbCrLf & Err.Number &": "& Err.Descriere Reluare SubExit End Function 'Exemplu de utilizare Public Sub Delete_From_Table_Example () Apel Delete_From_Table (" Table1 "," num = 2 ") End Sub

Exportați tabelul în Excel

Această linie de cod va exporta un tabel în Excel (o nouă foaie de calcul):

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

Sau puteți utiliza această funcție:

Funcție publică Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Exemplu de utilizare Sub Export_Table_Excel_Example () Export_Table_Excel ("Table1", "c: \ temp. Sfârșitul Sub

Codul de mai sus va fi exportat într-o nouă foaie de calcul. În schimb, puteți adăuga un tabel la o foaie de calcul existentă. Articolul nostru despre importul / exportul în Access VBA acoperă acest lucru în detaliu.

Adăugați / atașați înregistrări la un tabel

Această funcție va adăuga / adăuga o înregistrare la un tabel:

Funcție publică 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 .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 'Exemplu de utilizare Private Sub Append_Record_To_Table_Example () Apelați Append_Record_To_Table ("Table1", "num", 3) End Sub

Adăugați înregistrare la tabelul din formular

Această funcție va adăuga o înregistrare la un tabel dintr-un formular:

Funcție publică 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 Function Function

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave