0

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にはそれに関するドキュメントがないので、暗闇の中でちょっといじっています。

選択には実際にはいくつかの結合が含まれますが、それが問題であるかどうかを確認するためにそれを削除しました。ただし、この単純なクエリとより複雑なクエリの両方がAccess内で実行されます。

4

1 に答える 1

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を実行させることができませんでした:)

于 2012-05-21T08:11:26.200 に答える