VC++のSQL Server 2008 の処理中に、
Debug Assertion failed のエラーが発生します。
落ちている場所は、dbcore.cpp の中です。
デバッグトレースを見る限り、下記ソースの2回目のrs2.Open らしいところまで辿りましたが、
なぜ、2回目のrs2.Open で落ちるかの原因がわかりません。
CString strCon2="DSN=MAC3DB_DS;";
db2.OpenEx( _T( strCon2 ), CDatabase::noOdbcDialog );
CRecordset rs2( &db2 );
while(end_sw==0)
{
try{
rs2.Open( CRecordset::forwardOnly, _T("select * from mac3data where read_flg = 0 order by seq") );
while( !rs2.IsEOF() )
{
for(int index = 0; index <= rs2.GetODBCFieldCount(); index++ ) {
switch(index)
{
case 1 : rs2.GetFieldValue("seq", _T(str_seq));break;
中略
}
中略
rs2.MoveNext();
}
}catch(...){}
}
}
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
アサートが発生した時に、[再試行]ボタンをクリックすれば、該当するソースファイルが表示されます。
ASSERT()の中に記述されている条件が満たされていないので、それを満たすようにしてください。直前に、何を判定するためのアサートかコメントが書かれている場合もあります(英語ですが)
提示されたソースでは、定義されていないものがあるので、細かい内容は判断できません。
_Tマクロの使い方も変だし。
この回答への補足
落ちた場所は、dbcpore.cpp の中の ENSURE(!IsOpen()); で落ちました。
BOOL CRecordset::Open(UINT nOpenType, LPCTSTR lpszSQL, DWORD dwOptions)
{
ENSURE(!IsOpen()); ← ここで落ちた
記述したソースでは、while(end_sw==0)文の2回目のrs2.Openで落ちています。
CString strCon2="DSN=MAC3DB_DS;";
db2.OpenEx( _T( strCon2 ), CDatabase::noOdbcDialog );
CRecordset rs2( &db2 );
while(end_sw==0)
{
try{
rs2.Open( CRecordset::forwardOnly, _T("select * from mac3data where read_flg = 0 order by seq") ); ← 2回目のwhile(end_sw==0)文でのループで落ちた
for(int index = 0; index < rs2.GetODBCFieldCount(); index++ ) {
中略
}
while( !rs2.IsEOF() )
{
中略
rs2.MoveNext();
}
}catch(...){}
}
この処理で実現させたいことは、end_sw が、1 になるまで、select文を何度も実行させることです。end_sw が、1 になれば、db2.Close(); させます。
1回目のselect文は、複数行の取得でしたが、うまく処理していました。
1回目のselect文の複数行取得後、次のselect文を取得させようとして落ちています。
そもそも、このような書き方はできるのでしょうか?
ネット検索しても事例がなくて。。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- Visual Basic(VBA) 順列をランダムに発生するプログラム 1 2022/11/16 12:16
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- その他(プログラミング・Web制作) python pandas 行ごとに列名(列番号)を指定して抽出したい 1 2023/05/26 13:47
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlのタブの色変更について
-
画像と文字が重なって表示される。
-
「INT86(・・・・・・);」 っ...
-
htmlソース文の 各行 改行位置...
-
HTMLからフォルダを開きたい
-
googleドライブで、PDFファイル...
-
スクロールできない
-
HTMLページが勝手にダウンロー...
-
aタグでワードファイルを開くor...
-
Excelで、社外秘(閲覧のみ)と...
-
2つのページを重ねたい
-
index.htmlファイルはどこに?
-
、URL化させるにはどうしたらい...
-
スタイルシートの暗号化について
-
SSL(https)ファイルを格納す...
-
1つ下の階層のフォルダに相対...
-
pythonのエラーについての質問...
-
WEB上でPDF閲覧のみにしたいです。
-
DreamWeaver文字コードが変更さ...
-
Dreamweaverでページ全体が文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlソース文の 各行 改行位置...
-
VBAで#Regionに変わるものは無...
-
レストラン、英語のメニュー表記
-
Dreamweaverのコードカラーが黒...
-
プログラム時のヘッダコメント...
-
【VC++6.0(MFC)】Access Violat...
-
#ifdef多用でソースが見づらい
-
ソースの追加行数と変更行数
-
画像と文字が重なって表示される。
-
ソースの表示を無効にする方法。
-
JSPの実行結果をHTMLに変換
-
Visual Source Safe?
-
HTMLソースの文字コードがutfの...
-
コメントが閉じてないというエ...
-
「MicrosoftVisualBasic6.0 行...
-
ポップアップを1日1回だけ表示...
-
c言語の改修されたソースから改...
-
htmlのタブの色変更について
-
IEでテキストの文字が一部だけ...
-
DreamWeaver 文字列を含まない...
おすすめ情報