由于缺乏有关在internetz上使用带有C ++的DAO的信息,我感到非常恼火。既然我有一件事需要解决,我必须对它进行一些调整,而我正在考虑跳出窗口而不是:)
我找到的唯一例子是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没有关于它的文档,所以我在黑暗中有点笨手笨脚。
select实际上会包含一些连接,但我将其剥离以查看是否存在问题。但是这个简单且更复杂的查询都在Access中执行。
答案 0 :(得分:0)
我使用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 :)