Piekļuve VBA tabulām - atjaunināšana, skaitīšana, dzēšana, izveide, pārdēvēšana, eksportēšana

Šī apmācība iemācīs jums strādāt ar piekļuves tabulām, izmantojot VBA.

Piekļūstiet VBA tabulām

Sākumā mēs parādīsim vienkāršās komandas darbam ar tabulām programmā Access. Vēlāk šajā apmācībā mēs parādīsim jums visas profesionāli izstrādātās funkcijas darbam ar Access tabulām.

Izveidot tabulu

Šis kods izmantos SQL, lai izveidotu tabulu ar nosaukumu “Table1” ar laukiem “ID” un “Name”:

 Dim tabulas_nosaukums kā virkne Dim lauki Kā virkne tabulas_nosaukums = "Tabula1" lauki = "[[ID] varchar (150), [Name] varchar (150))" CurrentDb.Execute "CREATE TABLE" & table_name & fields

Aizvērt tabulu

Šī VBA koda rinda aizvērs tabulu (saglabā izmaiņas):

DoCmd.Close acTable, "Table1", acSaveYes

Lai aizvērtu tabulu, nesaglabājot:

DoCmd.Close acTable, "Table1", acSaveNo

Dzēst tabulu

Šis kods izdzēsīs tabulu (piezīme: vispirms tabula ir jāaizver):

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

Pārdēvēt tabulu:

Šī koda rinda pārdēvēs piekļuves tabulu:

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

Vēl viena iespēja ir izmantot datu bāzes objekta rekvizītu TableDefs.

Iestatīt tdf = db.TableDefs (strOldTableName) tdf.Name = strNewTableName

Tukšs / skaidrs galds

Šis VBA kods iztukšos tabulu:

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

Saīsināt tabulu / dzēst ierakstus

Šī VBA koda rinda izmanto SQL, lai no tabulas izdzēstu ierakstus, kas atbilst noteiktiem kritērijiem:

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

Eksportēt tabulu uz Excel

Lai eksportētu tabulu uz Excel, izmantojiet DoCmd.OutputTo metode:

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

vai izmantojiet DoCmd.TransferSheetsheet metode:

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

Atjaunināt tabulu

Šis kods atjauninās ierakstu, nerādot brīdinājuma ziņojumu:

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

Piekļūstiet VBA tabulas funkcijām

Iepriekš minētie koda piemēri ir vienkāršas komandas, kuras varat izmantot, lai mijiedarbotos ar tabulām, izmantojot VBA. Tomēr, lai pareizi izmantotu šīs komandas, jums bieži būs jāpievieno daudz vairāk atbalsta koda (ieskaitot kļūdu apstrādi). Zemāk jūs atradīsit profesionāli izstrādātas funkcijas darbam ar Access tabulām.

Skaitīt tabulas ierakstus

Šī funkcija tabulā uzskaitīs ierakstu skaitu:

Publiskās funkcijas Count_Table_Records (tabulas nosaukums kā virkne) kā vesels skaitlis ieslēdzot kļūdu GoTo Kļūda: Dim r Kā DAO.Recordset Dim c Kā vesels skaitlis Kopa r = CurrentDb.OpenRecordset ("Izvēlieties skaitu (*) kā rcount no" & TableName) .OpenRecordset If (r .EOF) Tad c = 0 Cits c = Nz (r! RCount, 0) Beigas Ja Count_Table_Records = c Iziet funkcijas kļūda: izsauciet MsgBox ("Radās kļūda:" & Err.Description, vbExclamation, "Error") Beigu funkcija ' Lietošanas piemērs Privāts apakšatskaite Count_Table_Records_Example () MsgBox (Count_Table_Records ("Table1")) Beigu apakšdaļa

Pārbaudiet, vai tabula darbojas

Šī funkcija pārbaudīs, vai pastāv tabula, atgriežot TRUE vai FALSE:

Publisko funkciju tabulaExists (ByVal strTableName kā virkne) kā Būla 'Funkcija: Nosakiet, vai tabula pastāv Access datu bāzē' Argumenti: strTablename: Pārbaudāmās tabulas nosaukums Dim tdf Kā DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs (strTableName ) TableExists = (Err.Number = 0) Beigu funkcija

Šeit ir izmantotās funkcijas piemērs:

Privāta apakštabulaExists_Example () If VBA_Access_Checks.TableExists ("Table") = True, tad MsgBox ("Tabula tika atrasta!") Cits MsgBox ("Tabula netika atrasta!") Beigas Ja beigas Sub

Izveidojiet tabulas funkciju

Šī funkcija izveidos tabulu Access VBA pašreizējā datu bāzē:

Publiskā funkcija CreateTable (tabulas_lauki kā virkne, tabulas_nosaukums kā virkne) Kā Būla Dim strCreateTable Kā virkne Dim intCount Kā vesels skaitlis Dim strFields () Kā virkne Dim strValues ​​() Kā virkne Dim strInsertSQL Kā virkne Dim intCounter kā vesels skaitlis Dim intData kā vesels skaitlis Kļūda GoTo Err strFields = Sadalīt (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) =", "Tad strCreateTable = Left (strCreateTable, Len (strCreateTable) - 1) strCreateTable = strCreateTable &") "End If CurrentDb.Execute strCreateTable intCounter = 0 intData = 0 Err.Number = 0 Tad CreateTable = True Else CreateTable = False End, ja iziet no funkcijas Err: CreateTable = False MsgBox Err.Number & "" & Err.Description Beigu funkcija

Šī funkcija atgriezīs TRUE, ja tabula tiks izveidota veiksmīgi, vai FALSE, ja tabula netiks izveidota.

Funkciju var izsaukt šādi:

Privāta apakšizveide CreateTable_Example () Zvanīt CreateTable ("f1, f2, f3, f4", "ttest") beigu apakšdaļa

Tabulas dzēšanas / nomešanas funkcija

Šī funkcija izdzēsīs tabulu, ja tā pastāv:

Publiskā funkcija DeleteTableIfExists (TableName as String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'"))) Tad DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd. DeleteObject acTable = acDefault, TableName Debug.Print "Table" & TableName & "izdzēsts…" DoCmd.SetWarnings True End If End Function

Funkciju var izsaukt šādi:

Private Sub DeleteTableIfExists_Example () Zvanīt DeleteTableIfExists ("Table1") Beigu apakšiedaļa

Tukša galda funkcija

Šī funkcija iztukšos tabulu, ja tāda pastāv:

Public Function EmptyTable (TableName as String) If Not IsNull (DLookup ("Name", "MSysObjects", "Name = '" & TableName & "'"))) Tad DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM" & TableName Atkļūdot. Izdrukāt "Tabula" un Tabulas nosaukums & "iztukšots …" DoCmd.SetWarnings True End If End Function

Funkciju var izsaukt šādi:

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

Pārdēvēt tabulas funkciju

Šī VBA funkcija pārdēvēs tabulu:

Publiskās funkcijas pārdēvēšanas tabula (ByVal strOldTableName kā virkne, ByVal strNewTableName kā virkne, pēc izvēles strDBPath kā ​​virkne) kā Būla Dim db Kā DAO.Database Dim tdf As TableDef 'Trap par visām kļūdām. Par kļūdu Atsākt nākamo 'Ja datu bāzes nosaukums ir tukšs … Ja Trim $ (strDBPath) = "" Tad "… tad iestatiet Db uz pašreizējo Db. Set db = CurrentDb () Citādi 'Pretējā gadījumā iestatiet Db uz norādīto atvērto datu bāzi. Iestatiet db = DBEngine.Workspaces (0). OpenDatabase (strDBPath) 'Pārbaudiet, vai nav radusies kļūda. Ja kļūda "MsgBox" nevarēja atrast atvērto datubāzi: strNewTableName db.Close RenameTable = True Else RenameTable = Nepareizs beigas, ja beigu funkcija 'Lietojuma piemērs Privāts apakšnosaukums RenameTable_Example () Zvana pārdēvēšanas tabula ("table1", "table2") Beigu apakšdaļa

Funkciju var izsaukt šādi:

Privāta apakšnosaukums RenameTable_Example () Zvanu pārdēvēšanas tabula ("table1", "table2") Beigu apakšnodaļa

Saīsināt / dzēst ierakstus no tabulas

Šī funkcija izdzēsīs ierakstus no tabulas ar kļūdu apstrādi:

Publiskā funkcija Delete_From_Table (tabulas nosaukums kā virkne, kritēriji kā virkne) Kļūda GoTo apakškļūda DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM" & TableName & "WHERE" un kritēriji) DoCmd.SetWarnings True SubExit Exit: Exit Exit Delete_From_Table error: "& vbCrLf & Err.Number &": "& Err.Description Resume SubExit End Function 'Lietojuma piemērs Public Sub Delete Delete_From_Table_Example () Call Delete_From_Table (" Table1 "," num = 2 ") End Sub

Eksportēt tabulu uz Excel

Šī koda rinda eksportēs tabulu uz Excel (jaunu izklājlapu):

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

Vai arī varat izmantot šo funkciju:

Publiskās funkcijas Export_Table_Excel (TableName As String, FilePath As String) DoCmd.TransferSheetsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Usage Example Sub Sub Export_Table_Excel_Example () Export_Table_Texed " Beigt apakš

Iepriekš minētais kods tiks eksportēts uz jaunu izklājlapu. Tā vietā esošai izklājlapai varat pievienot tabulu. Mūsu raksts par importēšanu / eksportēšanu programmā Access VBA to aplūko sīkāk.

Pievienojiet / pievienojiet ierakstus tabulai

Šī funkcija tabulai pievienos / pievienos ierakstu:

Publiskā funkcija Append_Record_To_Table (tabulas nosaukums kā virkne, lauka nosaukums kā virkne, lauka vērtības vērtība kā virkne) Kļūda GoTo apakškļūda Dim rs kā DAO.Recordset Dim SQL kā virkne Dim CurrentYear kā vesels skaitlis rs = CurrentDb.OpenRecordset (TableName) .Value = FieldValue rs.Update rs.Close Set rs = Nothing SubExit: Exit Funkcija SubError: MsgBox "RunSQL error:" & vbCrLf & Err.Number & ":" & Err.Description Resume SubExit End Function 'Lietojuma piemērs Private SubPendx_Record () Zvanīt Append_Record_To_Table ("Table1", "num", 3) End Sub

Pievienojiet ierakstu tabulai no veidlapas

Šī funkcija pievienos ierakstu tabulai no veidlapas:

Publiskā funkcija Add_Record_To_Table_From_Form (Tabulas nosaukums kā virkne) On Error GoTo SubError Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset (TableName) rs.AddNew 'rs! [Field1] = Value1' rs! [Field2] = Value Lauks3] = Vērtība3 rs. Atjaunināt rs.Close Set

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave