Consolidate multiple reports in PDF

Hi all,
Using the Share Components > Report Queries/Layout, I am able to customise a report with XSL-FO.
Problem is I need to consolidate 5 such reports into one so when users click a button, they get the whole lot in PDF as opposed to downloading 1 by 1 and consolidate them.
Not sure if this is achievable using just Apex.
I am using Apex Listener 2 as my print engine and my Apex version is 4.2.3

Maybe you could build the 5 report PDF's and merge them with a PDF merge tool??
Thank you,
Tony Miller
LuvMuffin Software
Blog: LuvMuffin Software Blog

Similar Messages

  • Acrobat convert multiple reports to PDF

    Greetings,
    I am currently experiencing a road block and not quite sure the best way to solve it.
    I have Acrobat Professional 9.0 installed on Windows XP.  In conjunction with Microsoft Access 2007 I constantly use the Acrobat Add Ins, which are extremely useful especially the "Convert Multiple Reports" function.  This function works great when converting multiple MS Access reports into one PDF file (with bookmarks ), however I need to make this feature more seamless - using Visual Basic I cannot determine how to convert multiple access reports into one PDF file.  I am hoping someone has a solution to this?  I have thought about using SendKeys to access the Add In function, but this will not suffice since Send Keys do not function with consistency.  Is their a .dll function I can refer to as a reference?
    Any suggestions would be greatly appreciated.
    Thanks in advance,

    Hi Meridith ,
    If possible please share the file with us so that we can check at our end .
    Regards
    Sukrit Dhingra

  • Report Title Displaying in Multiple Lines on PDF Format when i Print in PDF

    Report Title Displaying in Multiple Lines on PDF Format when i tried to print in PDF Format, is there any limit for Report Title Characters
    Displaying Like -
    LRDP
    Open
    Label
    Paradigm
    Forecast
    Report
    Any Info Appreciated
    ~Srix

    Got It .. Just need to chnage the Width Parameter.......!

  • Can I run multiple reports and generate 1 PDF File

    Hi
    I would like to create multiple reports, run them, and generate 1 PDF output. Is this possible?
    Regards,
    Néstor Boscán

    Hello,
    Take a look to the thread :
    Re: How to append pdf (Very Urgent plz)
    Regards

  • Print Multiple Report

    <p>Hi,</p><p> </p><p>I have some questions regarding the printing of multiple reportat one time. Here goes the description:-</p><p> </p><p>Right now, I have jsp page to pass in the required parameter togenerate the brio report in pdf format.If i have 20 reports, I haveto go in every page to pass in the parameter to generate the reportbefore I print it out.</p><p> </p><p>My questions are:-</p><p>1. Is there any way to print 20 report at one go without viewingthem?</p><p>2.20 report use the same parameter but different set ofdata.</p><p>3. There are not similar report but have common parameteronly.</p>

    Hello Vedant,
    <li> Do you already have a report that will accept multiple invoice numbers as input and generate required "Invoice Report" for you?
    <li> If Yes - Are you looking to generate URL based on user check-box selection? If so, please provide sample URL format which will accept multiple invoice numbers.
    <li> If No - I think first you should create such report (I have limited knowledge on Oracle Reports though)
    Regards,
    Hari

  • Error occurred during exporting ssrs report as pdf

    an error occurred during local report processing. Object reference not set to an instance of an object
    Thanks in advance

    Hi Esha2nk,
    According to your description, when you export the report to PDF in BIDS, the error “Export error: An error occurred during local report processing. Object reference not set to an instance of an object.” is thrown out.
    Based on the error message, it could cause by that there are hidden groups within the report, or the matrix has multiple columns and rows, and Hidden is set to true in the Visibility properties. So in your scenario, please check those two factors. If
    issue persists, please provide report design for our analysis. Besides, would you please tell us which SQL Server version you are using?
    Reference:
    "An error occurred during
    local reporting processing. Object reference not set to an instance of an object."
    Object reference not set to an instance of an object
    If you have any question, please feel free to ask.
    Best regards,
    Qiuyun Yu
    Qiuyun Yu
    TechNet Community Support

  • How do I print multiple reports to a directory at the same time

    I'm trying to print a list of monthly reports to a directory by using the code below. The first part of the code runs a query to select Business Units that will receive the reports. The idea is to cycle through this list and print one report for each
    Business Unit.  These vary from month to month. I create a record set from that query.  Where I'm getting stuck is in trying to pass the Business unit selected in the first query to the query that runs the final report. I end up getting multiple
    reports with different titles but the content is the same, so I'm doing something incorrect.  Here is the code.  Any help would be greatly appreciated. QryNewMOR runs the report.
    Private Sub Cmd012815_Click()
        Dim qdf As DAO.QueryDef
        Dim strSQL As String
        Dim strPathName As String
        Dim blRet As Boolean
        Dim rs As DAO.Recordset
        Dim stDocName As String
        Dim strSavedSQL As String
        Dim strBus As String
        Dim strExec As String
        If Me.Dirty Then Me.Dirty = False
        stDocName = "RptNewMOR"
        strSQL = "SELECT [Business Unit Long],[Responsible Executive] FROM tblRespExec WHERE (((tblRespExec.SelectedPrint)=True));"
        Set rs = CurrentDb.OpenRecordset(strSQL)
        If rs.RecordCount < 1 Then
            MsgBox "No Bus lines or Execs selected", vbCritical, "Error"
            Exit Sub
        End If
       'CreateFolder "C:\Test MOR"
        'store the current SQL
        Set qdf = CurrentDb.QueryDefs("QryNewMOR")
        strSavedSQL = qdf.SQL
        qdf.Close
        Set qdf = Nothing
    Do
        strBus = rs![Business Unit Long]
        strExec = rs![Responsible Executive]
        Set qdf = CurrentDb.QueryDefs("QryNewMOR")
       strSQL = strSQL + Left(strSavedSQL, InStr(strSavedSQL, ";") - 1) & " and (qryNewMOR.[Draft Distribution List]=" & rs![Responsible Executive] & ");"
        strSQL = strSavedSQL
        qdf.SQL = strSQL
        Debug.Print strSQL
        qdf.Close
        Set qdf = Nothing
        strPathName = "C:\Test MOR\" & rs![Business Unit Long] & ".pdf"
        DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, strPathName
        rs.MoveNext
    Loop Until rs.EOF
    rs.Close
    Set rs = Nothing
    'restore the SQL
    Set qdf = CurrentDb.QueryDefs("QryNewMOR")
    qdf.SQL = strSavedSQL
    qdf.Close
    Set qdf = Nothing
    End Sub
    Dean J. Waring

    I'm trying to figure out how to combine the two and am obviously not succeeding. Do you have a suggestion on how to make that work?
    Hi Dean,
    I am not completely sure of what you want. I suppose you want to modify the SQL definition of QryNewMOR, and use that modified query for the report?
    In that case, and in the line of your program, I would make a QueryDef: QryStdMOR, with the "standard" strSavedSQL (so: strSavedSQL =  QryStdMOR), construct strSQL in the same way, and assign this to the SQL definition of QryNewMOR.
    Thus, in your code at the very beginning, skip the line strSQL = strSavedSQL.
    strSQL = Left(strSavedSQL, InStr(strSavedSQL, ";") - 1) & " and (qryNewMOR.[Draft Distribution List]=""" & rs![Responsible Executive] & """);"
    ' skip this line: strSQL = strSavedSQL
    qdf.SQL = strSQL
    Within the loop you should not start with strSQL = strSQL & ...., because strSQL will retain then its value from the previous loop, and increases and increases...
    Finally, I have added some double doublequotes around rs![Resposible Executive], because string expressions must be enclosed by double doublequotes (or eventually a single singlequote).
    Imb.
     strSQL = strSQL + Left(strSavedSQL, InStr(strSavedSQL, ";") - 1) & " and (qryNewMOR.[Draft Distribution List]=" & rs![Responsible Executive] & ");"
        strSQL = strSavedSQL
        qdf.SQL = strSQL

  • Multiple Reports inside one Single Report

    Post Author: maximus85
    CA Forum: Crystal Reports
    Hi....I'm having this problem of having multiple reports inside one single report. Basically what i wanted to built is a Dashboard that contains 4 main subjects:i)Sales   -    Contains graph that can be drill down for further detailsii)Internal Process   -  Contains tables that can be drill downiii)Profit/Lossiv)HRAs far as i know, since all four are of different fact table data, they cannot be all thrown inside one single report to be built on. So i came out with using subreports instead for each components and then finally putting them all together as subreport inside the main report(Dashboard).However, i just realized that by doing that, whenever i clicked on the reports that i wanted to drill down with, it will prompt that particular report that i clicked into a new page, and then from there only i can perform drill down.Is there anyway to enable me to straight away drill down the Sales and Internal Process reports from the main reports(Dashboard) instead of having to click twice as that will be unnecessary right?Or mayb if there's another better ways to do what I have to do? Please do advise and suggest......Thanks alot.......

    hi chack,
    doesnt matter or preferrably both, as long as i can export all the reports in 1 page into 1 excel, or 1 pdf.

  • How do you create a macro for Acrobat Convert Multiple Reports action in Microsoft Access

    I have several reports in microsoft access and I've been able to combine them into a single PDF file using the Acrobat Convert Multiple Reports feature. Is there a way to create a macro for this action? I would like to create a time event for this procedure.
    Any help I get on this is greatly appreciated.
    Thanks

    CTPetEng,
    Since this question is not related to CreatePDF, but rather to Acrobat, I'm moving your question to the Acrobat forum.
    Dave

  • Broadcasting multiple reports to one email adress

    Dear All,
    we have the requirement to generate multiple single reports and to broadcast them via PDF. We have everything working but the individual reports are sent to one e-mail adress, so that one e-mail adress can receive multiple emails. We would like to make the setting that multiple reports are combined in one e-mail per e-mail adress.
    Thanks for any help.
    Kind regards
    Marco
    Message was edited by:
            Marco Beckers

    If possible, try to create a Web application designer with all the Queries in it and execute the report.
    Hope this helps!!!

  • Clubbing multiple reports to one output

    Hi,
    Is it possible to club multiple reports output to single output?
    Thanks

    Hi,
    Thanks for your reply.
    What I mean clubbing multiple reports is that, all these reports are independent reports.
    When the user likes to view, he views individual report. When he likes to generate in PDF format for e-mailing or storing, he selects multiple reports and run the report. So that, all the selected reports output should go to one PDF (not to individual PDF).
    At one place, we did it through by generating a postscript of each individual report output and clubbed into one PDF. But, it doesn’t suits to our current requirement.
    Is it possible? Is anybody tried doing it? Please share your ideas and comments.
    We use Report Builder 6.0.8.8.3 under Windows 2000 environment.
    The whole issue is, after we upgrade our Windows NT to W2K, most of the time, when we invoke reports from Forms, it hangs. Is anybody faced this problem? Any solutions?
    Thanks

  • RrRenderingError - Error while exporting report to PDF

    Hi,
    I am getting an error while exporting SSRS 2000 report to PDF. The error message is as shown below. This is report actually by sales rep and it is working fine with all the sales rep but when i try with one sales rep  i get this error.
    Error
    Exception of type Microsoft.ReportingServices.ReportRendering.ReportRenderingException was thrown. (rrRenderingError) Get Online Help
    Exception of type Microsoft.ReportingServices.ReportRendering.ReportRenderingException was thrown.
    Object reference not set to an instance of an object.
    Please somebody help me out.
    Thanks
    Cheers
    Gigi
    cheri

    Cherian K,
    A message that indicates that the object reference is not set to an instance of the object is typically caused by one or more of the following reasons:
    There are soft page breaks within empty lists in the report.
    There are hidden groups within the report and you tried to export it to PDF.
    The report has a link to a subreport that is not published on the report server and you tried to export it to CSV.
    There are text boxes with a width and/or height of zero in the report.
    A text box is either hidden or the NoRows property is set to true.
    A text box spans table cells where some cells have a collection of null values.
    The report has static columns and/or rows and, in the Visibility properties, Hidden is set to true.
    The report has static columns and/or rows and there are grand totals in the report.
    The report has static column headings and, in the Visibility properties, Hidden is set to true.
    The matrix report has multiple columns and rows and, in the Visibility properties, Hidden is set to true and
    you tried to export to PDF or TIFF.
    Regards
    Shiv

  • Dynamic CRM 2013 Online how to execute Report, generate PDF and email

    Dear All,
    I am using Dynamic CRM 2013 online. For quote, I have workflow and Dialogue processes for review process. On approval, I want the system to generate a PDF of quote report, attach the PDF and email it to the Customer.
    Better I would like, When approver, clicks on the approve button, the system should auto generate a PDF of quote report, attach the PDF and email it to the Customer, without any further input from the user. If its not possible, I may have to put button on
    quote form.
    I am using the attached code, but facing various issues.
    1. Under prepare the SOAP Message coding part, I am not sure what should be the below URL for CRM 2013 Online?
    xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    2. What should be the emailid here? Is it Recepient Contact id(Guid) ?
    var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
    alert("emailid" + emailid.toString());
    3. Using this code, not able to create Entity for "ActivityMimeAttachment", I am getting newEntity as undefined.
    Below is the code I am using. Please check and help me out, where I am going wrong. Let me know if any better way to implement it. At present, I have put one button on quote form, on click event, below code will get executed.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script type="text/javascript">
    var Xrm;
    if (window.opener) { Xrm = window.opener.Xrm; }
    else if (window.parent) { Xrm = window.parent.Xrm; }
    function getReportingSession() {
    var reportName = "Quotation_Report"; //set this to the report you are trying to download
    var reportId = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
    var recordid = Xrm.Page.data.entity.getId();
    // recordid = recordid.substring(1, 37); //getting rid of curly brackets
    alert(recordid);
    var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
    var retrieveEntityReq = new XMLHttpRequest();
    retrieveEntityReq.open("POST", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    retrieveEntityReq.send("id=%7B" + reportId + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false");
    var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
    var ret = new Array();
    ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
    x = retrieveEntityReq.responseText.indexOf("ControlID=");
    ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
    return ret;
    function createEntity(ent, entName, upd) {
    var jsonEntity = JSON.stringify(ent);
    var createEntityReq = new XMLHttpRequest();
    var ODataPath = Xrm.Page.context.getServerUrl() + "XRMServices/2011/OrganizationData.svc";
    createEntityReq.open("POST", ODataPath + "/" + entName + "Set" + upd, false);
    createEntityReq.setRequestHeader("Accept", "application/json");
    createEntityReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    createEntityReq.send(jsonEntity);
    var newEntity = JSON.parse(createEntityReq.responseText).d;
    alert("new entity" + newEntity);
    return newEntity;
    function createAttachment() {
    var params = getReportingSession();
    var recordid = Xrm.Page.data.entity.getId();
    alert("recordid " + recordid);
    var orgName = Xrm.Page.context.getOrgUniqueName();
    var userID = Xrm.Page.context.getUserId();
    //create email record
    // Prepare the SOAP message.
    var xml = "<?xml version='1.0' encoding='utf-8'?>" +"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +
    " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +
    " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
    "<soap:Header>" +
    "</soap:Header>" +
    "<soap:Body>" +
    "<Create xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
    "<entity xsi:type='email'>" +
    "<regardingobjectid type='quote'>" + recordid + "</regardingobjectid>" +
    "<subject>" + "Email with Attachment4" + "</subject>" +
    "</entity>" +
    "</Create>" +
    "</soap:Body>" +
    "</soap:Envelope>";
    // Prepare the xmlHttpObject and send the request.
    var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
    xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Create");
    xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xHReq.setRequestHeader("Content-Length", xml.length);
    xHReq.send(xml);
    // Capture the result
    var resultXml = xHReq.responseXML;
    // alert("resultXml " + resultXml);
    // Check for errors.
    var errorCount = resultXml.selectNodes('//error').length;
    if (errorCount != 0) {
    alert("ERROR");
    var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
    alert(msg);
    var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
    alert("emailid" + emailid.toString());
    //var emailid = userID;
    var post = Object();
    post.Body = encodePdf(params);
    var email = new Array();
    email[0] =new Object();
    email[0].id = emailid;
    email[0].entityType ='email';
    post.Subject ="File Attachment";
    post.AttachmentNumber = 1;
    post.FileName ="Report.pdf";
    post.MimeType ="application/pdf";
    post.ObjectId = Object();
    post.ObjectId.LogicalName ="email";
    post.ObjectId.Id = email[0].id;
    post.ObjectTypeCode ="email";
    alert(post.ObjectId.Id);
    createEntity(post,"ActivityMimeAttachment", "");
    alert("created successfully");
    email.Subject = "Your Order";
    //Set The current order as the Regarding object
    email.RegardingObjectId = {
    Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
    //Create Email Activity
    SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
    // Email Call Back function
    function EmailCallBack(result) {
    email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
    var activityPartyFrom = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyFrom.PartyId = {
    Id: customerId, // id of entity you want to associate this activity with.
    LogicalName: "contact"
    // Set the "activity" of the ActivityParty
    activityPartyFrom.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
    // Create the from ActivityParty for the email
    SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
    var activityPartyTo = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyTo.PartyId = {
    Id: ownerId, // id of entity you want to associate this activity with.
    LogicalName: "systemuser"
    // Set the "activity" of the ActivityParty
    activityPartyTo.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity). activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
    // Create the from ActivityParty
    SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
    //ActivityParty From Callback
    function ActivityPartyFromCallBack(result) {
    //ActivityParty To Callback
    function ActivityPartyToCallBack(result) {
    var StringMaker = function () {
    this.parts = [];
    this.length = 0;
    this.append = function (s) {
    this.parts.push(s);
    this.length += s.length;
    this.prepend = function (s) {
    this.parts.unshift(s);
    this.length += s.length;
    this.toString = function () {
    return this.parts.join('');
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function encode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    while (i < input.length) {
    chr1 = input[i++];
    chr2 = input[i++];
    chr3 = input[i++];
    enc1 = chr1 >> 2;
    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
    enc4 = chr3 & 63;
    if (isNaN(chr2)) {
    enc3 = enc4 = 64;
    else if (isNaN(chr3)) {
    enc4 = 64;
    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
    return output.toString();
    var bdy = new Array();
    var bdyLen = 0;
    function concat2Bdy(x) {
    bdy[bdyLen] = x;
    bdyLen++;
    function encodePdf(params) {
    bdy = new Array();
    bdyLen = 0;
    var retrieveEntityReq = new XMLHttpRequest();
    var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] + "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] + "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
    retrieveEntityReq.open("GET", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.send();
    BinaryToArray(retrieveEntityReq.responseBody);
    return encode64(bdy);
    </SCRIPT>
    <SCRIPT type=text/vbscript>
    Function BinaryToArray(Binary)
    Dim i
    ReDim byteArray(LenB(Binary))
    For i = 1 To LenB(Binary)
    byteArray(i-1) = AscB(MidB(Binary, i, 1))
    concat2Bdy(AscB(MidB(Binary, i, 1)))
    Next
    BinaryToArray = byteArray
    End Function
    </SCRIPT>
    </head>
    <body>
    <input type="button" onclick="createAttachment();" value="Attach Report" />
    </body>
    </html>
    Thanks. and waiting for your valuable comments.
    - Mittal

    Hello,
    Yes, I was able to make my code working as below. Tested on CRM online 2013.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    <script type="text/javascript">
    if (typeof (SDK) == "undefined")
    { SDK = { __namespace: true }; }
    SDK.JScriptRESTDataOperations = {
    _context: function () {
    if (typeof GetGlobalContext != "undefined")
    { return GetGlobalContext(); }
    else {
    if (typeof Xrm != "undefined") {
    return Xrm.Page.context;
    else { return new Error("Context is not available."); }
    _getServerUrl: function () {
    var serverUrl = this._context().getServerUrl()
    if (serverUrl.match(/\/$/)) {
    serverUrl = serverUrl.substring(0, serverUrl.length - 1);
    return serverUrl;
    _ODataPath: function () {
    return this._getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
    _errorHandler: function (req) {
    return new Error("Error : " +
    req.status + ": " +
    req.statusText + ": " +
    JSON.parse(req.responseText).error.message.value);
    _dateReviver: function (key, value) {
    var a;
    if (typeof value === 'string') {
    a = /Date\(([-+]?\d+)\)/.exec(value);
    if (a) {
    return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
    return value;
    Create: function (object, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 201) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send(JSON.stringify(object));
    Retrieve: function (id, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("GET", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 200) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    Update: function (id, object, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("X-HTTP-Method", "MERGE");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 204 || this.status == 1223) {
    successCallback();
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send(JSON.stringify(object));
    Delete: function (id, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("X-HTTP-Method", "DELETE");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 204 || this.status == 1223) {
    successCallback();
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    RetrieveMultiple: function (type, filter, successCallback, errorCallback) {
    if (filter != null) {
    filter = "?" + filter;
    else { filter = ""; }
    var req = new XMLHttpRequest();
    req.open("GET", this._ODataPath() + type + "Set" + filter, true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 200) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d.results);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    __namespace: true
    </script>
    <script type="text/javascript">
    //Create Email and link it with Order as Regarding field
    var Xrm;
    var email = new Object();
    var ownerID = "";
    var CustomerId = "";
    if (window.opener) { Xrm = window.opener.Xrm; }
    else if (window.parent) { Xrm = window.parent.Xrm; }
    //Get ownerid who send email of quotation to customer
    function GetOwnerID() {
    var owner = Xrm.Page.getAttribute("ownerid").getValue();
    ownerID = owner[0].id;
    var ownerName = owner[0].name;
    var entityType = owner[0].entityType;
    GetToEmailGUID();
    //Get customerid who receive email of quotation from owner
    function GetToEmailGUID() {
    var Customer = Xrm.Page.getAttribute('customerid').getValue();
    CustomerId = Customer[0].id;
    var CustomerName = Customer[0].name;
    var entityType = Customer[0].entityType;
    //if CustomerId is type of "Account" then get Primary Contact id of that account
    if (entityType == "account") {
    var contact = Xrm.Page.getAttribute("customerid").getValue();
    if (contact === null) return;
    var serverUrl = Xrm.Page.context.getClientUrl();
    var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" + contact[0].id + "')?$select=PrimaryContactId";
    var req = new XMLHttpRequest();
    req.open("GET", oDataSelect, false);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json;charset=utf-8");
    req.onreadystatechange = function () {
    if (req.readyState === 4) {
    if (req.status === 200) {
    var retrieved = JSON.parse(req.responseText).d;
    CustomerId = retrieved.PrimaryContactId.Id;
    else {
    alert(this.statusText);
    req.send();
    function CreateEmail() {
    GetOwnerID();
    email.Subject = "Email with Report Attachment";
    //Set The current order as the Regarding object
    email.RegardingObjectId = {
    Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
    //Create Email Activity
    SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
    // Email Call Back function
    function EmailCallBack(result) {
    email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
    var activityPartyFrom = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyFrom.PartyId = {
    Id: CustomerId, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
    LogicalName: "contact"
    // Set the "activity" of the ActivityParty
    activityPartyFrom.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
    // Create the from ActivityParty for the email
    SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
    var activityPartyTo = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyTo.PartyId = {
    Id: ownerID, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
    LogicalName: "systemuser"
    // Set the "activity" of the ActivityParty
    activityPartyTo.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
    // Create the from ActivityParty
    SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
    //ActivityParty From Callback
    function ActivityPartyFromCallBack(result) {
    //ActivityParty To Callback
    function ActivityPartyToCallBack(result) {
    GetReportId('Quotation');
    //Create attachment for the created email
    function CreateEmailAttachment() {
    //get reporting session and use the params to convert a report in PDF
    var params = getReportingSession();
    //Email attachment parameters
    var activitymimeattachment = Object();
    activitymimeattachment.ObjectId = Object();
    activitymimeattachment.ObjectId.LogicalName = "email";
    activitymimeattachment.ObjectId.Id = email.ActivityId;
    activitymimeattachment.ObjectTypeCode = "email",
    activitymimeattachment.Subject = "File Attachment";
    activitymimeattachment.Body = encodePdf(params);
    activitymimeattachment.FileName = "Report.pdf";
    activitymimeattachment.MimeType = "application/pdf";
    //Attachment call
    SDK.JScriptRESTDataOperations.Create(activitymimeattachment, "ActivityMimeAttachment", ActivityMimeAttachmentCallBack, function (error) { alert(error.message); });
    //ActivityMimeAttachment CallBack function
    function ActivityMimeAttachmentCallBack(result) {
    var features = "location=no,menubar=no,status=no,toolbar=no,resizable=yes";
    var width = "800px";
    var height = "600px";
    window.open(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", features);
    // To open window which works in outlook and IE both
    //openStdWin(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", width, height, features);
    //This method will get the reportId based on a report name that will be used in getReportingSession() function
    function GetReportId(reportName) {
    var oDataSetName = "ReportSet";
    var columns = "ReportId";
    var filter = "Name eq '" + reportName + "'";
    retrieveMultiple(oDataSetName, columns, filter, onSuccess);
    function retrieveMultiple(odataSetName, select, filter, successCallback) {
    var serverUrl = Xrm.Page.context.getServerUrl();
    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
    var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";
    if (select) {
    odataUri += "$select=" + select + "&";
    if (filter) {
    odataUri += "$filter=" + filter;
    $.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    url: odataUri,
    beforeSend: function (XMLHttpRequest) {
    XMLHttpRequest.setRequestHeader("Accept", "application/json");
    success: function (data) {
    if (successCallback) {
    if (data && data.d && data.d.results) {
    successCallback(data.d.results);
    else if (data && data.d) {
    successCallback(data.d);
    else {
    successCallback(data);
    error: function (XmlHttpRequest, errorThrown) {
    if (XmlHttpRequest && XmlHttpRequest.responseText) {
    alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
    function onSuccess(data) {
    reportId = data[0].ReportId.replace('{', ").replace('}', ");
    CreateEmailAttachment(); // Create Email Attachment
    //Gets the report contents
    function getReportingSession() {
    var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
    var retrieveEntityReq = new XMLHttpRequest();
    var Id = Xrm.Page.data.entity.getId();
    var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
    quotationGUID = quotationGUID.replace('}', "");
    var reportName = "Quotation"; //set this to the report you are trying to download
    var reportID = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
    var rptPathString = ""; //set this to the CRMF_Filtered parameter
    var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
    retrieveEntityReq.open("POST", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" +
    reportName + "&isScheduledReport=false&p:CRMAF_Filteredquote=" + strParameterXML;
    //remove the part starting from &p:salesorderid if your report has no parameters
    retrieveEntityReq.send(rptPathString);
    var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
    var ret = new Array();
    ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
    x = retrieveEntityReq.responseText.indexOf("ControlID=");
    ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
    return ret;
    var bdy = new Array();
    var bdyLen = 0;
    function concat2Bdy(x) {
    bdy[bdyLen] = x;
    bdyLen++;
    function encodePdf(params) {
    bdy = new Array();
    bdyLen = 0;
    var retrieveEntityReq = new XMLHttpRequest();
    var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] +
    "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] +
    "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
    retrieveEntityReq.open("GET", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.send();
    BinaryToArray(retrieveEntityReq.responseBody);
    return encode64(bdy);
    var StringMaker = function () {
    this.parts = [];
    this.length = 0;
    this.append = function (s) {
    this.parts.push(s);
    this.length += s.length;
    this.prepend = function (s) {
    this.parts.unshift(s);
    this.length += s.length;
    this.toString = function () {
    return this.parts.join('');
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function encode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    while (i < input.length) {
    chr1 = input[i++];
    chr2 = input[i++];
    chr3 = input[i++];
    enc1 = chr1 >> 2;
    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
    enc4 = chr3 & 63;
    if (isNaN(chr2)) {
    enc3 = enc4 = 64;
    } else if (isNaN(chr3)) {
    enc4 = 64;
    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
    return output.toString();
    </script>
    <script type="text/vbscript">
    Function BinaryToArray(Binary)
    Dim i
    ReDim byteArray(LenB(Binary))
    For i = 1 To LenB(Binary)
    byteArray(i-1) = AscB(MidB(Binary, i, 1))
    concat2Bdy(AscB(MidB(Binary, i, 1)))
    Next
    BinaryToArray = byteArray
    End Function
    </script>
    </head>
    <body>
    <input type="button" onclick="CreateEmail();" value="Attach Report" />
    </body>
    </html>
    Thank you,
    Mittal.

  • Exporting a Report to PDF

    Post Author: helfrich
    CA Forum: Crystal Reports
    I am re-writing a VB6 app to VB.NET 2005.  I have a viewer control that I use to display the reports in when I want to preview the report on the screen.  The VB6 app can also automatically export reports to PDF format silently (no user input or screen output).  I would like to do the same in VB.NET.  In the VB6 app, I simply set the viewer control's ExportOptions.PDFExportAllPages = True (I also set the DiskFileName FormatType, and DestinationType parameters).  I then display the form containing the viewer with the .Hide parameter.  This exports the report without displaying the report on the screen.  I have not been able to find any information that allows me to do the same thing in .NET with Crystal Reports XI.
    I have tried creating a ReportDocument object, but when I execute .Export(), I get a "Missing parameter values" error - absolutely no other information.
    For example:
    Dim crExportOptions As New ExportOptions
    Dim crDiskFileDestinationOptions As New DiskFileDestinationOptions()
    Dim crFormatTypeOptions As New PdfRtfWordFormatOptions()
    Dim crReport As New ReportDocument
    crDiskFileDestinationOptions.DiskFileName = "C:\Test.PDF"
    crExportOptions.ExportFormatOptions = crFormatTypeOptions
    crExportOptions.ExportDestinationType = ExportDestiniationType.DiskFile
    crExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
    crExportOptions.ExportDestinationOptions = crDiskFileDestinationOptions
    crReport.Load("C:\Test.rpt")
    crReport.Export(crExportOptions)
    This is where the error occurs.
    I also tried setting Viewer.Visible = False followed by Viewer.ExportReport().  The viewer does not display, but this prompts for the export filename.  The whole idea is for the export to be completely invisible to the user.
    I don't care which solution I use:
    1.  How can I get rid of the "Missing parameter values" error using the ReportDocument
    or
    2. Is there a way I can use .ExportReport(), but preset the export filename so there is not prompt?
    TIA for any help anyone can offer.

    Post Author: jennm
    CA Forum: Crystal Reports
    Here's a snippet of code from one of my recent projects that should offer some help.
            Dim crOrderPrintout As CrystalDecisions.CrystalReports.Engine.ReportDocument = New rptPublicOrder
      u2018clear the dataset, give it the appropriate parameters and fill the data adapter
            Me.dsReceiptDetails.Clear()
            Me.SqlSelectReceiptDetails.Parameters.Item("@ReceiptID").Value = sReceiptID
            Me.daReceiptDetails.Fill(Me.dsReceiptDetails)
            u2018set the data source and paper size for the report
            crOrderPrintout.SetDataSource(Me.dsReceiptDetails.Tables(0))
            crOrderPrintout.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperLetter
      u2018These are the printing options, Printer, File or Viewer
            Select Case My.Settings.PrintType
                Case "Printer"
                    crOrderPrintout.PrintToPrinter(1, False, 0, 0)
                Case "Viewer"
                    Dim frmReportViewer As New frmReportViewer
                    frmReportViewer.CrystalReportViewer1.ReportSource = crOrderPrintout
                    frmReportViewer.ShowDialog()
                Case "File"
                    crOrderPrintout.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, "C:\test.pdf")
                Case Else
                    crOrderPrintout.PrintToPrinter(1, False, 0, 0)
            End Select
      u2018close the report
            crOrderPrintout.Close()
    The file option will print directly to a file without prompting the user.  As for the missing parameter values if I had to guess either it's the dataset missing a parameter or the report requires a value.  Example:
    crOrderPrintout.SetParameterValue("ParamName", sParamValue)
    HTH,
    -Jen

  • Can we use the built-in Row fetch for Multiple reports in a page?

    I need to create a page with multiple report regions. Each of it is based on a table. Those tables are different. I somewhat remembered that we can NOT use the built in automatic row fetch process if there are multiple report regions, neither the built in DML process. You have to make your own fetch and insert/update/delete process if you intend to.
    Also if I write my own row fetch and update processes, do I have to consider lock mechnism? or just simply write select and insert/update?
    Any input is appreciated.

    I think I found the answer. Would Scott or other gurus take a look at the thread and confirm it, in case the limitation is not in 2.0?
    Re: automatic row fetch
    What I am concered about is that the locking mechanism. If I have to write my own process to fetch and insert/update, other than the regular select and insert/update statements, do I have to put commit by myself, or htmldb can handle it automatically? Is there an example for this?
    Thanks in advance.

Maybe you are looking for

  • Site no longer works

    I have designed our school website using iweb and this has worked well for the past few months until now. It's hosted by an education dept. server. After adding a few pages I decided to upload the entire site again. Suddenly it can't find the url? I

  • Flex doesn't build the project anymore?

    Hello Forum I restarted my computer and the flex project this morning and when I try to debug the application I get a plain error message.  It launches the web url in debug mode but no page appears.  MAMP is running...  If I look in the project folde

  • T430s stuck in mini dock

    Hello, I have a series 3 mini dock with my lenovo T430s. Last night I docked my laptop as I usually do, and this morning when I went to undock it, I pressed the eject button but the laptop appears to be stuck in the dock. I can press the eject button

  • ACH Payment to Vendors

    Hi Experts, One of our clients wanted to make the payments to vendors through ACH mode. Currently making payments through checks and ACH currently using for payroll. I want to configure new payment method in FBZP for ACH what other areas need to do t

  • Delimiting position -urgent

    hi.. There is any fm for delimiting the position