VC++でCRecordsetのOpenの使い方は?

[戻る]
サッちゃん 2001/10/09(火) 14:03:15
    BOOL bRet;
    CDatabase rDB;
    try{
      bRet = rDB.Open(NULL);

    }
    catch(CDBException* err){
        ::MessageBox(NULL,err->m_strError,"ERROR",MB_OK);
        err->Delete();
    }
    if (!bRet) {
        rDB.Close();
        return ;
    }
    CRecordset rRS(&rDB);
    try{
        bRet = rRS.Open(NULL,"select * from emp");
    }
    catch(CDBException* err){
        ::MessageBox(NULL,err->m_strError,"ERROR",MB_OK);
        err->Delete();
    }
のようにしてるのですがうまくいきません。
どこを直したらよいか教えてください
よろしくおねがいします。

masa 2001/10/10(水) 06:49:57
mfcを使用していますよね、odbc接続ですよね
データベースのオープンをその関数ごとに切り替える必要あるのですか

チャッチされたエラーコードはどんな値ですか
どっちのメッセージボックスでますか
「m_strFilter.Format」を使わない理由ありますか

下のコードで参考になりますか

Doc* pDoc = GetDocument();
Set  oSet  (&pDoc->m_database);

oSet.m_strFilter.Format("COP_ID = %d",m_COP_ID);

if(oSet.Open())    {
  if(!oSet.IsEOF())  {
------------------------------------------
必要な編集、表示などのコード
------------------------------------------
  }
  else{
    MessageBox( "検索対象がありません", "  利用会社  検索処理", MB_OK );
        m_CE_COPID.SetFocus();
      }
}
else{
    MessageBox( "終了", "  利用会社検索 OPEN処理", MB_OK );
}
oSet.Close();

サッちゃん 2001/10/10(水) 11:14:46
返事ありがとうございます。
でもまだいまいちできないのですが
Set ってなんですか???

とりあえずselect * from 表名 といった
SQL文を実行したいのですが

素人同然なのでよろしくお願いします。

サッちゃん 2001/10/10(水) 11:36:54
すいませんかき忘れました。
エラーがでるのは、CRecordset のオープンができていないような気がします。

masa 2001/10/10(水) 12:48:51
setは自分の読み出しテーブルを定義したCrecordsetのことです
OPEN関数ではなくSQLEXECUTEのような関数あったはずですけど
自宅でないのでこんな回答しか出来ません

サッちゃん 2001/10/10(水) 14:03:07
いろいろ、すいません。
試しているのですがデーターベースでのコントロールを
するためには、やはりOpen関数を必要になると思ったんですが
そこでエラーになってしまいます。

まだ今日中にやりたいわけではないので、なるべく詳しくお願いします。

ほんとうにすいません。

masa 2001/10/11(木) 04:54:51
> bRet = rRS.Open(NULL,"select * from emp");
の行に第一引数はNULLを指定できないようですが
MSDNもう一度よく見直してみてはどうでしょうか?

使用例は
 rs.Open( CRecordset::dynaset, _T( "Select L_Name from Customer" ) );
こんなふうになってましたよ

サッちゃん 2001/10/11(木) 13:27:18
[[解決]]
ありがとうございました。なんとかできるようになりました。
まだまだ自分が未熟なのが痛感しました。

これからも、頑張っていきたいです。

古いスレッドには追加発言できません。