Sejalan dengan komentar saya di atas dan jawaban oleh Yawar, saya tidak mengetahui bahwa Pass Through Query dapat diedit/diperbarui. Mereka dapat diedit dalam arti bahwa Anda dapat mengedit objek Pass Through Query yang disimpan, tetapi saya tidak yakin bahwa Pass Through Query dapat menghasilkan recordset yang dapat diedit.
Pada dasarnya ada dua metode untuk menghubungkan Access ke sumber data non-Access.
Metode pertama, dan yang paling populer, adalah dengan menggunakan beberapa bentuk tabel tertaut, umumnya tabel tertaut ODBC. Ada berbagai metode untuk menggunakan tabel tertaut ODBC dengan MS Access tetapi yang paling disukai pengembang adalah menggunakan koneksi DSN-Less yang diperbarui atau dibangun kembali (dihapus dan dihubungkan kembali) pada saat aplikasi Anda dimulai. Ketahuilah bahwa ketika Anda menggunakan ODBC, Anda juga masih menggunakan DAO. DAO adalah objek akses data default yang dibangun ke dalam MS Access dan bahkan ketika Anda tidak secara khusus menulis kode DAO apa pun, MS Access masih menggunakan DAO untuk menautkan formulir, laporan, dan kueri Anda ke sumber data Anda. Dalam kasus ODBC, Anda sebenarnya memiliki dua lapisan akses data di tempat kerja, DAO dan ODBC. Tetapi Anda dapat menggunakan ODBC/DAO dengan kinerja yang cukup baik dan tanpa menulis kode (selain untuk memelihara tabel tertaut ODBC).
Cara kedua adalah dengan menggunakan ADO. Berlawanan dengan kepercayaan populer, ini tidak berarti bahwa Anda harus menggunakan formulir yang tidak terikat. Tapi itu berarti Anda harus menulis lebih banyak kode daripada menggunakan JET/DAO/MSAccess atau DAO/ODBC/SSQL Server. Anda harus menulis kode untuk membawa catatan dari database Anda ke dalam dan ADO Recordset dan kemudian menggunakan kode untuk mengikat formulir Anda ke Recordset itu. Anda harus menulis lebih banyak kode untuk menjaga agar formulir anak tetap sinkron dengan formulir induk, untuk memasukkan kunci asing ke dalam formulir anak saat catatan baru dibuat, dan untuk berbagai hal lain juga seperti pemfilteran dan pengurutan sebagai pemfilteran dan pengurutan bawaan formulir pilihan biasanya tidak bekerja dengan recordset ADO. ADO adalah cara yang bagus untuk berbicara dengan SQL Server karena benar-benar memberi Anda banyak kontrol, tetapi karena kodenya intens, dan karena Tabel Tertaut ODBC bekerja dengan sangat baik, sebagian besar pengembang tidak merekomendasikan penggunaan ADO kecuali tidak ada cara lain untuk melakukan apa Anda ingin lakukan. Salah satu contohnya adalah memanggil Stored Procedures. Saya percaya Pass Through Query dapat digunakan untuk memanggil Stored Procedures tetapi saya juga berpikir ada beberapa batasan di sana (seperti menggunakan Parameter). Saya percaya dalam banyak kasus pengembang menggunakan ADO untuk memanggil prosedur tersimpan. Saya sering menggunakan ADO tetapi saya tidak banyak menggunakan Prosedur Tersimpan (belum) jadi saya tidak memiliki banyak informasi tentang itu.
Satu hal lain yang layak disebutkan adalah bahwa DAO dengan ODBC menggunakan "pemuatan malas" tetapi ADO memaksa Anda untuk menarik semua data yang bisa sangat memakan waktu dan menghabiskan banyak memori jika Anda memiliki> jutaan baris. Atau Anda perlu menerapkan semacam paging.
Fungsi saya sendiri untuk membuat satu tabel DSN-Less ODBC Linked ada di bawah. Jika Anda baru mengenal Access dan baru mengenal VBA, ini mungkin tidak masuk akal bagi Anda. Kode menghapus definisi tabel apa pun yang sudah ada untuk tabel yang Anda coba tautkan, yang sedikit berbahaya karena saya yakin itu bisa menghapus tabel lokal yang tidak tertaut yang tidak Anda inginkan. Penanganan kesalahan di sini juga tidak terlalu cepat, tetapi sebagian besar kode contoh online tidak memiliki penanganan kesalahan yang baik di dalamnya karena komplikasi yang terlibat. Pembuatan Indeks Kunci Utama pada tabel tertaut tidak selalu diperlukan. Saya hanya memasukkannya ke dalam fungsi saya karena saya membutuhkannya satu kali untuk proyek tertentu, jadi sekarang saya meninggalkannya di sana dan menggunakannya, baik atau buruk.
Untuk memanfaatkan kode ini dengan benar, Anda benar-benar perlu memiliki daftar semua tabel tertaut Anda di suatu tempat dan beralih melalui daftar itu dan memanggil fungsi ini untuk setiap tabel. Fungsi ini memungkinkan Anda untuk menautkan tabel menggunakan nama yang berbeda dari nama sebenarnya di SQL Server. Anda juga harus memiliki cara membangun string koneksi ODBC yang valid yang harus diteruskan ke fungsi ini juga.
Private Sub LinkODBCTable(sSourceTableName As String, _
sLocalTableName As String, _
sPrimaryKeyField As String, _
sConString As String)
Dim dbCurrent As DAO.Database
Dim tdfCurrent As DAO.TableDef
Set dbCurrent = DBEngine.Workspaces(0).Databases(0)
On Error Resume Next
'Be Careful, this could delete a local, non-linked table.
dbCurrent.TableDefs.Delete sLocalTableName
If Err.Number <> 0 Then
If Err.Number = 3011 Then
'Table does not exist
Else
MsgBox "Error in LinkODBCTable" & vbCrLf & vbCrLf & Err.Number & " " & Err.Description
End If
Err.Clear
End If
On Error GoTo 0
Set tdfCurrent = dbCurrent.CreateTableDef(sLocalTableName)
tdfCurrent.Connect = sConString
tdfCurrent.sourceTableName = sSourceTableName
dbCurrent.TableDefs.Append tdfCurrent
On Error Resume Next
If sPrimaryKeyField <> "" Then
dbCurrent.Execute "CREATE INDEX __UniqueIndex ON [" & sLocalTableName & "] (" & sPrimaryKeyField & ")", dbFailOnError
If Err.Number <> 0 Then
If Err.Number = 3283 Then
'Primary Key Already Exists
Else
MsgBox "Error in LinkODBCTable" & vbCrLf & vbCrLf & Err.Number & " " & Err.Description
End If
Err.Clear
End If
End If
Set tdfCurrent = Nothing
Set dbCurrent = Nothing
End Sub
Ada beberapa sumber yang sangat bagus yang harus Anda periksa tentang DAO, ADO, Pass Through Query, SQL Server, dll:
http://technet.microsoft.com /en-us/library/bb188204%28v=sql.90%29.aspx
http://www.utteraccess.com/wiki/Choosing_between_DAO_and_ADO
Berikut adalah contoh pengikatan formulir ke ADO Recordset. Ini sedikit menyesatkan karena yang terbaik adalah memiliki objek koneksi global yang tetap terbuka selama runtime aplikasi. Ini memungkinkan Anda untuk menggunakan kumpulan rekaman ADO yang dapat diperbarui secara otomatis. Menggunakan latihan ini juga dapat membuat kumpulan catatan Anda menjadi objek tingkat formulir.
http://msdn.microsoft .com/en-us/library/office/bb243828%28v=office.12%29.aspx