下面的代码来自winforms应用程序,该应用程序在按钮事件上打开业务对象6.5的实例,刷新报表,然后将报表中的数据转储到csv文件中,然后退出业务对象实例。
我第一次运行代码时,它运行得很好,但是如果我再次运行它,我就会得到一个异常
boApp.LoginAs(userName, Password, false, null);抛出的异常是“Invalid Object”。
我假设这是由于boApp没有被重新初始化的事实,我缺乏关于静态类的知识才是问题所在。
调用方法如下:
BO_Control.RefreshBusinessObjects(boReportsFolder, boExportsFolder, boReportName, exportFileName, startDate, endDate);这是BO_Control类
static class BO_Control
{
static busobj.Application boApp = new busobj.Application();
static busobj.Document testDoc;
public static void RefreshBusinessObjects(string reportFolder, string exportFolder ,string boReportName, string exportFileName, string startDate, string endDate)
{
DateTime BoStart = DateTime.Now;
boApp.LoginAs(userName, Password, false, null);
boApp.Interactive = false;
boApp.Visible = false;
GetData(reportFolder, boReportName, startDate, endDate);
ExportData(exportFolder, exportFileName);
Console.WriteLine("BO_Export took {0} seconds.", DateTime.Now.Subtract(BoStart));
boApp.Quit();
}
static busobj.Document GetData(string reportFolder, string reportName, string startDate, string endDate)
{
Console.WriteLine(reportFolder + reportName);
testDoc = (busobj.Document)boApp.Documents.Open(reportFolder + reportName, true, false, null, null);
//Report Start Date
testDoc.Variables[1].Value = startDate;
//Report End Date
testDoc.Variables[2].Value = endDate;
//Area. Needs to be a semi-colon delimited string
testDoc.Variables[3].Value = "L;B;H;";
testDoc.Refresh();
return testDoc;
}
static void ExportData(string exportFolder, string exportFileName)
{
testDoc.Reports.get_Item(1).ExportAsText(exportFolder + exportFileName);
//2 = DoNotSaveChanges
testDoc.Close(2);
}
}发布于 2010-11-18 22:58:33
我将BOApp的实例化移到了RefreshBusinessObjects方法中,似乎做到了这一点
发布于 2014-03-24 10:57:26
我也使用这个登录代码,它可以工作,但它需要单击BO登录诊断日志的OK按钮。有没有一些方法可以跳过这个点击按钮的步骤?
https://stackoverflow.com/questions/4215788
复制相似问题