VBA Tablolarına Erişin - Güncelle, Say, Sil, Oluştur, Yeniden Adlandır, Dışa Aktar

Bu eğitim size VBA kullanarak Access Tables ile nasıl çalışacağınızı öğretecektir.

VBA Tablolarına Erişim

Başlamak için Access'te Tablolarla çalışmak için basit komutları göstereceğiz. Bu öğreticinin ilerleyen bölümlerinde, Access'te tablolarla çalışmak için profesyonel olarak geliştirilmiş işlevlerin tamamını göstereceğiz.

Tablo Oluştur

Bu kod, "ID" ve "Ad" alanlarıyla "Tablo1" adlı bir tablo oluşturmak için SQL'i kullanır:

 Tablo_adı As String Soluk alanlar As String table_name = "Table1" alanları = "([ID] varchar(150), [Name] varchar(150))" CurrentDb.Execute "CREATE TABLE " & tablo_adı ve alanlar

Tabloyu Kapat

Bu VBA kodu satırı bir Tabloyu kapatır (değişiklikleri kaydeder):

DoCmd.Close acTable, "Tablo1", acSaveEvet

Bir Tabloyu kaydetmeden kapatmak için:

DoCmd.Close acTable, "Tablo1", acSaveNo

Tabloyu Sil

Bu kod bir Tabloyu siler (not: önce Tablo kapatılmalıdır):

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

Tabloyu Yeniden Adlandır:

Bu kod satırı, bir Erişim Tablosunu yeniden adlandıracaktır:

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

Başka bir seçenek de bir veritabanı nesnesinin TableDefs özelliğini kullanmaktır.

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

Boş / Temiz Tablo

Bu VBA kodu bir Tabloyu boşaltacaktır:

DoCmd.RunSQL "SİL * FROM" & "Tablo1"

Tabloyu Kes / Kayıtları Sil

Bu VBA kodu satırı, belirli kriterleri karşılayan bir tablodan kayıtları silmek için SQL kullanır:

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

Tabloyu Excel'e Aktar

Bir Tabloyu Excel'e aktarmak için DoCmd.OutputTo yöntem:

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

veya DoCmd.TransferE-tablo yöntem:

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

Tabloyu Güncelle

Aşağıdaki kod, uyarı mesajını görüntülemeden bir kaydı güncelleyecektir:

DoCmd.SetWarnings (Yanlış) DoCmd.RunSQL "Ürünleri GüncelleT SET ÜrünleriT.ÜrünAdı = 'Ürün AAA' NEREDE (((ÜrünlerT.ÜrünKimliği)=1))"

VBA Tablo İşlevlerine Erişim

Yukarıdaki kod örnekleri, VBA kullanarak Tablolar ile etkileşim kurmak için kullanabileceğiniz basit komutlardır. Ancak, bu komutları doğru bir şekilde kullanmak için genellikle çok daha fazla destekleyici kod (hata işleme dahil) eklemeniz gerekecektir. Aşağıda Access'te Tablolar ile çalışmak için profesyonel olarak geliştirilmiş işlevler bulacaksınız.

Sayım Tablosu Kayıtları

Bu işlev, bir tablodaki kayıtların sayısını sayar:

Public Function 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(" & TableName'den rcount olarak say(*) seçin).OpenRecordset If (r) .EOF) Sonra c = 0 Else c = Nz(r!rCount, 0) End If Count_Table_Records = c Exit Function Err: Çağrı MsgBox("Bir hata oluştu: " & Err.Description, vbExclamation, "Error") End Function ' Kullanım Örneği Private Sub Count_Table_Records_Example() MsgBox (Count_Table_Records("Table1")) End Sub

Tablonun Var Olup Olmadığını Kontrol Etme İşlevi

Bu İşlev, DOĞRU veya YANLIŞ döndürerek bir tablonun olup olmadığını test eder:

Genel İşlev TableExists(ByVal strTableName As String) As Boolean 'Function: Bir Access veritabanında tablo olup olmadığını belirleyin 'Arguments:strTablename: Dim tdf As DAO.TableDef On Error Resume Next Set tdf = CurrentDb.TableDefs(strTableName kontrol edilecek tablonun adı) ) TableExists = (Err.Number = 0) Fonksiyonu Bitir

Kullanımdaki işlevin bir örneği:

Private Sub TableExists_Example() If VBA_Access_Checks.TableExists("Table") = True Then MsgBox ("Tablo bulundu!") Else MsgBox ("Tablo bulunamadı!") End If End Sub

Tablo İşlevi Oluştur

Bu işlev, Geçerli Veritabanında Access VBA'da bir Tablo oluşturacaktır:

Public Function CreateTable(table_fields As String, table_name As String) As Boolean Dim strCreateTable As String Dim intCount As Integer Dim strFields() As String Dim strValues() As String Dim strInsertSQL As String Dim intCounter As Integer Dim intCounter Er As As Dim intCount As Integer Dim intCount strFields = Split(table_fields, ",") strCreateTable = "TABLO OLUŞTUR " & tablo_adı & "(" intCounter = 0 için 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 Err.Number = 0 Sonra CreateTable = True Else CreateTable = Çıkış Yapılırsa Yanlış Son İşlev Err: CreateTable = Yanlış MsgBox Err.Number & " " & Err.Description End Function

Bu İşlev, tablo başarılı bir şekilde oluşturulursa TRUE veya tablo oluşturulmazsa FALSE döndürür.

Fonksiyonu şu şekilde çağırabilirsiniz:

Private Sub CreateTable_Example() CreateTable("f1,f2,f3,f4", "ttest") End Sub'ı çağırın

Tabloyu Sil / Bırak İşlevi

Bu işlev, varsa bir tabloyu siler:

Public Function DeleteTableIfExists(TableName As String) If Not IsNull(DLookup("Name", "MSysObjects", "Name='" & TableName & "'")) Sonra DoCmd.SetWarnings False DoCmd.Close acTable, TableName, acSaveYes DoCmd. DeleteObject acTable = acDefault, TableName Debug.Print "Table" & TableName & " silindi… " DoCmd.SetWarnings True End If End Function

Fonksiyonu şu şekilde çağırabilirsiniz:

Private Sub DeleteTableIfExists_Example() DeleteTableIfExists("Table1") End Sub çağırın

Boş Tablo Fonksiyonu

Bu işlev, varsa bir tabloyu boşaltır:

Public Function EmptyTable(TableName As String) If Not IsNull(DLookup("Name", "MSysObjects", "Name='" & TableName & "'")) Sonra DoCmd.SetWarnings False DoCmd.RunSQL "DELETE * FROM " & TableName Debug.Print "Table" & TableName & " boşaltıldı… " DoCmd.SetWarnings True End If End Fonksiyonu

Fonksiyonu şu şekilde çağırabilirsiniz:

Private Sub EmptyTable_Example() EmptyTable("Table1") End Sub çağırın

Tablo İşlevini Yeniden Adlandır

Bu VBA işlevi bir tabloyu yeniden adlandırır:

Genel İşlev RenameTable(ByVal strOldTableName As String, ByVal strNewTableName As String, İsteğe Bağlı strDBPath As String) As Boolean Dim db As DAO.Database Dim tdf As TableDef ' Herhangi bir hata için tuzak. On Error Resume Next ' Veritabanı adı boşsa… Eğer Trim$(strDBPath) = "" Sonra '… o zaman Db'yi geçerli Db'ye ayarlayın. Set db = CurrentDb() Else ' Aksi takdirde, Db'yi belirtilen açık veritabanına ayarlayın. Set db = DBEngine.Workspaces(0).OpenDatabase(strDBPath) ' Bir hata oluşup oluşmadığına bakın. Err Then 'MsgBox "Açılacak veritabanı bulunamadı: " & strDBPath RenameTable = False Exit Function End If End If ObjectExists("Table", strOldTableName, strDBPath) Sonra Set tdf = db.TableDefs(strOldTableName) tdf.Name = strNewTableName db.Close RenameTable = True Else RenameTable = False End If End Function 'Kullanım Örneği Private Sub RenameTable_Example() Çağrı RenameTable("table1", "table2") End Sub

Fonksiyonu şu şekilde çağırabilirsiniz:

Private Sub RenameTable_Example() RenameTable("table1", "table2") End Sub'ı çağırın

Tablodan Kayıtları Kes / Sil

Bu işlev, hata işleme ile bir tablodan kayıtları siler:

Public Function Delete_From_Table(TableName As String, Criteria As String) Hatada GoTo SubError DoCmd.SetWarnings False DoCmd.RunSQL ("DELETE * FROM " & TableName & " WHERE " & Criteria) DoCmd.SetWarnings True SubError: Exit M Fonksiyonu Delete_From_Table hatası: " & vbCrLf & Err.Number & ": " & Err.Description Resume SubExit End Function 'Kullanım Örneği Public Sub Delete_From_Table_Example() Çağrı Delete_From_Table("Table1", "num=2") End Sub

Tabloyu Excel'e Aktar

Bu kod satırı, bir Tabloyu Excel'e aktarır (yeni bir elektronik tablo):

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

Veya bu işlevi kullanabilirsiniz:

Genel İşlev Export_Table_Excel(Dize Olarak TabloAdı, Dize Olarak FilePath) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, TableName, FilePath, True End Function 'Kullanım Örneği Alt Export_Table_Excel_Example () Export_Table_Excel("Tabletemp.", "cTable\Exports"): Alt Bitiş

Yukarıdaki kod yeni bir e-tabloya aktarılacaktır. Bunun yerine mevcut bir elektronik tabloya tablo ekleyebilirsiniz. Access VBA'da İçe / Dışa Aktarma hakkındaki makalemiz bunu daha ayrıntılı olarak ele almaktadır.

Tabloya Kayıt Ekleme / Ekleme

Bu işlev, bir tabloya bir kayıt ekler/ekler:

Genel İşlev Append_Record_To_Table(TableName As String, FieldName As String, FieldValue As String) Hatada GoTo SubError Dim rs As DAO.Recordset Dim SQL As String Dim CurrentYear As Integer Set rs = CurrentDb.OpenRecordset(TableName) rs.FiAddNameNew rs)( .Value = FieldValue rs.Update rs.Close Set rs = Hiçbir Şey SubExit: Exit Function SubError: MsgBox "RunSQL error: " & vbCrLf & Err.Number & ": " & Err.Description Resume SubExit End Function 'Kullanım Örneği Private Sub Append_Record_Tole_Table_ () Append_Record_To_Table("Table1", "num", 3) End Sub'ı çağırın

Formdan Tabloya Kayıt Ekleme

Bu işlev, bir formdan bir tabloya kayıt ekler:

Genel İşlev Add_Record_To_Table_From_Form(TableName As String) Hatasında GoTo SubError Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset(TableName) rs.AddNew 'rs![Field1] = Value1 'rs![Field2] = Value2 rs Field3] = Value3 rs.Update rs.Close Set rs = Hiçbir Şey SubExit: Exit Function SubError: MsgBox "Refresh_Form error: " & vbCrLf & Err.Number & ": " & Err.Description End Function

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave