わかりました、私は何年もコーディングしていないライブラリについてのこの質問で私の仕事をデートしています... Roguewave の DBTools++ を使用して Visual Studio 6.0 C++ で書かれた 1990 年代後半から生産されているコードがあります。
突然、特定のケースでクエリが失敗し、RWDBStatus がエラー コード 9 を示し、メッセージは [ENDOFFETCH} フェッチの終了です。以下のクエリを適切なキーで実行しようとすると、この奇妙なエラーが発生します。注-最初のクエリが値を返した場合にのみ実行されるため、失敗したのは2番目のクエリのようですが、どのクエリが失敗しているかをより具体的にするようにコードを変更します...
それで、私の質問は、このコンテキストで「フェッチの終わり」が何を意味するのか知っている人はいますか? 現在、これを探す場所がわかりません...エラーメッセージは次のとおりです。コードは以下のとおりです...
06/04/2014 16:00:40 FindSignature() - failed to execute!
06/04/2014 16:00:40 ErrorCode = 9,ErrorMsg = [ENDOFFETCH] End of Fetch
06/04/2014 16:00:40 VendCode1 = 0,VendCode2 = 0
06/04/2014 16:00:40 VendMsg1 = ,VendMsg2 =
これが私のコードです:
bool result = false;
RWDBTable tblRMSUsers = m_RMSDatabase.table( "RMSUsers" );
RWDBSelector selRecord = m_RMSDatabase.selector();
selRecord << tblRMSUsers["ExternalKey"];
selRecord.where( tblRMSUsers["InternalKey"] == lLinkToUser );
RWDBReader rdrRecord = selRecord.reader(theConnection);
if( rdrRecord() )
{
RWCString s;
rdrRecord >> s;
// Changed to use view_SwitchUsers2 which includes deleted / inactive users...
RWDBTable tblSwitchUsers = m_RMSDatabase.table( "view_SwitchUsers2" );
RWDBSelector selRecord = m_RMSDatabase.selector();
selRecord << tblSwitchUsers ["Signature"];
selRecord.where( tblSwitchUsers ["SID"] == s );
RWDBReader rdrRecord1 = selRecord.reader(theConnection);
if(rdrRecord1 ())
{
rdrRecord1 >> blob;
result = true;
}
else
{
RWDBStatus theStatus = rdrRecord1.status();
TraceStr("FindSignature() - failed to execute!");
TraceStr("ErrorCode = %d,ErrorMsg = %s ", theStatus.errorCode(), theStatus.message() );
TraceStr("VendCode1 = %d,VendCode2 = %d ", theStatus.vendorError1(), theStatus.vendorError2() );
TraceStr("VendMsg1 = %s,VendMsg2 = %s ", theStatus.vendorMessage1(), theStatus.vendorMessage2() );
return false;
}
}
どんな洞察も大歓迎です!