vb.net - Access 更新时 VB.Net 中的事件

标签 vb.net ms-access

我正在使用 VB.Net 编写一个应用程序。我的项目是当我单击 Excel 文件上的单元格并运行宏时,它会将数据从单元格发送到 Access。我的应用程序只显示数据库。

但是我的问题是,当 Access 中的记录发生更改(Access 中的记录更新或插入)时,如何在 VB.Net 应用程序(刷新应用程序)中触发,或者是否有任何事件在 Access 发生变化时执行某些操作改变了吗?

最佳答案

我对 @Jimi 的评论中提到的 FileSystemWatcher() 感到好奇。
所以我编写了一个基本程序,在每次 Access 数据库文件发生更改后更新 DataGridView。我已经测试过它及其工作原理。

澄清:
1.该代码的目的是演示有关 OP 问题的基本原理,并且需要一些改进和模块化。
2.如果您可以使用sql server,SqlDependency是一个更好的解决方案。

Imports System.IO
Imports System.Data.OleDb
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        UpdateDgv()
        watch()
    End Sub


    Private Sub UpdateDgv()
        DataGridView1.DataSource = Nothing
        DataGridView1.DataSource = GetDatatableFromAccess()
    End Sub

    Private Sub UpdateDgvThread()
        RemoveHandler watcher.Changed, AddressOf OnChanged
        DataGridView1.Invoke(New Action(AddressOf UpdateDgv))
        AddHandler watcher.Changed, AddressOf OnChanged
    End Sub

    Public watcher As FileSystemWatcher

    Private Sub watch()
        watcher = New FileSystemWatcher()
        watcher.Path = "c:\Users\john\Desktop\Desktop 01-04-2017\"
        watcher.NotifyFilter = NotifyFilters.LastWrite
        watcher.Filter = "*.*"
        AddHandler watcher.Changed, AddressOf OnChanged
        watcher.EnableRaisingEvents = True
    End Sub


    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
        Debug.WriteLine("file was changed")
        ' update datagridview
        Dim t1 As New System.Threading.Thread(AddressOf UpdateDgvThread)
        t1.Start()
    End Sub

    Public Function GetDatatableFromAccess() As DataTable

        Dim connString As String =
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\john\Desktop\Desktop 01-04-2017\Database11.accdb"

        Dim results As New DataTable()

        Using conn As New OleDbConnection(connString)
            Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM TestTable", conn)
            conn.Open()
            Dim adapter As New OleDbDataAdapter(cmd)
            adapter.Fill(results)
        End Using

        Return results
    End Function

End Class

关于vb.net - Access 更新时 VB.Net 中的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48031698/

相关文章:

ms-access - MS Access 无法创建 MDE 错误。对象过多

sql - 如何解决 MS-Access 中的 "Enter Parameter value"错误

vb.net - 如何在 Windows Store/WP8/WinRT 的可移植类库中使用反射?

wpf - 使用函数开始调用?

vb.net - 如何在 Visual Basic 中实现 Tesseract OCR?

C# - 如何读取和写入二进制文件?

vba - Access 条件格式以获取单个记录的连续表格

vb.net - 如何在VB.NET中提取邮件正文中的img标签

java - 带有 java 的 GUI,用于 Access 数据库

sql-server - SQL Server 后端缺少 MS Access 数据库复选框列表过滤器