Hej, <b>>Hur vet GetAllErrorInfo() vilken text den ska hämta?</b>Identifiering av felkoder i OLE DB med C++
Sitter och försöker klura ut hur jag får reda på att ett speciellt fel har inträffat när jag hämtar data från en SQL Server.
Som det är nu kan jag få ett felmeddelande om att nästlingen av stored procedures och funktioner överstigt gränsen.
Detta felmeddelande är OK med mig, eftersom jag vet vad det betyder, men det vet inte mina användare, så jag skulle vilja skriva om det så att det blir ett meddelande så de förstår vad de gjort för fel.
Har här bifogat min funktion som visar felmeddelandet från SQL Servern.
Jag kan inte lista ut vad det är jag ska använda för att identifiera att det är just detta fel som inträffat.
Jag var inne på att använda det första HRESULT som jag fick(DB_E_ERRORS_IN_COMMAND), men det används ju till andra fel också.
Hur vet GetAllErrorInfo() vilken text den ska hämta?
Tacksam för hjälp
/Markus
void DisplayOLEDBErrorRecords(HRESULT hrErr) {
CDBErrorInfo ErrorInfo;
ULONG cRecords;
HRESULT hr;
ULONG i;
CComBSTR bstrDesc, bstrHelpFile, bstrSource;
GUID guid;
DWORD dwHelpContext;
WCHAR wszGuid[40];
USES_CONVERSION;
LCID lcLocale = GetSystemDefaultLCID();
hr = ErrorInfo.GetErrorRecords(&cRecords);
if (FAILED(hr) && ErrorInfo.m_spErrorInfo == NULL) {
OLEDBErrorMessageBox( "No OLE DB Error Information found: hr = 0x%x\n", hr);
return;
}
for (i = 0; i < cRecords; i++) {
hr = ErrorInfo.GetAllErrorInfo(i, lcLocale, &bstrDesc, &bstrSource, &guid, &dwHelpContext, &bstrHelpFile);
if (FAILED(hr)) {
OLEDBErrorMessageBox("OLE DB Error Record dump retrieval failed: hr = 0x%x\n", hr);
return;
}
StringFromGUID2(guid, wszGuid, sizeof(wszGuid) / sizeof(WCHAR));
ErrorInfo.
OLEDBErrorMessageBox( "%s",OLE2T(bstrDesc));
bstrSource.Empty();
bstrDesc.Empty();
bstrHelpFile.Empty();
}
}Sv: Identifiering av felkoder i OLE DB med C++
När ett fel uppstår lagras antaligen ett felmeddelande någonstans som sedan kan hämtas av GetAllErrorInfo.
Varför inte skriva ut felmeddelandet som GetAllErrorInfo ger?
/Peter