IGlobalErrors Interface

Provides read-only access to the old error handling mechanism in the API.
Public Interface IGlobalErrors
This language is not supported or no code example is available.
public interface IGlobalErrors
This language is not supported or no code example is available.
Name Description
Public property GlobalErrorMessage Gets the text of the first global error if any.
Public property GlobalErrorNumber Gets the number of the first global error if any.
Public property MessageStack Gets the global stack with messages collected during the session. These messages almost always represent errors.
Top
Remarks
 

Most methods in the API use structured error handling and throw standard .NET exceptions when errors are encountered, mostly QdvApiException.

But for historical reasons and for backward compatibility with old macros, some methods in the API don't throw exceptions when an error is encountered. Instead, some of them set a global error message. This allows to report just one (first) error. So some methods use so called message stack, to store all encountered errors there. These global error messages are automatically displayed by QDV after a macro has finished.

This interface allows to read this error info programmatically. You can get it from IQdvEnvironment.GlobalErrors property. In macros, it's accessible from the Context parameter:

 Context.QdvManager.Environment.GlobalErrors
 					

Example
 

The following example shows, how to correctly handle errors from IAnalyticReporting.GetDataSource method which uses the old error handling.

' get the data source workbook
 Dim aTools As IAnalyticReporting = Es.CurrentVersion.GetAnalyticReportingTools()
 Dim fields As List(Of FieldForQdvFldConfigFile) = aTools.GetImageOfFieldsForDataSource("C:\data_source_fields.qdvfldconfig", collapsed)
 Dim dataSourceWorkbook As IWorkbook = aTools.GetDataSource(fields, False)
 
 ' Check the errors, because GetDataSource doesn't throw exceptions.
 If dataSourceWorkbook Is Nothing
     ' an error occurred, get the details
     If Not String.IsNullOrEmpty(Context.QdvManager.Environment.GlobalErrors.GlobalErrorMessage)
         ' The error is reported in GlobalErrorMessage.
         Dim errText As String = Context.QdvManager.Environment.GlobalErrors.GlobalErrorMessage
         MessageBox.Show(errText, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
     ElseIf Context.QdvManager.Environment.GlobalErrors.MessageStack.Count > 0
         ' The error(s) is/are reported in MessageStack, display them all.
         Dim errText As String = ""
         For Each err As String In Context.QdvManager.Environment.GlobalErrors.MessageStack
             errText &= err & vbCrLf
         Next
         MessageBox.Show(errText, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
     Else
         ' no error details
     End If
 End If					
This language is not supported or no code example is available.

IAnalyticReporting aTools = es.CurrentVersion.GetAnalyticReportingTools();
 // Get all available fields for data source and where applicable, set their "All levels" to True.
 IEnumerable<FieldForQdvFldConfigFile> fields = aTools.GetAvailableFieldsForDataSource(useEightLevelsWhereApplicable: true);
 // Now you can customize or remove individual fields, if needed.
 
 // Save the fields configuration into a qdvfldconfig file. This is an optional step.
 bool collapsed = true;
 aTools.SaveFieldsForDataSource(@"C:\test.qdvfldconfig", fields, collapsed);
 
 // Create the data source.
 IWorkbook dataSourceWorkbook = aTools.GetDataSource(new List<FieldForQdvFldConfigFile>(fields), collapsed);
 
 // Check the errors, because GetDataSource doesn't throw exceptions.
 if (dataSourceWorkbook == null)
 {
     // An error occurred, get the details.
     if (!String.IsNullOrEmpty(context.QdvManager.Environment.GlobalErrors.GlobalErrorMessage))
     {
         // The error is reported in GlobalErrorMessage.
         string errText = context.QdvManager.Environment.GlobalErrors.GlobalErrorMessage;
         MessageBox.Show(errText, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
     else if (context.QdvManager.Environment.GlobalErrors.MessageStack.Count > 0)
     {
         // The error(s) is/are reported in MessageStack, display them all.
         string errText = "";
         foreach (string err in context.QdvManager.Environment.GlobalErrors.MessageStack)
         {
             errText += err + "\n";
         }
         MessageBox.Show(errText, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     else
     {
         // No error details.
     }
 }					
This language is not supported or no code example is available.
Version
 
Available since QDV 7.21.885.

.NET Framework

Supported in: 4.8, 4.7, 4.6, 4.5.2

In this article

Definition