Juurdepääs VBA tabelitele - värskendamine, loendamine, kustutamine, loomine, ümbernimetamine, eksportimine

See õpetus õpetab teile, kuidas VBA abil Access Tabelitega töötada.

Juurdepääs VBA tabelitele

Alustuseks demonstreerime Accessi tabelitega töötamise lihtsaid käske. Hiljem selles õpetuses näitame teile kõiki professionaalselt välja töötatud funktsioone Accessi tabelitega töötamiseks.

Loo tabel

See kood kasutab SQL -i, et luua tabel nimega “Tabel 1” väljadega “ID” ja “Nimi”:

 Tabeli_nimi kui string

Sulgege tabel

See VBA koodirida sulgeb tabeli (muudatuste salvestamine):

DoCmd.Close acTable, "Table1", acSaveYes

Tabeli sulgemiseks salvestamata toimige järgmiselt.

DoCmd.Close acTable, "Table1", acSaveNo

Kustuta tabel

See kood kustutab tabeli (märkus: kõigepealt tuleb tabel sulgeda):

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

Tabeli ümbernimetamine:

See koodirida nimetab juurdepääsu tabeli ümber:

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

Teine võimalus on andmebaasi objekti atribuudi TableDefs kasutamine.

Määra tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName

Tühi / selge laud

See VBA -kood tühjendab tabeli:

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

Tabeli kärpimine / kirjete kustutamine

See VBA koodirida kasutab SQL -i, et kustutada tabelist kirjed, mis vastavad teatud kriteeriumidele:

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

Tabeli eksportimine Excelisse

Tabeli eksportimiseks Excelisse kasutage DoCmd.OutputTo meetod:

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

või kasutage DoCmd.TransferSheetsheet meetod:

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

Värskenda tabelit

Järgmine kood värskendab kirjet ilma hoiatusteadet kuvamata:

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

Juurdepääs VBA tabeli funktsioonidele

Ülaltoodud koodinäited on lihtsad käsud, mida saate kasutada VBA abil tabelitega suhtlemiseks. Nende käskude nõuetekohaseks kasutamiseks peate aga sageli lisama palju rohkem toetavat koodi (sh veakäsitlust). Allpool leiate professionaalselt arendatavad funktsioonid Accessi tabelitega töötamiseks.

Count Table Records

See funktsioon loendab tabelis olevate kirjete arvu:

Avalik funktsioon Count_Table_Records (tabeli nimi kui string) täisarvuna tõrke korral GoTo Err: Dim r Nagu DAO.Recordset Dim c täisarvu komplekt r = CurrentDb.OpenRecordset ("Vali arv (*) kui rcount" & TableName) .OpenRecordset If (r .EOF) Siis c = 0 Muidu c = Nz (r! RCount, 0) End If Count_Table_Records = c Exit Function Err: Call MsgBox ("Tõrge ilmnes:" & Err.Description, vbExclamation, "Error") Lõppfunktsioon ' Kasutamise näide Privaatne alamloendus_tabeli_rekordid_näide () MsgBox (loend_tabeli_rekordid („tabel1”)) lõppalam

Kontrollige, kas tabel on olemas

See funktsioon kontrollib, kas tabel on olemas, tagastades tõese või vale:

Avalike funktsioonide tabelExists (ByVal strTableName kui string) kui Boolean 'Funktsioon: määrake, kas tabel on Accessi andmebaasis olemas' Argumendid: strTablename: kontrollitava tabeli nimi Dim tdf kui DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Lõppfunktsioon

Siin on näide kasutatavast funktsioonist:

Privaatne alamtabelExists_Example () If VBA_Access_Checks.TableExists ("Table") = True Siis MsgBox ("Tabel leiti!") Muu MsgBox ("Tabelit EI leitud!") End If End Sub

Loo tabeli funktsioon

See funktsioon loob tabeli Access VBA -s praeguses andmebaasis:

Avalik funktsioon CreateTable (tabeliväljad kui string, tabeli_nimi kui string) Nagu Boolean Dim strCreateTable String Dim intCount Nagu täisarv Dim strFields () String Dim strValues ​​() String Dim strInsertSQL String Dim intCounter kui täisarv Dim intData täisarvuna viga 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) =", "Siis strCreateTable = Left (strCreateTable, Len (strCreateTable) - 1) strCreateTable = strCreateTable &") "End If CurrentDb.Execute strCreateTable intCounter = 0 intData = 0 Err.Number = 0 Siis CreateTable = True Else CreateTable = False End if Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description End Function

See funktsioon tagastab tõe, kui tabel on edukalt loodud, või vale, kui tabelit ei looda.

Funktsiooni saate helistada järgmiselt:

Privaatne alam CreateTable_Example () Helista CreateTable ("f1, f2, f3, f4", "ttest") Lõpu alam

Tabeli kustutamise / kukutamise funktsioon

See funktsioon kustutab tabeli, kui see on olemas:

Avalik funktsioon DeleteTableIfExists (tabeli nimi kui string) Kui ei ole IsNull (DLookup ("Nimi", "MSysObjects", "Name = '" & TableName & "'"))) Seejärel 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

Funktsiooni saate helistada järgmiselt:

Privaatne alam DeleteTableIfExists_Example () Helista DeleteTableIfExists ("Tabel1") Lõpu alam

Tühi tabeli funktsioon

See funktsioon tühjendab tabeli, kui see on olemas:

Avalik funktsioon EmptyTable (tabeli nimi kui string) Kui ei ole IsNull (DLookup ("Nimi", "MSysObjects", "Name = '" & TableName & "'"))) Seejärel DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Silumine. Printige „Tabel” ja „Tabeli nimi” ja „tühjendatud…” DoCmd.SetWarnings Tõeline lõpp, kui lõppfunktsioon

Funktsiooni saate helistada järgmiselt:

Privaatne alam EmptyTable_Example () Kõne EmptyTable ("Tabel1") Lõpu alam

Nimeta ümber tabeli funktsioon

See VBA funktsioon nimetab tabeli ümber:

Avalik funktsioon RenameTable (ByVal strOldTableName kui string, ByVal strNewTableName kui string, valikuline strDBPath kui string) kui Boolean Dim db kui DAO.Database Dim tdf As TableDef 'Trap kõikide vigade jaoks. On Error Resume Next 'Kui andmebaasi nimi on tühi… Kui Trim $ (strDBPath) = "" Siis "… siis määrake Db praegusele Db -le. Set db = CurrentDb () Muu 'Vastasel juhul määrake Db määratud avatud andmebaasile. Määrake db = DBEngine.Workspaces (0). OpenDatabase (strDBPath) 'Vaadake, kas ilmnes tõrge. If Err then 'MsgBox "Ei leidnud avatavat andmebaasi:" & strDBPath RenameTable = False Exit Funktsioon End if End If If ObjectExists ("Tabel", strOldTableName, strDBPath) Seejärel määrake tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = Tõsi Muu RenameTable = False End If End Funktsioon 'Kasutamise näide Privaatne alamnimi RenameTable_Example () Kõne RenameTable ("table1", "table2") End Sub

Funktsiooni saate helistada järgmiselt:

Privaatne alamnimi RenameTable_Example () Kõne RenameTable ("table1", "table2") End Sub

Kirjete kärpimine / kustutamine tabelist

See funktsioon kustutab vead käsitlevast tabelist kirjed:

Avalik funktsioon Delete_From_Table (tabeli nimi kui string, kriteeriumid stringina) vea korral GoTo alamviga DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM" & TableName & "WHERE" & kriteeriumid) DoCmd.SetWarnings True Alamexx Exit: Exit Exit Delete_From_Table error: "& vbCrLf & Err.Number &": "& Err.Description Resume SubExit End Function 'Kasutamise näide Public Sub Delete Delete_From_Table_Example () Call Delete_From_Table (" Table1 "," num = 2 ") End Sub

Tabeli eksportimine Excelisse

See koodirida ekspordib tabeli Excelisse (uus arvutustabel):

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

Või võite kasutada seda funktsiooni:

Avalik funktsioon Export_Table_Excel (tabeli nimi kui string, failitee kui string) DoCmd.TransferSheetsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Usage Example Sub Sub Export_Table_Excel_Example () Export_Table_Texel " End Sub

Ülaltoodud kood eksporditakse uude arvutustabelisse. Selle asemel saate olemasolevale arvutustabelile tabeli lisada. Meie artikkel Access VBA importimise / eksportimise kohta hõlmab seda üksikasjalikumalt.

Lisage / lisage tabelisse kirjeid

See funktsioon lisab / lisab tabelisse kirje:

Avalik funktsioon Append_Record_To_Table (tabeli nimi stringina, väljanimi stringina, välja väärtuse stringina) vea korral GoTo alamvea Dim rs kui DAO.Recordset Dim SQL stringina 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 'Kasutamise näide Private SubPendx_Recable () Helista Append_Record_To_Table ("Table1", "num", 3) End Sub

Lisage kirje tabelisse vormilt

See funktsioon lisab vormi tabelisse kirje:

Avalik funktsioon 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] = Value Field3] = Value3 rs.Update rs.Close Set rs = Nothing SubExit: Exit Function SubError: MsgBox "Refresh_Form error:" & vbCrLf & Err.Number & ":" & Err.Description End Function

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave