Aşağıdaki kod, bir düğme olayında bir iş nesnesi 6.5'in açıldığı, raporu yenilediği ve rapordaki verileri bir csv dosyasına dökülen bir winforms uygulamasından alınmıştır. ve sonra iş nesneleri örneğini çıkarır. i yeniden çalıştırıldığındaStatik sınıflar ve İş Nesneleri COM Kitaplığı
ben mükemmel çalışıyor kod çalıştırmasına ilk kez ancak ben çizgi
boApp.LoginAs(userName, Password, false, null);
atılan istisna 'Geçersiz nesne' dir üzerinde bir istisna olsun.
Bunun, boApp'ın yeniden başlatılmadığı gerçeğine bağlı olduğunu ve sorunun statik sınıflarla ilgili bilgi eksikliğimin olduğunu varsayıyorum.
çağıran yöntem şudur:
BO_Control.RefreshBusinessObjects(boReportsFolder, boExportsFolder, boReportName, exportFileName, startDate, endDate);
ve bu RefreshBusinessObjects Yöntemi içine BOApp örneğinin taşındı BO_Control sınıf
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);
}
}
Blimey, bu geçmişten bir patlama. Tüm İş nesneleri etkileşimlerini kapatan bu satır ayarlanmalıdır boApp.Interactive = false; Kullanıcı adı ve şifrenin boApp.LoginAs'da (userName, Password, false, null) doğru olduğundan emin misiniz? Yöntem? – MrBliz
Ben kullanıcı adımı ve pwd haklı olduğunu düşünüyorum, pls aşağıdaki link üzerinden kodu görmek ve BO giriş diaglog ok düğmesini tıklarsanız, bo uygulaması her zamanki gibi çalışacaktır [kod için buraya tıklayın] (http: // www.forumtopics.com/busobj/viewtopic.php?t=219784&sid=027f230af85e9b74e8fccff138288724) – user1994358
Keşke size daha fazla yardımcı olabilseydim ama artık test etmek için İşletme nesnelerine 6.5 erişemiyorum. – MrBliz