Hozzáférés a VBA táblákhoz - Frissítés, számolás, törlés, létrehozás, átnevezés, exportálás

Ez az oktatóanyag megtanítja, hogyan kell dolgozni a hozzáférési táblázatokkal a VBA segítségével.

Hozzáférés a VBA táblázatokhoz

Kezdésként bemutatjuk az Access táblákkal való egyszerű kezelési parancsokat. Ebben az oktatóanyagban később bemutatjuk a professzionálisan kifejlesztett funkciókat az Access táblákkal való munkavégzéshez.

Táblázat létrehozása

Ez a kód az SQL segítségével létrehoz egy „Table1” nevű táblázatot az „ID” és a „Name” mezőkkel:

 Tábla_név halványítása karakterláncként Dim mezők String -ként tábla_neve = "Táblázat1" mezők = "([ID] varchar (150), [Név] varchar (150))" CurrentDb.Exuteute "CREATE TABLE" & table_name & mezők

Táblázat bezárása

A VBA kód ezen sora bezár egy táblázatot (a változtatások mentése):

DoCmd.Close acTable, "Table1", acSaveYes

A táblázat bezárása mentés nélkül:

DoCmd.Close acTable, "Table1", acSaveNo

Táblázat törlése

Ez a kód törli a táblázatot (megjegyzés: először a táblázatot be kell zárni):

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

Táblázat átnevezése:

Ez a kódsor átnevezi a hozzáférési táblázatot:

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

Egy másik lehetőség az adatbázis -objektum TableDefs tulajdonságának használata.

Állítsa be a tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName

Üres / Tiszta asztal

Ez a VBA -kód kiüríti a táblázatot:

DoCmd.RunSQL "DELETE * FROM" és "Table1"

Táblázat csonkítása / Rekordok törlése

Ez a VBA -kódsor SQL -t használ a rekordok törléséhez egy táblázatból, amelyek megfelelnek bizonyos feltételeknek:

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

Táblázat exportálása Excelbe

Táblázat Excelbe történő exportálásához használja a DoCmd.OutputTo módszer:

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

vagy használja a DoCmd.TransferSheetsheet módszer:

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

Táblázat frissítése

A következő kód frissíti a rekordot a figyelmeztető üzenet megjelenítése nélkül:

DoCmd.SetWarnings (False) DoCmd.RunSQL "Termékek frissítéseT SET ProductsT.ProductName = 'Product AAA' WHERE ((((ProductsT.ProductID) = 1))"

Hozzáférés a VBA táblafunkciókhoz

A fenti kódpéldák azok az egyszerű parancsok, amelyek segítségével a táblázatokkal VBA segítségével léphet kapcsolatba. Ezeknek a parancsoknak a megfelelő használatához azonban gyakran sokkal több támogató kódot kell hozzáadnia (beleértve a hibakezelést is). Az alábbiakban professzionálisan kifejlesztett funkciókat talál az Access táblákkal való munkavégzéshez.

Count Table Records

Ez a funkció megszámolja a táblázat rekordjainak számát:

Nyilvános függvény Count_Table_Records (Táblanév mint karakterlánc) Integer On Error GoTo Err: Dim r DAO.Recordset Dim c Integer Set r = CurrentDb.OpenRecordset ("Select count (*) as rcount from" & TableName) .OpenRecordset If (r .EOF) Ezután c = 0 Más c = Nz (r! RCount, 0) End If Count_Table_Records = c Kilépési funkció Err: Hívja az MsgBox -ot ("Hiba történt:" & Err.Description, vbExclamation, "Error") End Function ' Használati példa privát alszám Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) End Sub

Ellenőrizze, hogy a táblázat létezik -e

Ez a függvény teszteli, hogy létezik -e táblázat, amely IGAZ vagy HAMIS értéket ad vissza:

Nyilvános függvénytáblaExists (ByVal strTableName mint karakterlánc) Logikai értékként 'Funkció: Határozza meg, hogy létezik -e tábla egy Access adatbázisban' Argumentumok: strTablename: Az ellenőrizendő tábla neve Dim tdf DAO.TableDef On Error Folytatás Következő Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) End Function

Íme egy példa a használt funkcióra:

Private Sub TableExists_Example () If VBA_Access_Checks.TableExists ("Table") = True Akkor az MsgBox ("A táblázat megtalálható!") Else MsgBox ("A táblázat nem található!") End If End Sub

Táblázat függvény létrehozása

Ez a funkció létrehoz egy táblázatot az Access VBA -ban az aktuális adatbázisban:

Nyilvános függvény CreateTable (táblamezők karakterláncként, tábla_neve karakterláncként) Boolean Dim strCreateTable Mint String Dim intCount Mint Integer Dim strFields () Mint String Dim strValues ​​() Mint String Dim strInsertSQL String Dim intCounter Mint Integer Dim intData As Integer On Error GoTo Err strFields = Split (table_fields, ",") strCreateTable = "TABLE CREATE" & table_name & "(" For intCounter = 0 to UBound (strFields) - 1 strCreateTable = strCreateTable & "[" & strFields (intCounter) & "] varchar ( 150), "Next If Right (strCreateTable, 1) =", "Akkor strCreateTable = Bal (strCreateTable, Len (strCreateTable) - 1) strCreateTable = strCreateTable &") "End If CurrentDb.Execute strCreateTable intCounter = 0 intData = 0 Err.Number = 0 Akkor CreateTable = Igaz más CreateTable = False End if Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description End Function

Ez a függvény IGAZ értéket ad vissza, ha a táblázat létrehozása sikeres, vagy HAMIS, ha a táblázat nem jön létre.

A funkciót így hívhatja:

Private Sub CreateTable_Example () CreateTable hívása ("f1, f2, f3, f4", "ttest") Végrész

A táblázat törlése / ejtése funkció

Ez a funkció törli a táblázatot, ha létezik:

Nyilvános függvény DeleteTableIfExists (TableName as String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Akkor 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

A funkciót így hívhatja:

Privát al Törlés

Üres asztal funkció

Ez a függvény kiüríti a táblát, ha létezik:

Nyilvános függvény EmptyTable (TableName mint karakterlánc) Ha nem IsNull (DLookup ("Név", "MSysObjects", "Name = '" & TableName & "'")) Ezután DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Debug.Print "Table" & TableName & "üres …" DoCmd.SetWarnings True End If End Funkció

A funkciót így hívhatja:

Private Sub EmptyTable_Example () Hívás EmptyTable ("Table1") End Sub

Táblafunkció átnevezése

Ez a VBA függvény átnevezi a táblázatot:

Nyilvános függvény RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, Opcionális strDBPath As String) Boolean Dim db Mint DAO.Database Dim tdf As TableDef 'Csapda az esetleges hibákért. Hiba esetén Folytatás Következő 'Ha az adatbázis neve üres … Ha Trim $ (strDBPath) = "" Akkor "… akkor állítsa a Db -t az aktuális Db -re. Set db = CurrentDb () Else 'Ellenkező esetben állítsa a Db -t a megadott nyílt adatbázisra. Állítsa be a db = DBEngine.Workspaces (0) értéket. OpenDatabase (strDBPath) 'Nézze meg, történt -e hiba. Ha hiba történt, akkor az "MsgBox" nem találta a megnyitható adatbázist: "& strDBPath RenameTable = Hamis kilépési funkció vége Ha vége Ha If ObjectExists (" Táblázat ", strOldTableName, strDBPath) Ezután állítsa be a tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = Igaz más RenameTable = False End If End Funkció 'Használati példa Privát al RenameTable_Example () Hívás RenameTable ("table1", "table2") End Sub

A funkciót így hívhatja:

Privát al RenameTable_Example () Hívás RenameTable ("table1", "table2") End Sub

Rekordok csonkítása / törlése a táblázatból

Ez a funkció törli a rekordokat a táblázatból a hibakezeléssel:

Nyilvános függvény Delete_From_Table (TableName as String, Criteria as String) On GoTo SubError DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM" & TableName & "WHERE" & Feltételek) DoCmd.SetWarnings True SubExitr Exit: Exit Delete_From_Table error: "& vbCrLf & Err.Number &": "& Err.Description Resume SubExit End Function 'Használati példa Public Sub Delete Delete_From_Table_Example () Call Delete_From_Table (" Table1 "," num = 2 ") End Sub

Táblázat exportálása Excelbe

Ez a kódsor exportál egy táblázatot az Excelbe (új táblázat):

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

Vagy használhatja ezt a funkciót:

Nyilvános függvény Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSheetsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Usage Example Sub Sub Export_Table_Excel_Example () Export_Table_Texel " End Sub

A fenti kód exportálódik egy új táblázatba. Ehelyett hozzáadhat egy táblázatot egy meglévő táblázathoz. Az Access VBA importálása / exportálása című cikkünk ezt részletesebben tárgyalja.

Rekordok hozzáadása / hozzáfűzése a táblázathoz

Ez a funkció rekordot ad hozzá / fűz hozzá a táblázathoz:

Nyilvános függvény Append_Record_To_Table (TableName as String, FieldName as String, FieldValue as String) On Error GoTo SubError Dim rs as DAO.Recordset Dim SQL String Dim CurrentYear As Integer Set rs = CurrentDb.OpenRecordset (TableName) rs.DdNew .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 'Használati példa Private SubPendx_Record () Call Append_Record_To_Table ("Table1", "num", 3) End Sub

Adja hozzá a rekordot az űrlap táblájához

Ez a funkció rekordot ad hozzá egy táblázathoz egy űrlapról:

Nyilvános függvény 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] = Érték Field3] = Value3 rs.Usd rs.Close Set rs = Nothing SubExit: Exit Function SubError: MsgBox "Refresh_Form error:" & vbCrLf & Err.Number & ":" & Err.Description End Function

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave