レコードセットについて – プログラミング – Home

レコードセットについて
 
通知
すべてクリア

レコードセットについて


Record
 Record
(@Record)
ゲスト
結合: 19年前
投稿: 1
Topic starter  

初めまして、最近MFCを勉強し始めたばかりの初心者ですが、
分からないことがあり質問させて頂きました。

質問内容はというと、あまりにも初心者過ぎて聞くのも恥ずかしいですが、
現在、MFCを使いODBC接続で、SQLサーバーにつなごうとしていますが、
CRecordsetの派生クラスを作り、実際のソースでクラスを呼び出そうとしても、

静的でないメンバ関数の中で呼び出しが正しくありません。

とエラーが出て使うことができません。
下記にソースを書いておきますので、よろしければご教授よろしくお願いいたします。
実行環境 Windows XP
Visual C++6.0
     SQL文発行のテーブル等ついては一部省略させて頂いております。

/*******************************************/
// 各レコードのオープンクローズクラス //
// 指定したレコードのオープンとクローズを行う //
/
****************************************/
class Dbo {

private :
CRecordset rs;

public :
BOOL dbo_Open( CString &GetSqlScript );
BOOL dbo_Close();
};
/****************************************/
// レコードのオープン処理メソッド        //
// レコードのオープンを行う //
/
****************************************/
BOOL Dbo::dbo_Open( CString &GetSqlScript ) {

try {
rs.Open( CRecordset::dynaset, GetSqlScript, CRecordset::none );
}
catch( _com_error &e ){
// データ操作失敗
AfxMessageBox( e.Description() );
return FALSE;
}
return TRUE;
}
/****************************************//
// sqlを発行しレコードの降順を行う       //
/
*******************************************//
void Sort() {

CString sqlsort;

sqlsort = select ;
sqlsort += from ;
sqlsort += ORDER BY desc;

Dbo::dbo_Open(sqlsort);
}


引用解決済
トピックタグ
ebimayo
 ebimayo
(@ebimayo)
ゲスト
結合: 19年前
投稿: 40
 

的外れでしたらすいません

CRecordsetの派生クラスになってないよな。。。
後、Dboクラスのインスタンスを作成していませんが
この後どうやってdbo_Closeさせるつもりでしょうか


返信引用
ebimayo
 ebimayo
(@ebimayo)
ゲスト
結合: 19年前
投稿: 40
 

と、すいません 大事な質問に対して答えてなかったです。

エラーの内容についてはそのままで、dbo_Openがstatic関数じゃないよ?と
言っているのでエラーを回避するにはdbo_Openをstatic関数にする必要があります。

ただ、メンバ変数にCRecordsetを持ち同じクラス内にdbo_Closeを用意している
ようなので、Dboクラスのインスタンスを作成しそのメンバにたいして
アクセスする書き方をすればよいのではないでしょうか?


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 23年前
投稿: 1235
 

>Dbo::dbo_Open(sqlsort);
 を
Dbo m_Dbo;
m_Dbo.dbo_Open(sqlsort);

とすれば、いいんですよね。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

うーむ、MFCの問題と言うよりもC++言語レベルの問題な気がしますね。
static関数で無い関数をクラス外から呼び出すのにインスタンス無しで
呼び出す事はできません。これは別にMFCがどうこうと言う問題でありません。

C++言語の知識が無いのであれば、MFCの使い方を勉強する前に
C++言語の勉強をしないとたぶん難しいと思います。
MFCはC++言語の知識がきちんとある事が前提になります。
同時に勉強できないとは言いませんが、茨の道だと思いますよ。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました