Pristupite VBA tablicama - ažurirajte, brojite, brišite, stvarajte, preimenujte, izvozite

Ovaj vodič će vas naučiti kako raditi s Access Tables pomoću VBA.

Pristupite VBA tablicama

Za početak ćemo demonstrirati jednostavne naredbe za rad s tablicama u Accessu. Kasnije u ovom vodiču pokazat ćemo vam potpuno profesionalno razvijene funkcije za rad s tablicama u programu Access.

Napravi tablicu

Ovaj će kôd koristiti SQL za stvaranje tablice pod nazivom "Table1" s poljima "ID" i "Name":

 Dim tab_name As String Dim polja kao String table_name = "Table1" polja = "([ID] varchar (150), [Name] varchar (150))" CurrentDb.Execute "CREATE TABLE" & table_name & polja

Zatvori tablicu

Ovaj redak VBA koda zatvorit će tablicu (spremanje promjena):

DoCmd.Close acTable, "Table1", acSaveYes

Da biste zatvorili tablicu bez spremanja:

DoCmd.Close acTable, "Table1", acSaveNo

Izbriši tablicu

Ovaj kôd će izbrisati tablicu (napomena: prvo tablicu treba zatvoriti):

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

Preimenuj tablicu:

Ovaj redak koda preimenovat će tablicu pristupa:

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

Druga mogućnost je korištenje svojstva TableDefs objekta baze podataka.

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

Prazan / Očisti tablicu

Ovaj VBA kôd će isprazniti tablicu:

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

Skraći tablicu / Izbriši zapise

Ova linija VBA koda koristi SQL za brisanje zapisa iz tablice koji zadovoljavaju određene kriterije:

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

Izvoz tablice u Excel

Za izvoz tablice u Excel upotrijebite DoCmd.OutputTo metoda:

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

ili upotrijebite DoCmd.TransferSpreadsheet metoda:

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

Ažuriraj tablicu

Sljedeći kôd ažurirat će zapis bez prikazivanja poruke upozorenja:

DoCmd.SetWarnings (False) DoCmd.RunSQL "Ažuriranje proizvodaT SET ProductsT.ProductName = 'AAA proizvoda" GDJE (((ProductsT.ProductID) = 1)) "

Pristupite VBA tabličnim funkcijama

Gornji primjeri koda jednostavne su naredbe koje možete koristiti za interakciju s tablicama pomoću VBA. Međutim, često ćete morati dodati mnogo više podržavajućeg koda (uključujući rukovanje pogreškama) da biste pravilno koristili ove naredbe. U nastavku ćete pronaći profesionalno razvijene funkcije za rad s tablicama u Accessu.

Broji tablične zapise

Ova funkcija broji broj zapisa u tablici:

Javna funkcija Count_Table_Records (TableName As String) As Integer On Error GoTo Err: Dim r Kao DAO.Recordset Dim c As Integer Set r = CurrentDb.OpenRecordset ("Odaberite count (*) kao rcount iz" & TableName) .OpenRecordset If (r .EOF) Tada je c = 0 Inače c = Nz (r! RCount, 0) Kraj Ako je Count_Table_Records = c Izlaz iz funkcije Err: Pozovite MsgBox ("Došlo je do pogreške:" & Err.Opis, vbExclamation, "Pogreška") Funkcija završetka ' Primjer korištenja Privatni podbroj_Tablica_Records_Example () MsgBox (Count_Table_Records ("Tablica1")) Kraj Sub

Provjerite postoji li tablica

Ova funkcija će testirati postoji li tablica, vraća TRUE ili FALSE:

Javna funkcija TableExists (ByVal strTableName As String) Kao Boolean 'Funkcija: Utvrdi postoji li tablica u Access bazi podataka' Argumenti: strTablename: Naziv tablice za provjeru Dim tdf Kao DAO.TableDef Uključeno Pogreška Nastavi Sljedeći skup tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) End Function

Evo primjera funkcije koja se koristi:

Privatna pomoćna tablicaExists_Example () Ako je VBA_Access_Checks.TableExists ("Table") = Tačno MsgBox ("Tablica je pronađena!") Inače MsgBox ("Tablica NIJE pronađena!") Prekini ako završi Sub

Izradi funkciju tablice

Ova funkcija će stvoriti tablicu u Access VBA u trenutnoj bazi podataka:

Javna funkcija CreateTable (table_fields As String, table_name As String) Kao Boolean Dim strCreateTable As String Dim intCount As Integer Dim strFields () As String Dim strValues ​​() As String Dim strInsertSQL Kao String Dim intCounter Kao cijeli broj Dim intData Kao cijeli broj Greška GoTo strFields = Split (table_fields, ",") strCreateTable = "CREATE TABLE" & table_name & "(" Za intCounter = 0 za 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

Ova funkcija će vratiti TRUE ako je tablica uspješno stvorena ili FALSE ako tablica nije stvorena.

Funkciju možete pozvati ovako:

Privatni pod CreateTable_Example () Poziv CreateTable ("f1, f2, f3, f4", "ttest") Kraj Sub

Funkcija brisanja / ispuštanja tablice

Ova funkcija će izbrisati tablicu ako postoji:

Javna funkcija DeleteTableIfExists (TableName As String) Ako nije IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Zatim DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd DeleteObject acTable = acDefault, Debug.Naziv tablice. Ispis "Tablica" & Naziv tablice & "izbrisano …" DoCmd.SetWarnings True End ako završi funkciju

Funkciju možete pozvati ovako:

Privatna podmeni DeleteTableIfExists_Example () Poziv DeleteTableIfExists ("Table1") End Sub

Funkcija prazne tablice

Ova funkcija će isprazniti tablicu ako postoji:

Javna funkcija EmptyTable (TableName As String) Ako nije IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Zatim DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Otklanjanje pogrešaka. Ispišite "Tablica" & Naziv tablice & "ispraznilo …" DoCmd.SetWarnings True End If End Funkcija

Funkciju možete pozvati ovako:

Private Sub EmptyTable_Example () Poziv EmptyTable ("Table1") End Sub

Preimenuj funkciju tablice

Ova VBA funkcija preimenovat će tablicu:

Javna funkcija RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, Izborno strDBPath As String) Kao Boolean Dim db Kao DAO.Database Dim tdf As TableDef 'Trap za sve pogreške. Uključeno Greška Nastavi dalje 'Ako je ime baze podataka prazno … Ako Trim $ (strDBPath) = "" Zatim "… tada postavite Db na trenutni Db. Postavi db = CurrentDb () Inače 'U suprotnom, postavite Db na navedenu otvorenu bazu podataka. Postavite db = DBEngine.Workspaces (0) .OpenDatabase (strDBPath) 'Pogledajte je li došlo do pogreške. Ako je pogreška, tada 'MsgBox "Nije moguće pronaći bazu podataka za otvaranje:" & strDBPath RenameTable = False Exit Funkcija End If End If If ObjectExists ("Table", strOldTableName, strDBPath) Zatim postavite tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = True Else RenameTable = False End If End Function 'Primjer upotrebe Private Sub RenameTable_Example () Call RenameTable ("table1", "table2") End Sub

Funkciju možete pozvati ovako:

Private Sub RenameTable_Example () Poziv RenameTable ("table1", "table2") Kraj Sub

Skraćivanje / brisanje zapisa iz tablice

Ova funkcija će izbrisati zapise iz tablice s rukovanjem pogreškama:

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 SubExit: SubExit Exit: SubExit Exit: SubExBit Exit: SubExit Exit: SubExit Exit: SubReg. Greška Delete_From_Table: "& vbCrLf & Err.Number &": "& Err. Opis Nastavi potizlaz Izlazna funkcija 'Primjer upotrebe Javni podmeni Delete_From_Table_Example () Poziv Delete_From_Table (" Table1 "," num = 2 ") End Sub

Izvoz tablice u Excel

Ovaj redak koda izvest će tablicu u Excel (novu proračunsku tablicu):

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

Ili možete koristiti ovu funkciju:

Javna funkcija Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Funkcija 'Primjer uporabe Sub Export_Table_Excel_Example ("\ Exx_T) Kraj podm

Gornji kôd će se izvesti u novu proračunsku tablicu. Umjesto toga možete dodati tablicu u postojeću proračunsku tablicu. Naš članak o uvozu / izvozu u Access VBA pokriva ovo detaljnije.

Dodavanje / dodavanje zapisa u tablicu

Ova funkcija dodaje / dodaje zapis u tablicu:

Javna funkcija Append_Record_To_Table (TableName As String, FieldName As String, FieldValue As String) On Error GoTo SubError Dim rs Kao DAO.Recordset Dim SQL Kao String Dim CurrentYear As Integer Set rs = CurrentDb.OpenRecordset (Ime tablice) rs.dr .Value = FieldValue rs.Update rs.Close Set rs = Nothing SubExit: Exit Function SubError: MsgBox "RunSQL error:" & vbCrLf & Err.Number & ":" & Err.Description SubExit End Function 'Usage Example Private Sub AppeT_Text_Record_ () Pozovite Append_Record_To_Table ("Tablica1", "broj", 3) Kraj pod

Dodajte zapis u tablicu iz obrasca

Ova funkcija dodaje zapis u tablicu iz obrasca:

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 [rs2] Polje3] = Vrijednost3 rs. Ažuriraj rs.Zatvori skup rs = Ništa Podizlaz: Izlazna funkcija Podpogreška: MsgBox "Pogreška osvježenja_forme:" & vbCrLf & Err.Number & ":" & Err.Opis funkcije završetka

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave