• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データセットを選択するダイアグラムが表示される)

データセットを選択するダイアグラムが表示される原因とは?

このQ&Aのポイント
  • 質問文章で述べられた通り、db2.OpenExでの設定にもかかわらず、データセットを選択するダイアグラムが表示されることがあります。
  • 原因は、while文内でのrs2.Close()とdb2.OpenExの順序にあります。最初のrs2.Openで読み込んだデータが処理され終わる前にdb2.OpenExが呼び出されるため、ダイアログが表示されます。
  • 2度目の処理では、rs2.Close()が呼び出され、データセットの選択ダイアグラムが表示されないため、正常に処理されます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>db2.Close(); >db2.OpenEx( _T( strCon2 ), CDatabase::noOdbcDialog ); ←2回目のときに表示される 同じパラメータでオープンするなら、クローズしなければいいだけでは? 前回の質問の原因は、「レコードセットがオープンされた状態で、再びオープンしようとしている」なので、「使い終わったレコードセットをクローズする」が正解のはずです。データベース自体をクローズする必要はありません。 それを理解していないから、whileの中に >CRecordset rs2( &db2 ); なんて記述がでてきちゃうんじゃないでしょうか。 また、前回も指摘しましたが、_Tマクロの使い方が変です。 _Tマクロは、UNICODE使用時に文字列リテラルにLをつけ、それ以外では何もしません。 > _T( strCon2 ) このような使い方は、UNICODE使用時にはエラーになります。

ichigo61
質問者

お礼

rs2.Close(); を入れたら、ダイアログが表示されなくなりました。 db2.Close(); がないと、rs2.Open のところで落ちていたので入れたのですが、そもそも、rs2.Close(); を入れていなかったためだったのでしょうか。 _T(strCon2) は、サイト検索して、そのままコピペして使っていましたが、参考になりました。 ありがとうございます。

関連するQ&A

専門家に質問してみよう