Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

list of failed reports in BO XI

Status
Not open for further replies.
Nov 20, 2006
15
US
We're moving from Crystal Enterprise 10 to Business Objects XI and I need a report that lists the reports on BO XI that failed the previous day.

In Crystal Enterprise 10, this was done using the CE10 database and APS_InfoObjects table. Unfortunately, the object name field in the BOE11 database is stored as varbinary. Not only is it stored as varbinary, it's encoded really strangely, and doesn't differentiate between lower case and upper case characters.

For example, a report named:

AaAaAaAaAaA.rpt

is stored as:

2A2A2A2A2A2A2A2A2A2A2A2143467B4C44850213C4E

which converts into ASCII as:

***********!CF{LHP!<N

Does anyone know where the real object names that will make sense in a report are stored?
 
TripperDay:

Perhaps I do not understand your question correctly, but in Crystal Enterprise 10, I use the "Instance Manager" on the CE Admin Lauchpad (Web-Based) to look at a listing of reports that failed. I just filter the list to only show "Failed" status.

I am not sure that this exists in Crystal XI.

Regards,


Mike
______________________________________________________________
[banghead] "It Seems All My Problems Exist Between Keyboard and Chair"
 
Mike, it does exist in the same place. Tripper wants a report though, which doesn't exist and which can't really be created. The BOE11 database is pretty much a black hole and can't really be queried. Earlier versions could.

Tripper, Mike's suggestion is as close as we can get in XI.
 
I disagree with the fact that XI can't get you closer.

If you purchase Enterprise XI , and not CR Server, you get Auditing. Auditing allows you to have certain types of events written to an auditing database, which you can then write reports off of.

Actually, come to think of it, Auditing was avaialable in version 10. It may have been dependnent on the version thouhg. I think you needed at least Professional.

~Brian
 
Hi, The BOE XI Database is certainly queryable ( Just not easily as it is not a
standard relational database object ). Look in the BOE_SDK.chm help file for the Query
language reference.. Look at the INFOOBJECTS
properties/attributes/members/collections to see what you need to query to
obtain that list - remember, the Instance Manager is written to access BOE's
database - if 'it' can query for that, so can you...Not easily, so there are
many 3rd party vendors who have done it for us.



[profile]

To Paraphrase:"The Help you get is proportional to the Help you give.."
 
I think we're blind men feeling an elephant :)

I thought Tripper wanted a Crystal Report or some sort of report object like that which would allow him to see instances of failed reports. While the audit DB does allow you to query it, I believe it only does so through the query builder tool in the CMC and not something you can build a report on using CR or some other tool. With that said, I never tried so I can't say but I wasn't too thrilled with using the CMC query builder so I didn't dig further.

Brian, have you actually queried directly against the BO Audit DB? I had a heck of a time figuring it out. Any pointers would be GREATLY appreciated!
 
Hi,
Not Brian, but this should give you some idea:
Code:
username="<user>"
password="sample123"
cms="CMS"
authType="secEnterprise"
oEnterpriseSessionMgr = CreateObject("CrystalEnterprise.SessionMgr")
oEnterpriseSession = oEnterpriseSessionMgr.Logon(username, password,cms,authType)
InfoStore = oEnterpriseSession.Service("","InfoStore")
Query="Select SI_NAME, SI_ID, SI_DESCRIPTION From CI_INFOOBJECTS Where SI_PROGID='CrystalEnterprise.Report' And SI_INSTANCE=0 AND SI_PARENT_FOLDER=" & fid +	" ORDER BY SI_DESCRIPTION"
res = InfoStore.Query(Query)

This returns information ( Title,ID and description) for all reports in the Folder whose ID is passed to it..

After building a .NET class using that code ( with added code of course),I use this one on an ASP page to produce a selectible list of available reports ( it then sends the select ID to another page for processing..Snippet follows
Code:
Dim Cntr As Integer
Dim Fldr As String
Fldr = Request.QueryString("FLDR")
Dim Rlist As New InfoStore.InfoObjectReportClass(Fldr)
Session("TheReports") = Rlist.GetRpts()
dim dd=New HashTable
For Cntr = 1 To Session("TheReports").Count
  dd.Add(Session("TheReports").Item(Cntr).ID,Session("TheReports").Item(Cntr).Description)
Next  
   reports.DataSource=dd
   reports.DataValueField="Key"
   reports.DataTextField="Value"
   reports.DataBind()
  End If


Have fun...


[profile]

To Paraphrase:"The Help you get is proportional to the Help you give.."
 
Hi,
To complete my posted reply,here is the full source of the Class built to do that query..

Code:
Namespace InfoStore

Public Class InfoObjectReportClass 

Public RptInfo As Object
Public FldrInfo As Object

Public Sub New(ByVal fid As String)
Dim reportPars As Object
Dim oEnterpriseSessionMgr As Object
Dim oEnterpriseSession As Object
Dim InfoStore As Object
Dim res As Object
Dim username As String
Dim password As String
Dim cms As String
Dim authType As String
Dim Query As String


'Dim OraConn As New OracleConnection
username="<user>"
password="sample123"
cms="CMS"
authType="secEnterprise"

oEnterpriseSessionMgr = CreateObject("CrystalEnterprise.SessionMgr")
oEnterpriseSession = oEnterpriseSessionMgr.Logon(username, password,cms,authType)
InfoStore = oEnterpriseSession.Service("","InfoStore")
Query="Select SI_NAME, SI_ID, SI_DESCRIPTION From CI_INFOOBJECTS Where SI_PROGID='CrystalEnterprise.Report' And SI_INSTANCE=0 AND SI_PARENT_FOLDER=" & fid +	" ORDER BY SI_DESCRIPTION"
res = InfoStore.Query(Query)

RptInfo = res
End Sub

Public Function GetRpts() As Object
            Return RptInfo
        End Function        

End Class

If you use .NET this will be very useful - at least it is for us when we build custom interfaces for our users.
(They hate InfoView)..

[profile]

To Paraphrase:"The Help you get is proportional to the Help you give.."
 
The auditing functionality in BO XI is only available if you have a Premium license, not if you have the Professional license that only gives you access to Crystal.

However, it's fairly easy to use the .NET SDK to load information into a dataset that can be used in a Crystal report - I've done something similar to do user audits. To get just the failed instances, the InfoStore query would look something like this:
Code:
Select SI_ID, SI_Name
from CI_INFOOBJECTS
where SI_SI_INSTANCE_OBJECT=1
  and SI_SCHEDULE_STATUS=3
  and SI_UPDATE_TS>='<date>'
For a query like this, you need to convert the date to a UTC format for the query to use it correctly. There are a couple of ways to do this.

Using just the .NET framework you can do something like this:
Code:
(compareDate.ToUniversalTime()).ToString("yyyy.MM.dd.hh.mm.ss")

Using the SDK, reference and use CrystalDecisions.Enterprise.Utils.UtcConverter. You can then do something like this:
Code:
ConvertToUTC(compareDate, ceTimeZoneEastern);

-Dell

A computer only does what you actually told it to do - not what you thought you told it to do.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top