从Microsoft Access连接到C#程序数据源

从Microsoft Access连接到C#程序数据源,c#,.net-4.0,ms-access-2003,C#,.net 4.0,Ms Access 2003,我有一个小的C#控制台程序,可以从quickbooks中检索项目列表,我正试图找出如何将该数据公开给Microsoft Access。它是XML格式的 我希望实时检索数据,因为只要Access调用数据,获取数据只需要大约一秒钟。我正在使用Access 2003和VS 2010 如果有一种方法可以用VBA实现这一点,那么它也可以很好地工作。我已经可以使用VBA获取XML数据了,但我不知道如何从那里开始 下面是我在C#中使用的代码: “我正在试图找出如何将该数据公开给Microsoft Access

我有一个小的C#控制台程序,可以从quickbooks中检索项目列表,我正试图找出如何将该数据公开给Microsoft Access。它是XML格式的

我希望实时检索数据,因为只要Access调用数据,获取数据只需要大约一秒钟。我正在使用Access 2003和VS 2010

如果有一种方法可以用VBA实现这一点,那么它也可以很好地工作。我已经可以使用VBA获取XML数据了,但我不知道如何从那里开始

下面是我在C#中使用的代码:

“我正在试图找出如何将该数据公开给Microsoft Access。它是XML格式的” 我以前从未尝试过,但我认为这是可能的,可以将完成您在dll中讨论的内容的c#类放在一个dll中,然后从Access调用。这里有一篇来自这个网站的帖子


另外,考虑到我以前从未尝试过这一点,我会把它放在你原始帖子的评论部分,但我是这个网站的新手,无法做到这一点。

那么你是说你想用C#将数据复制到你的Access数据库?是的。除非有办法用Access VBA实现。是一个向Access DB发送数据的教程。我想像DB服务器一样公开数据,以便实时检索。C程序使用什么机制检索QuickBooks数据?从技术上讲,这是一个答案。谢谢,我会调查的。告诉我会发生什么。我很想看看!事实上,如果我需要的话,这会让我走到一半,但我仍然需要创建Access可以实时使用和检索的东西。你是说一个线程不断轮询dll中的方法吗?不,我是问如何获得外部数据源以供访问。我想做一个像数据库之类的程序。程序可以托管ODBC数据库吗?我想可能吧。我可能会忘记尝试在现场做这件事,但我可能会做其他的事情。
public string DoQBQuery(XmlDocument doc)
{
    bool sessionBegun = false;
    bool connectionOpen = false;
    RequestProcessor2 rp = null;
    string ticket = "";
    try
    {
        //Create the Request Processor object
        rp = new RequestProcessor2();

        //Connect to QuickBooks and begin a session
        rp.OpenConnection2("", "QB Transaction Item Retriever", QBXMLRPConnectionType.localQBD);
        connectionOpen = true;
        ticket = rp.BeginSession("", QBFileMode.qbFileOpenDoNotCare);
        sessionBegun = true;

        //Send the request and get the response from QuickBooks
        string responseStr = rp.ProcessRequest(ticket, doc.OuterXml);

        //End the session and close the connection to QuickBooks
        rp.EndSession(ticket);
        sessionBegun = false;
        rp.CloseConnection();
        connectionOpen = false;

        return responseStr;

    }
    catch (Exception e)
    {
        MessageBox.Show(e.Message, "Error");
        if (sessionBegun)
            rp.EndSession(ticket);

        if (connectionOpen)
            rp.CloseConnection();

        throw;
    }
}