Dostop do tabel VBA - Posodobitev, štetje, brisanje, ustvarjanje, preimenovanje, izvoz

Ta vadnica vas bo naučila delati z Access Tables z uporabo VBA.

Dostop do tabel VBA

Za začetek bomo prikazali preproste ukaze za delo s tabelami v Accessu. Kasneje v tej vadnici vam bomo pokazali vse strokovno razvite funkcije za delo z mizami v Accessu.

Ustvari tabelo

Ta koda bo uporabila SQL za ustvarjanje tabele z imenom »Tabela1« s polji »ID« in »Ime«:

 Zatemni ime_tabele kot niz Zatemni polja kot niz Vrsta table_name = "Table1" fields = "([ID] varchar (150), [Name] varchar (150))" CurrentDb.Execute "CREATE TABLE" & table_name & fields

Zapri tabelo

Ta vrstica kode VBA bo zaprla tabelo (shranjevanje sprememb):

DoCmd.Close acTable, "Table1", acSaveYes

Če želite mizo zapreti brez shranjevanja:

DoCmd.Close acTable, "Table1", acSaveNo

Izbriši tabelo

Ta koda bo izbrisala tabelo (opomba: najprej je treba tabelo zapreti):

DoCmd.Close acTable, "Tabela1", acSaveDa DoCmd.DeleteObject acTable = acDefault, "Tabela1"

Preimenuj tabelo:

Ta vrstica kode bo preimenovala tabelo dostopa:

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

Druga možnost je uporaba lastnosti TableDefs objekta baze podatkov.

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

Prazna / Čista miza

Ta koda VBA bo izpraznila tabelo:

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

Skrajšajte tabelo / izbrišite zapise

Ta vrstica kode VBA uporablja SQL za brisanje zapisov iz tabele, ki izpolnjujejo določena merila:

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

Izvozi tabelo v Excel

Za izvoz tabele v Excel uporabite DoCmd.OutputTo metoda:

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

ali uporabite DoCmd.TransferSpreadsheet metoda:

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

Posodobi tabelo

Naslednja koda bo posodobila zapis, ne da bi prikazala opozorilo:

DoCmd.SetWarnings (False) DoCmd.RunSQL "Posodobi izdelke T SET ProductsT.ProductName = 'Izdelek AAA" KJE (((ProductsT.ProductID) = 1)) "

Dostop do funkcij tabele VBA

Zgornji primeri kode so preprosti ukazi, ki jih lahko uporabite za interakcijo s tabelami z uporabo VBA. Za pravilno uporabo teh ukazov pa boste pogosto morali dodati veliko več podporne kode (vključno z obravnavo napak). Spodaj najdete strokovno razvite funkcije za delo s tabelami v Accessu.

Štetje zapisov tabele

Ta funkcija bo štela število zapisov v tabeli:

Javna funkcija 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) Potem je c = 0 Drugače c = Nz (r! RCount, 0) Konec Če Count_Table_Records = c Izhod iz funkcije Err: Pokliči MsgBox ("Prišlo je do napake:" & Err.Opis, vbExclamation, "Napaka") Končna funkcija ' Primer uporabe Zasebna podštevilka_Tablica_Records_Example () MsgBox (Count_Table_Records ("Tabela1")) Končna pod

Preverite, ali tabela obstaja

Ta funkcija bo preizkusila, če tabela obstaja, vrnila TRUE ali FALSE:

Javna funkcija TableExists (ByVal strTableName As String) Kot Boolean 'Funkcija: Ugotovite, ali tabela obstaja v Accessovi zbirki podatkov' Argumenti: strTablename: Ime tabele za preverjanje Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) End Funkcija

Tu je primer uporabljene funkcije:

Zasebna pomožna tabelaExists_Example () Če je VBA_Access_Checks.TableExists ("Tabela") = True Potem je MsgBox ("Tabela je bila najdena!") Sicer MsgBox ("Tabela NI najdena!") Konec Če Konec Sub

Ustvari funkcijo tabele

Ta funkcija bo ustvarila tabelo v Access VBA v trenutni zbirki podatkov:

Javna funkcija CreateTable (tabela_polja kot niz strFields = Split (table_fields, ",") strCreateTable = "CREATE TABLE" & table_name & "(" Za intCounter = 0 do UBound (strFields) - 1 strCreateTable = strCreateTable & "[" & strFields (intCounter) & "] varchar ( 150), "Next If Right (strCreateTable, 1) =", "Potem strCreateTable = Left (strCreateTable, Len (strCreateTable) - 1) strCreateTable = strCreateTable &") "Konec Če CurrentDb.Execute strCreateTable intCounter = 0 intData = 0 Če Err.Number = 0 Potem CreateTable = True Else CreateTable = False End Če funkcija izstopa Err: CreateTable = False MsgBox Err.Number & "" & Err.Decription End Function

Ta funkcija bo vrnila TRUE, če je tabela uspešno ustvarjena, ali FALSE, če tabela ni ustvarjena.

Funkcijo lahko pokličete tako:

Zasebni podrejenec CreateTable_Example () Pokliči CreateTable ("f1, f2, f3, f4", "ttest") Končni pod

Izbriši / spusti funkcijo tabele

Ta funkcija bo izbrisala tabelo, če obstaja:

Javna funkcija DeleteTableIfExists (TableName As String) Če ni IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Nato DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd DeleteObject acTable = acDefault, Odpravljanje napak TableName. Natisnite "Table" & TableName & "deleted…" DoCmd.SetWarnings True End, če je funkcija End

Funkcijo lahko pokličete tako:

Zasebni podmeni DeleteTableIfExists_Example () Pokliči DeleteTableIfExists ("Table1") End Sub

Funkcija prazne tabele

Ta funkcija bo izpraznila tabelo, če obstaja:

Javna funkcija EmptyTable (TableName As String) Če ni IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Nato DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Debug.Print "Table" & TableName & "emptied …" DoCmd.SetWarnings True End, če funkcija End

Funkcijo lahko pokličete tako:

Private Sub EmptyTable_Example () Klic EmptyTable ("Tabela1") End Sub

Preimenuj funkcijo tabele

Ta funkcija VBA bo preimenovala tabelo:

Javna funkcija RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, Izbirno strDBPath As String) Kot Boolean Dim db Kot DAO.Database Dim tdf As TableDef 'Trap za vse napake. Vklop Napaka Nadaljuj Naprej 'Če je ime zbirke podatkov prazno … Če Trim $ (strDBPath) = "" Potem "… potem nastavite Db na trenutno Db. Set db = CurrentDb () Sicer 'V nasprotnem primeru nastavite Db na podano odprto bazo podatkov. Nastavite db = DBEngine.Workspaces (0) .OpenDatabase (strDBPath) 'Preverite, ali je prišlo do napake. Če je napaka, potem 'MsgBox "Baze podatkov ni bilo mogoče odpreti:" & strDBPath RenameTable = False Exit Funkcija End End If End If If ObjectExists ("Table", strOldTableName, strDBPath) Nato nastavite tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = True Else RenameTable = False End If End Function 'Primer uporabe Private Sub RenameTable_Example () Call RenameTable ("table1", "table2") End Sub

Funkcijo lahko pokličete tako:

Private Sub RenameTable_Example () Pokliči RenameTable ("table1", "table2") End Sub

Skrajšajte / izbrišite zapise iz tabele

Ta funkcija bo izbrisala zapise iz tabele z obravnavo napak:

Javna funkcija 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 SubExTer Napaka Delete_From_Table: "& vbCrLf & Err.Number &": "& Err. Opis Nadaljuj Podizhod Končna funkcija 'Primer uporabe Javni podmeni Delete_From_Table_Example () Pokliči Delete_From_Table (" Table1 "," num = 2 ") End Sub

Izvozi tabelo v Excel

Ta vrstica kode bo izvozila tabelo v Excel (novo preglednico):

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

Ali pa uporabite to funkcijo:

Javna funkcija Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, Primer uporabe funkcije True End Pod Export_Table_Excel_Example ("\ Export_T End Sub

Zgornja koda se izvozi v novo preglednico. Namesto tega lahko v obstoječo preglednico dodate tabelo. Naš članek o uvozu / izvozu v Access VBA to obravnava podrobneje.

Dodajanje / dodajanje zapisov v tabelo

Ta funkcija bo dodala / dodala zapis v tabelo:

Javna funkcija 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 (Ime tabele) rs.Ad .Value = FieldValue rs.Update rs.Close Set rs = Nothing SubExit: Exit Function SubError: MsgBox "RunSQL error:" & vbCrLf & Err.Number & ":" & Err. () Pokličite Append_Record_To_Table ("Tabela1", "številka", 3) Konec pod

Dodaj zapis v tabelo iz obrazca

Ta funkcija bo v tabelo dodala zapis iz obrazca:

Javna funkcija 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' rs2! [Field2] Polje3] = Vrednost3 rs. Posodobi rs.Zapri nastavitev rs = Nič Podizhod: Izhodna funkcija Napaka napake: MsgBox "Napaka osvežitve_forme:" & vbCrLf & Err.Številka & ":" & Napaka Opis Funkcija konca

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave