Käytä VBA -taulukoita - päivitä, laske, poista, luo, nimeä uudelleen, vie

Tämä opetusohjelma opettaa sinulle, miten voit käyttää Access -taulukoita VBA: n avulla.

Avaa VBA -taulukot

Aluksi esittelemme yksinkertaiset komennot Accessin taulukoiden kanssa työskentelemiseksi. Myöhemmin tässä opetusohjelmassa näytämme sinulle täydet ammattimaisesti kehitetyt toiminnot Accessin taulukoiden kanssa työskentelyyn.

Luo taulukko

Tämä koodi luo SQL: n avulla taulukon nimeltä "Taulukko 1", jossa on kentät "ID" ja "Nimi":

 Himmennä taulukon_nimi merkkijonona Dim -kentät merkkijonona table_name = "Taulukko1" -kentät = "([ID] varchar (150), [Nimi] varchar (150))" CurrentDb.Exuteute "CREATE TABLE" & table_name & fields

Sulje taulukko

Tämä VBA -koodirivi sulkee taulukon (tallennetaan muutokset):

DoCmd.Close acTable, "Table1", acSaveYes

Taulukon sulkeminen tallentamatta:

DoCmd.Close acTable, "Table1", acSaveNo

Poista taulukko

Tämä koodi poistaa taulukon (huomautus: ensin taulukko on suljettava):

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

Nimeä taulukko uudelleen:

Tämä koodirivi nimeää käyttötaulukon uudelleen:

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

Toinen vaihtoehto on käyttää tietokantaobjektin TableDefs -ominaisuutta.

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

Tyhjä / tyhjä pöytä

Tämä VBA -koodi tyhjentää taulukon:

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

Katkaise taulukko / poista tietueet

Tämä VBA -koodirivi poistaa SQL: n avulla taulukosta tietueet, jotka täyttävät tietyt ehdot:

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

Vie taulukko Exceliin

Voit viedä taulukon Exceliin käyttämällä DoCmd.OutputTo menetelmä:

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

tai käytä DoCmd.TransferSpreadsheet menetelmä:

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

Päivitä taulukko

Seuraava koodi päivittää tietueen näyttämättä varoitusviestiä:

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

Avaa VBA -taulukkotoiminnot

Yllä olevat koodiesimerkit ovat yksinkertaisia ​​komentoja, joiden avulla voit olla vuorovaikutuksessa taulukoiden kanssa VBA: n avulla. Sinun on kuitenkin usein lisättävä paljon enemmän tukikoodia (mukaan lukien virheiden käsittely), jotta voit käyttää näitä komentoja oikein. Alla on ammattimaisesti kehitettyjä toimintoja Accessin taulukoiden kanssa työskentelyyn.

Laske taulukkotietueet

Tämä toiminto laskee taulukon tietueiden määrän:

Julkiset toiminnot Count_Table_Records (TableName As String) kokonaislukuna Virhe GoTo Err: Dim r Kuten DAO.Recordset Dim c Integer Set r = CurrentDb.OpenRecordset ("Valitse count (*) as rcount from" & TableName) .OpenRecordset If (r .EOF) Sitten c = 0 Muu c = Nz (r! RCount, 0) End If Count_Table_Records = c Exit Function Err: Call MsgBox ("Virhe tapahtui:" & Err.Description, vbExclamation, "Error") End Function ' Käyttöesimerkki Yksityinen aliluku Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) End Sub

Tarkista, onko taulukko olemassa

Tämä toiminto testaa, onko taulukko olemassa ja palauttaa arvon TOSI tai EPÄTOSI:

Julkiset funktiot TableExists (ByVal strTableName As String) Boolen funktiona: Määritä, onko taulukko olemassa Access -tietokannassa Argumentit: strTablename: Tarkistettavan taulukon nimi Dim tdf DAO.TableDef On Error Jatka Seuraava Aseta tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) End Function

Tässä on esimerkki käytössä olevasta toiminnosta:

Yksityinen alitaulukkoExists_Example () If VBA_Access_Checks.TableExists ("Table") = True Sitten MsgBox ("Taulukko löytyi!") Muu MsgBox ("Taulukkoa EI löytynyt!") Lopeta Jos loppuosa

Luo taulukkotoiminto

Tämä toiminto luo taulukon Access VBA: han nykyisessä tietokannassa:

Julkinen toiminto CreateTable (taulukon_kentät merkkijonona, taulukon_nimi merkkijonona) Boolen Dim strCreateTable Kuten merkkijono Dim intCount Kuten kokonaisluku Dim strFields () Kuten merkkijono Dim strValues ​​() Kuten merkkijono Dim strInsertSQL Kuten merkkijono Dim intCounter kokonaislukuna Dim intData kokonaislukuna virheessä GoTo Err strFields = Split (table_fields, ",") strCreateTable = "CREATE TABLE" & table_name & "(" For intCounter = 0 to UBound (strFields) - 1 strCreateTable = strCreateTable & "[" & strFields (intCounter) & "] varchar ( 150), "Seuraava jos oikea (strCreateTable, 1) =", "Sitten strCreateTable = Left (strCreateTable, Len (strCreateTable) - 1) strCreateTable = strCreateTable &") "End If CurrentDb.Execute strCreateTable intCounter = 0 intData = If Err.Number = 0 Sitten CreateTable = True Else CreateTable = False End if Exit Function Err: CreateTable = False MsgBox Err.Number & "" & Err.Description End Function

Tämä toiminto palauttaa arvon TRUE, jos taulukko on luotu onnistuneesti, tai FALSE, jos taulukkoa ei luoda.

Voit kutsua funktion seuraavasti:

Yksityinen aliLuoTaulukko_esimerkki () Soita Luo -taulukko ("f1, f2, f3, f4", "ttest") Loppuosa

Poista / pudota taulukkotoiminto

Tämä toiminto poistaa taulukon, jos sellainen on:

Julkinen toiminto DeleteTableIfExists (TableName as String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'")) Sitten DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd. DeleteObject acTable = acDefault, TableName Debug.Print "Table" & TableName & "poistettu…" DoCmd.SetWarnings True End If End -toiminto

Voit kutsua funktion seuraavasti:

Yksityinen osa DeleteTableIfExists_Example () Soita DeleteTableIfExists ("Table1") End Sub

Tyhjä taulukkotoiminto

Tämä toiminto tyhjentää taulukon, jos sellainen on:

Julkinen toiminto EmptyTable (TableName as String) Jos ei ole IsNull (DLookup ("Nimi", "MSysObjects", "Name = '" & TableName & "'")) Sitten DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Debug.Print "Table" & TableName & "tyhjennetty…" DoCmd.SetWarnings True End If End -toiminto

Voit kutsua funktion seuraavasti:

Yksityinen osa EmptyTable_Example () Soita EmptyTable ("Table1") End Sub

Nimeä taulukkotoiminto uudelleen

Tämä VBA -toiminto nimeää taulukon uudelleen:

Julkiset toiminnot RenameTable (ByVal strOldTableName As String, ByVal strNewTableName As String, Optional strDBPath as String) Boolean Dim db Kuten DAO.Database Dim tdf As TableDef 'Trap virheiden varalta. Virhe Jatka seuraavaksi "Jos tietokannan nimi on tyhjä… Jos Trim $ (strDBPath) =" "Sitten" … aseta sitten Db nykyiseen Db: hen. Aseta db = CurrentDb () Else 'Muussa tapauksessa aseta Db määritettyyn avoimeen tietokantaan. Aseta db = DBEngine.Workspaces (0). OpenDatabase (strDBPath) 'Tarkista, tapahtuiko virhe. Jos Err then 'MsgBox "ei löytänyt avattavaa tietokantaa:" & strDBPath RenameTable = False Exit Function End End Jos End If If ObjectExists ("Table", strOldTableName, strDBPath) Aseta sitten tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = True Else RenameTable = False End if End Function 'Käyttöesimerkki Private Sub RenameTable_Example () Call RenameTable ("table1", "table2") End Sub

Voit kutsua funktion seuraavasti:

Yksityinen alinimi RenameTable_Example () Soita RenameTable ("table1", "table2") End Sub

Katkaise / poista tietueet taulukosta

Tämä toiminto poistaa tietueet taulukosta, jossa on virheiden käsittely:

Julkinen toiminto Delete_From_Table (taulukon nimi merkkijonona, kriteerit merkkijonona) Virhe GoTo -alivirhe DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM" & TableName & "WHERE" & kriteerit) DoCmd.SetWarnings True SubExit: Exit Exit: Exit Delete_From_Table error: "& vbCrLf & Err.Number &": "& Err.Description Resume SubExit End Function 'Käyttöesimerkki Public Sub Delete Delete_From_Table_Example () Call Delete_From_Table (" Table1 "," num = 2 ") End Sub

Vie taulukko Exceliin

Tämä koodirivi vie taulukon Exceliin (uusi laskentataulukko):

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

Tai voit käyttää tätä toimintoa:

Julkinen toiminto Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Usage Esimerkki Sub Export_Table_Excel_Example () Export_Table_Excel ("Export_Table_Excel") End Sub

Yllä oleva koodi viedään uuteen laskentataulukkoon. Sen sijaan voit lisätä taulukon olemassa olevaan laskentataulukkoon. Artikkelimme tuonnista / viennistä Access VBA: ssa kattaa tämän yksityiskohtaisemmin.

Lisää / liitä tietueita taulukkoon

Tämä toiminto lisää / liittää tietueen taulukkoon:

Julkinen toiminto 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 Integer Set rs = CurrentDb.OpenRecordset (TableName) rs.AddNew .Arvo = FieldValue rs.Update rs.Close Set rs = Nothing SubExit: Exit Function SubError: MsgBox "RunSQL error:" & vbCrLf & Err.Number & ":" & Err.Description Resume SubExit End Function 'Käyttöesimerkki Yksityinen osa Appendx_Recable () Soita Append_Record_To_Table ("Table1", "num", 3) End Sub

Lisää tietue taulukkoon lomakkeesta

Tämä toiminto lisää tietueen taulukkoon lomakkeesta:

Julkinen toiminto Add_Record_To_Table_From_Form (TableName As String) Virhe GoTo SubError Dim rs DAO.Recordset Set rs = CurrentDb.OpenRecordset (TableName) rs.AddNew 'rs! [Field1] = Value1' rs! [Field2] = Arvo Kenttä3] = Arvo3 rs.Update rs.Close Set rs = Nothing SubExit: Exit Function SubError: MsgBox "Refresh_Form error:" & vbCrLf & Err.Number & ":" & Err.Description End Function

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave