Prístup k tabuľkám VBA - aktualizácia, počítanie, odstraňovanie, vytváranie, premenovanie, export

Tento tutoriál vás naučí pracovať s prístupovými tabuľkami pomocou jazyka VBA.

Prístup k tabuľkám VBA

Na začiatok si ukážeme jednoduché príkazy na prácu s tabuľkami v Accesse. Neskôr v tomto návode vám ukážeme úplné profesionálne vyvinuté funkcie pre prácu s tabuľkami v Accesse.

Vytvoriť tabuľku

Tento kód použije SQL na vytvorenie tabuľky s názvom „Tabuľka1“ s poľami „ID“ a „Názov“:

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

Zatvoriť tabuľku

Tento riadok kódu VBA zatvorí tabuľku (ukladanie zmien):

DoCmd.Close acTable, "Table1", acSaveYes

Zatvorenie tabuľky bez uloženia:

DoCmd.Close acTable, "Table1", acSaveNo

Odstrániť tabuľku

Tento kód odstráni tabuľku (poznámka: najskôr by mala byť tabuľka zatvorená):

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

Premenovať tabuľku:

Tento riadok kódu premenuje prístupovú tabuľku:

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

Ďalšou možnosťou je použitie vlastnosti TableDefs databázového objektu.

Nastaviť tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName

Prázdna / prázdna tabuľka

Tento kód VBA vyprázdni tabuľku:

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

Skrátiť tabuľku / odstrániť záznamy

Tento riadok kódu VBA používa SQL na odstránenie záznamov z tabuľky, ktoré spĺňajú určité kritériá:

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

Exportovať tabuľku do Excelu

Na export tabuľky do programu Excel použite príponu DoCmd.OutputTo metóda:

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

alebo použite Tabuľka DoCmd.TransferSpreadsheet metóda:

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

Aktualizovať tabuľku

Nasledujúci kód aktualizuje záznam bez toho, aby sa zobrazilo varovné hlásenie:

DoCmd.SetWarnings (False) DoCmd.RunSQL "Aktualizovať produktyT NASTAVIŤ ProductsT.ProductName = 'Produkt AAA' KDE ((((ProductsT.ProductID) = 1))"

Prístup k funkciám tabuľky VBA

Vyššie uvedené príklady kódu sú jednoduché príkazy, ktoré môžete použiť na interakciu s tabuľkami pomocou VBA. Na správne využitie týchto príkazov však často budete musieť pridať oveľa viac podporného kódu (vrátane spracovania chýb). Nižšie nájdete profesionálne vyvinuté funkcie pre prácu s tabuľkami v programe Access.

Záznamy tabuľky počítania

Táto funkcia spočíta počet záznamov v tabuľke:

Verejná funkcia 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) Potom c = 0 Ostatné c = Nz (r! RCount, 0) Koniec, ak Count_Table_Records = c Ukončiť funkciu Chyba: Zavolajte na MsgBox („Vyskytla sa chyba:“ & Err.Popis, vbExclamation, „Chyba“) Koniec funkcie ' Príklad použitia Private Sub Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) End Sub

Skontrolujte, či tabuľka existuje

Táto funkcia otestuje, či tabuľka existuje, pričom vráti hodnotu TRUE alebo FALSE:

Verejná funkcia TableExists (ByVal strTableName As String) As Boolean 'Function: Determine if table exist in an Access database' Argumenty: strTablename: Name of table to check Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Koniec funkcie

Tu je príklad používanej funkcie:

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

Vytvoriť funkciu tabuľky

Táto funkcia vytvorí tabuľku v programe Access VBA v aktuálnej databáze:

Verejná funkcia 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 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 Then CreateTable = True Else CreateTable = False End If Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description End Function

Táto funkcia vráti hodnotu TRUE, ak je tabuľka úspešne vytvorená, alebo FALSE, ak tabuľka nie je vytvorená.

Túto funkciu môžete zavolať takto:

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

Funkcia odstránenia / zrušenia tabuľky

Táto funkcia odstráni tabuľku, ak existuje:

Verejná funkcia 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 Function

Túto funkciu môžete zavolať takto:

Súkromná podskupina DeleteTableIfExists_Example () Volať DeleteTableIfExists ("Table1") End Sub

Funkcia prázdnej tabuľky

Táto funkcia vyprázdni tabuľku, ak existuje:

Verejná funkcia EmptyTable (TableName as String) Ak nie jeNew (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "" "))) Potom DoCmd.SetWarnings False DoCmd.RunSQL" DELETE * FROM "& TableName Debug.Print "Table" & TableName & "vyprázdnené …" DoCmd.SetWarnings True End If End Funkcia

Túto funkciu môžete zavolať takto:

Súkromná podskupina EmptyTable_Example () Zavolajte na prázdnu tabuľku („Tabuľka1“) Koniec pod

Premenovať funkciu tabuľky

Táto funkcia VBA premenuje tabuľku:

Verejná funkcia RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, Optional strDBPath As String) As Boolean Dim db As DAO.Database Dim tdf As TableDef 'Trap for any errors. Pri chybe Pokračovať Ďalej 'Ak je názov databázy prázdny … Ak Orezať $ (strDBPath) = "" Potom' … potom nastavte Db na aktuálnu Db. Nastaviť db = CurrentDb () Inak 'V opačnom prípade nastavte Db na zadanú otvorenú databázu. Nastaviť db = DBEngine.Workspaces (0). OpenDatabase (strDBPath) 'Zistite, či sa vyskytla chyba. If Err Then 'MsgBox "Could not find database to open:" & 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 'Príklad použitia' Private Sub RenameTable_Example () Call RenameTable ("table1", "table2") End Sub

Túto funkciu môžete zavolať takto:

Súkromná podponuka Premenovacia tabuľka_Example () Volanie premenovanej tabuľky („tabuľka1“, „tabuľka2“)

Skráťte / odstráňte záznamy z tabuľky

Táto funkcia odstráni záznamy z tabuľky so spracovaním chýb:

Verejná funkcia Delete_From_Table (TableName ako reťazec, Kritériá ako reťazec) pri chybe GoTo SubError DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM" & TableName & "WHERE" & Criteria) DoCmd.SetWarnings True SubExit: Exit Function SubError: Chyba Delete_From_Table: "& vbCrLf & Err.Number &": "& Err.Popis Obnoviť SubExit Ukončiť funkciu 'Príklad použitia Public Sub Delete_From_Table_Example () Zavolať Delete_From_Table (" Table1 "," num = 2 ") End Sub

Exportovať tabuľku do Excelu

Tento riadok kódu exportuje tabuľku do programu Excel (nová tabuľka):

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

Alebo môžete použiť túto funkciu:

Verejná funkcia Export_Table_Excel (TableName ako reťazec, FilePath ako reťazec) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, Príklad použitia funkcie True End Sub Export_Table_Excel_Example () Export_Table_Excel ("temp1": "c" Koniec pod

Vyššie uvedený kód sa exportuje do novej tabuľky. Namiesto toho môžete do existujúcej tabuľky pridať tabuľku. Náš článok o importovaní / exportovaní v programe Access VBA sa tomu podrobnejšie venuje.

Pridajte / pripojte záznamy k tabuľke

Táto funkcia pridá / pridá záznam do tabuľky:

Verejná funkcia 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 Example' Private Sub Append_Record_To_Table_Ex () Zavolajte na Append_Record_To_Table („Table1“, „num“, 3) End Sub

Pridať záznam do tabuľky z formulára

Táto funkcia pridá záznam do tabuľky z formulára:

Verejná funkcia 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.Popis Koncová funkcia

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave