In order to use SQProxy from a .Net application you must use the SQProxyWrapper, SFQWrapper, and interop libraries we have provided. To do so, add references to these libraries to a .Net project: right-click References in the Solution Explorer, choose Add Reference, select the Browse page, and choose the following three files, all located in C:\Program Files\Common Files\Microsoft Shared\VFP:

  • SQProxyWrapper.dll
  • SFQWrapper.dll
  • Interop.sqproxy.dll

Be sure to change the properties for Interop.sqproxy.dll: Embed Interop Types should be false and Copy Local true.

You can then use the wrappers with code like the example below:

using SFQWrapper;
using SQProxyWrapper;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      SQProxy sqProxy = new SQProxy();

      sqProxy.LoadProject(@"C:\Program Files\Stonefield Query SDK\Sample Project");

      // Wait for project to finish loading
      while (!sqProxy.ProjectLoaded)
      {
      }

      System.Console.WriteLine("Project Loaded");

      // Get references to some objects we'll need.
      SFQApplication application = sqProxy.SQApplication;
      ReportEngine reportEngine = application.ReportEngine;

      // Find out how many folders there are.
      System.Console.WriteLine("There are " + 
        reportEngine.GetFolders().Count.ToString() + " folders");

      // Display the folder names.
      foreach(Folder folder in reportEngine.GetFolders())
      {
        System.Console.WriteLine(folder.FolderName);
      }

      // Run a report.
      bool result = reportEngine.RunReportToFile("Customers", 
        "C:\\customers.pdf");

      if (result)
      {
        System.Console.WriteLine("The Customers report was output to PDF.");
      }
      else
      {
        System.Console.WriteLine("The Customers report was not run successfully.");
        System.Console.WriteLine(reportEngine.ErrorMessage);
      }

      System.Console.ReadLine();
    }
  }
}