【问题标题】:Open DAO recordset from Access using C++ builder 2010使用 C++ builder 2010 从 Access 打开 DAO 记录集
【发布时间】:2012-05-15 09:49:23
【问题描述】:

internetz 上缺少有关将 DAO 与 C++ 结合使用的信息,这让我感到非常恼火。因为我有一个东西要解决,所以我不得不摆弄它,我正在考虑跳出窗户:)

我发现的唯一例子是 VB6、VB.Net 和 VBA 相关的。我试图将它们应用到 C++ 并有以下内容

...    
WideString sqlQuery = WideString(
                "SELECT * "\
                "FROM NODES "\
                "WHERE ID = " + IntToStr(NODE_ID));

        Dao_2k::RecordsetPtr pNewRecord;
        pNewRecord = m_dbDatabase->OpenRecordset(sqlQuery.c_bstr(), OleVariant(RecordsetTypeEnum::dbOpenDynaset));
...

但它就是不想工作。我首先尝试仅使用 sql 查询,然后添加了 dbOpenDynaset 设置并尝试了其他设置。但执行只是停止。我认为 C++ 中的 OpenRecordset 函数可能需要更多变量,但 IDE 没有关于它的文档,所以我有点摸不着头脑。

选择实际上将包含一些连接,但我将其剥离以查看是否是问题所在。但是这个简单和更复杂的查询都在 Access 中执行。

【问题讨论】:

  • This 可能会有所帮助,如果有,也许您可​​以发布答案?

标签: c++ ms-access dao recordset c++builder-2010


【解决方案1】:

我使用 VB 教程和其他一些资源中描述的一些原则让它工作。这样的事情应该可以工作。

WideString sqlQuery = WideString(
            "SELECT * FROM NODES "\
            "WHERE ID = " + IntToStr(NODE_ID));

Dao_2k::RecordsetPtr pRecord;
pRecord = m_dbDatabase->OpenRecordset(sqlQuery.c_bstr(), OleVariant(RecordsetTypeEnum::dbOpenDynaset));

Dao_2k::FieldsPtr fs;
fs = pEntryRecord->get_Fields();

Dao_2k::FieldPtr nodeIdField;
nodeIdField = fs->get_Item(OleVariant(0));

虽然 Access 在处理 SQL 语法方面并不可怕。 JOINS 需要一组奇怪的括号,而我还不能让它做一个 UNION :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多