gpt4 book ai didi

ms-access - 如何从外部程序在 Microsoft Access 表单中设置当前记录

转载 作者:行者123 更新时间:2023-12-04 17:02:50 25 4
gpt4 key购买 nike

背景 :
我工作的慈善机构有两个系统,一个新的 C# 系统和一个 MS Access 系统。接听某人的电话通常意味着在新系统上查找他们,然后在旧系统上再次查找他们。
不幸的是,我们被 Access 系统困住了,因为我们没有钱重新开发它。

两个系统都为每个人使用一个唯一的 PersonID,并且这些 ID 在系统之间是同步的。 Access 系统基本上是一个巨大的表格,它显示特定 PersonID 的信息。

问题 :
我想要做的是告诉 Access 将当前记录从外部 c# 程序移动到特定的 PersonID。我不想启动新的 Access 窗口,因为这在我们的 PC 上非常慢。

我试图思考谷歌如何从外部控制 Access (类似于 DDE??),但我画了一个空白。任何人都可以给我任何指示要寻找什么?这甚至可能吗?

最佳答案

您可以使用 COM 自动化。如果您的新系统是例如Excel,你可以使用这样的 VBA 代码:

Sub TestCOMtoAccess()

' Has References to Microsoft Access Object Library & Microsoft DAO 3.6 Object Library

Dim oAccess As Access.Application
Dim oForm As Access.Form
Dim RS As DAO.Recordset

' This assumes that exactly one instance of Access is running, with your old application
Set oAccess = GetObject(, "Access.Application")
Set oForm = oAccess.Forms("your_giant_form")

' find the record you are looking for
Set RS = oForm.RecordsetClone
RS.FindFirst "myPrimaryKey = 42"
' and navigate the form to this record
If Not RS.NoMatch Then
oForm.Bookmark = RS.Bookmark
End If
RS.Close

End Sub

并根据 How to interact with another programs with OLE Automation in C#?这很容易适应 C# 和 .NET。

对于 C# Windows 窗体应用程序,等效代码为:

using System;
using System.Windows.Forms;

namespace ComAutoWindowsFormsApp
{
public partial class MyCsharpForm : Form
{
Microsoft.Office.Interop.Access.Application accApp;
public MyCsharpForm()
{
InitializeComponent();
}

private void MyCsharpForm_Load(object sender, EventArgs e)
{
accApp =
(Microsoft.Office.Interop.Access.Application)
System.Runtime.InteropServices.Marshal.GetActiveObject("Access.Application");
}

private void button1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Access.Form accForm = accApp.Forms["your_giant_form"];
Microsoft.Office.Interop.Access.Dao.Recordset accRs = accForm.RecordsetClone;
accRs.FindFirst("myPrimaryKey = 42");
if (!accRs.NoMatch)
{
accForm.Bookmark = accRs.get_Bookmark();
}
accRs.Close();
}
}
}

关于ms-access - 如何从外部程序在 Microsoft Access 表单中设置当前记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45754030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com