VisualC.Net, WindowsSDK, windows2003Sv, SQLServer2000にて開発をしています。
データベースで通常のデータなら問題なくデータが表示されるのですが
ビューのデータでは「オブジェクト ○○(ビュー名)は無効です」とのエラーメッセー
ジが
でてしまい、操作できません。
プログラムとしてはレコードセットに関連づけてデータを開こうとしています。
ただ、どのあたりに原因があるのか不明です。何かヒントになる事はありませんか?
ソースコードは以下のようになります。
下のSQL文はもちろんクエリアナライザで普通に結果が出ます。
ビューを使わないレコードの場合は以下のプログラムは問題なく動きます。
//SQL文字を作成
szStrSQL=SELECT * FROM ○○ビュー名
CoInitialize(NULL); //Comライブラリのオープン
//オープンコネクション
TESTHR(lpConnection.CreateInstance(__uuidof(Connection)));
lpConnection->Open (strCnn, ", ", adConnectUnspecified);
//レコードセット作成し、値をリンク
TESTHR(lpRecordset.CreateInstance(__uuidof(Recordset)));
TESTHR(lpRecordset->Open
(szStrSQL,strCnn,adOpenStatic,adLockBatchOptimistic,adCmdText));
↑↑ここのレコードセットのオープンでエラーが出ている↑↑
TESTHR(lpRecordset->QueryInterface(__uuidof
(IADORecordBinding),(LPVOID*)&picRs));
TESTHR(picRs->BindToRecordset(&tbTestData)); //デー
タをローカル変数へ収納
//レコードセット切断
if(lpRecordset){
if (lpRecordset->State==adStateOpen){
lpRecordset->Close();
}
}
//データベース切断処理
if (lpConnection){
if (lpConnection->State == adStateOpen){
lpConnection->Close();
}
}
CoUninitialize();
すみません。
別のテストテーブルを作って実験した所、
初めはViewだから特別な動きをしているというように思っていたのですが、
データベースのViewの作り方に問題があったのではないか?
という事が分かってきました。
解決はしていませんが ひとまず解決のチェックを入れます。
どうもすみませんでした
最終的に解決しました。
クライアントによって権限レベルが違い、そこではじかれていたようでした。