[APEX 3] Requested source data of the report has been modified
Hello APEX-Friends,
I have a common problem but the situation is a bit different here. Many of you might know the "invalid set of rows requested the source data of the report has been modified" problem. Often it occurs on submit. That means, you have a report, you select rows, you do things, you submit the page and everything blews up.
This is because you enter some values into fields the report depends on and so you modify your report parameters and the source data changes.
But:
In my case I have a dynamically created report that blews up before any submits occur or values change.
My query is a union of two selects. Both query different views. Those views use a date field as parameter and some compare functions.
I read the field with a V-Function i wrapped arround the apex V Function - declared as deterministic. My date compare function is also declared deterministic (I doubt this makes any differences as it might be only important for the optimizer, but as long as I don't know exactly what APEX evaluates, I go for sure).
I ensured, that the date field is set by default with the current date (and that works, because my interactive report initially displays correct data from the current date).
So everything is deterministic and the query must return same results on subsequent calls, but APEX still throws this "source data has changed" error and I am to 99.99% sure, that this cannot be true.
And now the awesome thing about this:
If I change the value of the date field, an javascript performs a submit. The page is reloaded (without resetting pagination!) and everything works fine. I can leave the page, reenter, do things - everything works well.
But if I log into the application and directly move to the corrupted report and try to use the pagination without editing fields or submitting the page the error occurs.
Do you have any Idea what's happing there? I could try to workaround this by submitting the page the first time it's entered to trigger this "mystery submit" that gets everything working. But I would like to understand this issue and have a clean solution.
Thanks in advance,
Mike aka UniversE
Okay, I found a solution, but I do not understand it - it might be a design flaw in APEX.
I mentioned the date field that is used in the query. I also mentioned that it is set with the current date by default. I did not mention how.
There are some possibilities in APEX to do so.
1. Default-Setting in the element properties
2. Static assignment if no value is in session cache
3. Computation before header
I did the first and second.
BUT:
An interactive report seems to work as follows. A query is executed to get all rows of the report. Then a second query is executed to get the rows that shall be displayed. And the order is screwed up, I think.
1. The first report query to get all rows
2. The elements are loaded and set to default values
3. The second report query to get the display rows
And that's the reason why nothing worked. Scince I added a computation before header the date field is set before the report queries are executed and everything works all fine now.
But I think it's a design flaw. Either both queries shall be executed before Regions or afterwards but not split as field values might change when elements are loaded.
Greetings,
UniversE
Similar Messages
-
Introduction
There is a scenario that the data in the report changes infrequently, so the users want to be informed and get the most updated data once the data changes. By default, report server always run the report with the most recent data. Is there a way that we
can subscribe the report, so that we can send an email to users when the data in the report has been changed?
Solution
To achieve this requirement, we can create a subscription for the report, then create a trigger in the table which including the report data. When this table has data insert, update or delete, it will be triggered and execute the subscription to send email
to users.
In the Report Manager, create a subscription for the report and make it only execute one time.
When we create a subscription, a corresponding SQL Agent job will be created. Then we can use the query below to find out the job based on ScheduleId:
-- List all SSRS subscriptions
USE [ReportServer]; -- You may change the database name.
GO
SELECT USR.UserName AS SubscriptionOwner
,SUB.ModifiedDate
,SUB.[Description]
,SUB.EventType
,SUB.DeliveryExtension
,SUB.LastStatus
,SUB.LastRunTime
,SCH.NextRunTime
,SCH.Name AS ScheduleName
,RS.ScheduleId
,CAT.[Path] AS ReportPath
,CAT.[Description] AS ReportDescription
FROM dbo.Subscriptions AS SUB
INNER JOIN dbo.Users AS USR
ON SUB.OwnerID = USR.UserID
INNER JOIN dbo.[Catalog] AS CAT
ON SUB.Report_OID = CAT.ItemID
INNER JOIN dbo.ReportSchedule AS RS
ON SUB.Report_OID = RS.ReportID
AND SUB.SubscriptionID = RS.SubscriptionID
INNER JOIN dbo.Schedule AS SCH
ON RS.ScheduleID = SCH.ScheduleID
ORDER BY USR.UserName
,SUB.ModifiedDate ;
Create a trigger in the table which including the report data.
CREATE TRIGGER reminder
ON test.dbo.users
AFTER INSERT, UPDATE, DELETE
AS
exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', @EventData='b64ce7ec-d598-45cd-bbc2-ea202e0c129d'
Please note that the command ‘exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', @EventData='b64ce7ec-d598-45cd-bbc2-ea202e0c129d'’ is coming from the job properties. We can go to SQL Server Agent Jobs, right-click the corresponding job to open
the Steps, copy the step command, and then paste it to the query.
Then when the user table has data insert, update or delete, the trigger will be triggered and execute the subscription to send email to users.
References:
Subscriptions and Delivery (Reporting Services)
Internal Working of SSRS Subscriptions
SQL Server Agent
Applies to:
Reporting Services 2005
Reporting Services 2008
Reporting Services 2008 R2
Reporting Services 2012
Please click to vote if the post helps you. This can be beneficial to other community members reading the thread.Thanks,
Is this a supported scenario, or does it use unsupported features?
For example, can we call exec [ReportServer].dbo.AddEvent @EventType='TimedSubscription', @EventData='b64ce7ec-d598-45cd-bbc2-ea202e0c129d'
in a supported way?
Thanks! Josh -
How to find the date when the users has been created in Hyperion Essbase
Please let me know, if there is any option or way to find the date when the users has been created in Hyperion.
Essbase - 9.3.1.0.0
Sun Solaris SPARC (32-bit) - 5.8
If not in Hyperion, could you please let me know if it gets stored in the repository. If yes, please let me know the table name in Oracle.I don't know of a way of getting this information from Shared Services via the standard web UI. However you can see when a native user was created in openLDAP. If your users are all native then you can use an ldap browser to view the CreateTimestamp.
Port: 58089
User DN:CN=911,ou=People,dc=css,dc=hyperion,dc=com
Password: Your shared services admin user password
You should see each new native user under the ou=People and each CN will have a create timestamp.
I can't help if all you users are external or your using the old Essbase native security.
Gee -
All the data from the Iphone has been lost
My sister has been using her Iphone for a couple of weeks but has not plugged it in to her computer.
when she did the computer asked he to restore it so she did and has lost all of her data.
I have restored her contacts from the sim card but can't work out how to get the photos and Apps back.
Is this possable can anyone help
cheers JackThe photos are very likely gone.
The iphone is designed to be sycned to the computer regularly. The iphone store nothing to the SIM card.
Pics taken with iphone should be imported to the computer regularly as with any digital camera.
Apps can be redownloaded:
Downloading past purchases from the App Store, iBookstore, and iTunes Store -
How to know the report has already been sent to printer?
Dear All,
I have one problem to check that the report has been printed on paper through a printer after user already previewed and pressed Printer button. Is there any parameter will be sent back from system to inform the program? Please suggest me if you have developed or solved this problem.
Thank you in advance.
Pawinee H.
e-mail: [email protected]
nullYes. I ran the code example and it ran successfully.
So if we wanna generate report by java code, we should use the code as a http client to access report server to do it.
I think we could use url http://server:port/reports/rwservlet/showjobid to know the status of generating report (i.e. successful or failed).
And one more question is that could I get the jobid by any url as soon as I generate my report?
Thanks a lot.
Best Regards. -
Notification after the report had been saved by scheduler
1)
HOw can I insert a record in my Db after the scheduled report is generated Scheduler and saved at the a particular location in the webserver ????/
2)How to pass the error messages occured during the scheduler generating/saving a scheduled report to the end user.
Thanks in advance,
YUgHi Cabio,
Before addressing your specific question, I want to let you know that you can configure the report file path in the Report File pathname tab of the report options. You can choose from a number of options, including specifying a custom expression for the report path. This will allow you to customize where the report is saved with no code changes.
If this doesn't address your needs, the problem you are likely having is that you are accessing the report object before the report is actually generated. To access the report object after it has been populated, override the ProcessCleanup callback, which executes after the report has been generated. (for an example of overriding a callback, refer to the PreUUTCallback shipping example.
Note: if you are using TestStand 2012, this method will not work unless you configure the report generator to not use a new thread. You can configure this option in the result processing dialog by selecting the Show More Options checkbox. If you do want to use a new thread, you can access the report by modifying the AddUUTReportAndSave sequence in ReportGen_ATML.
Al B.
Staff Software Engineer - TestStand
CTA/CLD -
How To Create the source data in the destination part of Shuttle in APEX?
Hi,
I create a shuttle in a region, and I can specify the source list value in the left part of the shuttle, and how can I create the original data in the right part(destination field).
Now the destination part alwasy is null at first when open the page.
So any idea? or Shuttle in Apex just can set the source data in the left part?
Edited by: PPMonkey on Jun 18, 2009 10:10 PMRe: How do you populate right side of Shuttle control
-
Can not refresh data int the report...
Application on C#.
Steps:
1. Get Report without data from the database
2. Change the dataconnections in report to the current user
3. refresh data on the report (FilePath = TempFilePath)
4. Resave report file with data
5. Automatically open CrystalReportsViewer2008 and load the report
Result
On developer machine is allright, but on the user machine data isn't refreshed. Therefore CrysrtalReportsViewer2008 can't open report. It say that check the SaveDatawithReport parameter.
In process I found that in temp directory on user pc, didn't creates some temprorary files which creates on developer PC. Why? Help me please.
Sorry for my English.There is the code of my programm
function ParseReport is refreshed the data and change dataconnections for current user
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using CRApp;
using Microsoft.Win32;
namespace CRApp
* u041Au043Bu0430u0441u0441 u0434u043Bu044F u0430u0432u0442u043Eu043Cu0430u0442u0438u0437u0438u0440u043Eu0432u0430u043Du043Du043Eu0433u043E u0432u0438u0437u0443u0430u043Bu044Cu043Du043Eu0433u043E u0434u043Eu0441u0442u0443u043Fu0430
* u043A u0444u0430u0439u043Bu0430u043C u0448u0430u0431u043Bu043Eu043Du043Eu0432, u0441u0433u0435u043Du0435u0440u0438u0440u043Eu0432u0430u043Du043Du044Bu0445 u0432
* u043Fu0440u043Eu0433u0440u0430u043Cu043Cu0435 Crystal Reports
public partial class Export2CR_MForm : Form
public Export2CR_MForm()
InitializeComponent();
Start();
public void Start()
LoginForm Login = new LoginForm();
DialogResult Dres = Login.ShowDialog();
if (Dres == DialogResult.OK)
if (Login.GetConStr().ToString() != "")
GetReportNamesFromDataBase(Login.GetConStr());
SetConnectionString(Login.GetConStr());
this.CenterToScreen();
Visible = true;
Login.Close();
else
Login.Close();
this.CenterToScreen();
this.OnClosed(null);
* u041Fu043Eu043Bu0443u0447u0430u0435u043C u043Fu0443u0442u044C u043A u0432u0440u0435u043Cu0435u043Du043Du044Bu043C u0444u0430u0439u043Bu0430u043C
TempFilePath = Path.GetTempPath();
* u041Au0440u0438u0441u0442u0430u043Bu043Eu0432u0441u043Au0438u0439 u0432u044Cu044Eu0432u0435u0440u043Eu043A
CrystalDecisions.Windows.Forms.CrystalReportViewer viewer;
* u041Fu0443u0442u044C u043A u0432u0440u0435u043Cu0435u043Du043Du043Eu0439 u043Fu0430u043Fu043Au0435
private string TempFilePath;
* u041Fu0430u0440u0430u043Cu0435u0442u0440 u0437u0430u043Fu0438u0441u0438 u0432 u0440u0435u0436u0438u043Cu0435, u0442u0430u0431u043Bu0438u0446u0435 (u0438u0442u0434...)
* u041Du0443u0436u0435u043D u0434u043Bu044F u0442u043Eu0433u043E u0447u0442u043Eu0431u044B u0432u044Bu0431u0438u0440u0430u0442u044C
* u043Eu043Fu0435u0440u0435u0434u043Bu0451u043Du043Du044Bu0439 u0434u0430u0442u0430u0441u0435u0442, u0441u043Eu043Eu0442u0432u0435u0442u0441u0442u0432u0443u044Eu0449u0438u0439 u0432u044Bu0431u0440u0430u043Du043Du043Eu0439 u0437u0430u043Fu0438u0441u0438
private int ObjectIDOfTemplate;
* u0423u0441u0442u0430u043Du043Eu0432u043Au0430 u0437u043Du0430u0447u0435u043Du0438u044F ObjectIDOfTemplate
public void SetObjectIDOfTemplate(int /*
* ObjectID u0442u043Eu0433u043E u0448u0430u0431u043Bu043Eu043Du0430,
* u043Au043Eu0442u043Eu0440u044Bu0439 u043Du0430u0434u043E u043Fu043Eu043Bu0443u0447u0438u0442u044C
EnternalObjectID)
ObjectIDOfTemplate = EnternalObjectID;
* u041Fu043Eu043Bu0443u0447u0438u0442u044C ObjectID u0448u0430u0431u043Bu043Eu043Du0430
* u0441 u043Au043Eu0442u043Eu0440u044Bu043C u0440u0430u0431u043Eu0442u0430u043Bu0438 u0434u043Bu044F
* u0438u0441u043Fu043Eu043Bu044Cu0437u043Eu0432u0430u043Du0438u044F u0435u0433u043E u0432u043Du0435 u0431u0438u0431u043Bu0438u043Eu0442u0435u043Au0438
public int GetObjectIDOfTemplate()
return ObjectIDOfTemplate;
* u041Fu0443u0442u044C u043A u0432u044Bu043Fu043Bu044Eu043Du0443u0442u043Eu043Cu0443 u0444u0430u0439u043Bu0443
private string TemplateFilePath;
* u0423u0441u0442u0430u043Du043Eu0432u0438u0442u044C u043Fu0443u0442u044C u043A
* u0432u044Bu043Fu043Bu044Eu043Du0443u0442u043Eu043Cu0443 u0444u0430u0439u043Bu0443
public void SetTemplateFilePath(string In)
TemplateFilePath = In;
* u041Fu043Eu043Bu0443u0447u0438u0442u044C u043Fu0443u0442u044C u043A
* u0432u044Bu043Fu043Bu044Eu043Du0443u0442u043Eu043Cu0443 u0444u0430u0439u043Bu0443
public string GetTemplateFilePath()
return TemplateFilePath;
* u0424u0443u043Du043Au0446u0438u044F u043Eu0442u043Au0440u044Bu0442u0438u044F u0444u0430u0439u043Bu0430,
* u043Fu043Eu043Bu0443u0447u0435u043Du043Du043Eu0433u043E u0438u0437 u0431u0430u0437u044B u0438
* u043Fu043Eu043Bu043Eu0436u0435u043Du043Du043Eu0433u043E u0432u043E u0432u0440u0435u043Cu0435u043Du043Du0443u044E u043Fu0430u043Fu043Au0443
public int ParseReport(string FilePath)
viewer = new CrystalDecisions.Windows.Forms.CrystalReportViewer();
CrystalDecisions.CrystalReports.Engine.ReportDocument rd =
new CrystalDecisions.CrystalReports.Engine.ReportDocument();
try
rd.Load(FilePath);
try
for (int i = 0; i < rd.DataSourceConnections.Count; i++)
rd.DataSourceConnections<i>.SetConnection(
GetConnectionString().GetServerName(),
GetConnectionString().GetDatabaseName(),
GetConnectionString().GetUserName(),
GetConnectionString().GetPassword()
for (int j = 0; j < rd.Database.Tables.Count; j++)
DataTable dataSet = new DataTable();
SqlConnection C = new SqlConnection(GetConnectionString().ToString());
string ViewName = GetDataViewName(GetConnectionString(), ParseTableName(
rd.Database.Tables[j].Name));
SqlCommand Q = new SqlCommand("select * from " + ViewName
, C);
Q.CommandType = CommandType.Text;
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = Q;
adapter.Fill(dataSet);
rd.Database.Tables[j].SetDataSource(dataSet);
catch (Exception e)
MessageBox.Show(e.Message);
try
SetTemplateFilePath(TempFilePath + "\\" + FileTreeView.SelectedNode.Text.ToString() + ".rpt");
rd.ReportOptions.EnableSaveDataWithReport = true;
viewer.ReportSource = rd;
viewer.RefreshReport();
rd.SaveAs(TemplateFilePath);
rd.Close();
return 0;
catch (Exception e)
MessageBox.Show(e.Message);
return -1;
catch (Exception ex)
rd.ReportOptions.EnableUseDummyData = true;
rd.ReportOptions.EnableSaveDataWithReport = true;
viewer.RefreshReport();
rd.SaveAs(TemplateFilePath);
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
return -1;
* u0420u0430u0437u0431u0438u0435u043Du0438u0435 u0438u043Cu0435u043Du0438 u0442u0430u0431u043Bu0438u0446u044B
* u0434u043Bu044F u043Fu043Eu043Bu0443u0447u0435u043Du0438u044F u043Du043Eu043Cu0435u0440u0430 u043Au043Bu0430u0441u0441u0430
public string ParseTableName(string TableName)
// MessageBox.Show(TableName);
int x = 0;
if (TableName.Contains("Class"))
x = TableName.LastIndexOf("s");
return TableName.Remove(0,x+1);
if(TableName.Contains("Attr"))
x = TableName.IndexOf("r");
// MessageBox.Show(x.ToString());
// MessageBox.Show(TableName.Remove(0, x+1));
return TableName.Remove(0, x+1);
* u0424u0443u043Du043Au0446u0438u044F u043Fu043Eu043Bu0443u0447u0435u043Du0438u044F u0444u0430u0439u043Bu0430 u0438u0437 u0431u0430u0437u044B
public int ParseReportWithDataBase()
try
string ConnectionString = GetConnectionString().ToString();
SqlConnection C = new SqlConnection(ConnectionString);
C.Open();
string SelectString = "select P119 from "+ GetDataViewName(GetConnectionString(),"24") +" where P115='";
SelectString = SelectString+FileTreeView.SelectedNode.Text.ToString()+"'";
SqlCommand Q = new SqlCommand(SelectString, C);
Q.CommandType = CommandType.Text;
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = Q;
DataTable table = new DataTable();
adapter.Fill(table);
byte[] b = (byte[])table.Rows[0].ItemArray.GetValue(0);
FileStream fs = File.Create(TempFilePath+"\\"+FileTreeView.SelectedNode.Text.ToString()+".rpt");
fs.Write(b, 0, b.Length);
fs.Close();
C.Close();
return 0;
catch (Exception ex)
MessageBox.Show(ex.Message);
return -1;
* u0421u0442u0440u0443u043Au0442u0443u0440u0430, u043Eu043Fu0438u0441u044Bu0432u0430u044Eu0449u0430u044F u043Fu0430u0440u0430u043Cu0435u0442u0440u044B
* u043Fu043Eu0434u043Au043Bu044Eu0447u0435u043Du0438u044F u043A u0431u0430u0437u0435 u0434u0430u043Du043Du044Bu0445,
* u043Au0430u043A u0434u043Bu044F u0432u043Du0435u0448u043Du0435u0433u043E u0438u0441u043Fu043Eu043Bu044Cu0437u043Eu0432u0430u043Du0438u044F
* u0442u0430u043A u0438 u0434u043Bu044F u0432u043Du0443u0442u0440u0435u043Du043Du0435u0433u043E
public struct ConnectionString
* u0418u043Cu044F u0441u0435u0440u0432u0435u0440u0430 u0431u0430u0437u044B u0434u0430u043Du043Du044Bu0445
private string DataSource_Value;
* u041Du0430u0437u0432u0430u043Du0438u0435 u0431u0430u0437u044B u0434u0430u043Du043Du044Bu0445
private string InitialCatalog_Value;
* u0418u043Cu044F u043Fu043Eu043Bu044Cu0437u043Eu0432u0430u0442u0435u043Bu044F
private string UserID_Value;
* u041Fu0430u0440u043Eu043Bu044C
private string Password_Value;
* u041Fu0435u0440u0435u0433u0440u0443u0436u0435u043Du043Du044Bu0439 u043Au043Eu043Du0441u0442u0440u0443u043Au0442u043Eu0440
* u0434u043Bu044F u0440u0443u0447u043Du043Eu0439 u0438u043Du0438u0446u0438u0430u043Bu0438u0437u0430u0446u0438u0438
* u0441u0442u0440u043Eu043Au0438 u043Fu043Eu0434u043Au043Bu044Eu0447u0435u043Du0438u044F,
* u043Du0443u0436u0435u043D u0434u043Bu044F u0438u0441u043Fu043Eu043Bu044Cu0437u043Eu0432u0430u043Du0438u044F u0435u0433u043E
* u0432 u043Eu0434u0440u0443u0433u0438u0445 u0444u043Eu0440u043Cu0430u0445
public ConnectionString(string /*
* u0418u043Cu044F u0441u0435u0440u0432u0435u0440u0430 u0431u0430u0437u044B u0434u0430u043Du043Du044Bu0445
InDataSource_Value,
string /*
* u041Du0430u0437u0432u0430u043Du0438u0435 u0431u0430u0437u044B u0434u0430u043Du043Du044Bu0445
InInitialCatalog_Value,
string /*
* u0418u043Cu044F u043Fu043Eu043Bu044Cu0437u043Eu0432u0430u0442u0435u043Bu044F
*/ InUserID_Value,
string /*
* u041Fu0430u0440u043Eu043Bu044C
*/ InPassword_Value)
DataSource_Value = InDataSource_Value;
InitialCatalog_Value = InInitialCatalog_Value;
UserID_Value = InUserID_Value;
Password_Value = InPassword_Value;
* u041Fu043Eu043Bu0443u0447u0438u0442u044C u0438u043Cu044F u0441u0435u0440u0432u0435u0440u0430
* u0431u0430u0437u044B u0434u0430u043Du043Du044Bu0445
public string GetServerName()
return DataSource_Value;
* u041Fu043Eu043Bu0443u0447u0438u0442u044C u043Du0430u0437u0432u0430u043Du0438u0435
* u0431u0430u0437u044B u0434u0430u043Du043Du044Bu0445
public string GetDatabaseName()
return InitialCatalog_Value;
* u041Fu043Eu043Bu0443u0447u0438u0442u044C u0438u043Cu044F
* u0442u0435u043Au0443u0449u0435u0433u043E u043Fu043Eu043Bu044Cu0437u043Eu0432u0430u0442u0435u043Bu044F
public string GetUserName()
return UserID_Value;
* u041Fu043Eu043Bu0443u0447u0438u0442u044C u043Fu0430u0440u043Eu043Bu044C
* u0442u0435u043Au0443u0449u0435u0433u043E u043Fu043Eu043Bu044Cu0437u043Eu0432u0430u0442u0435u043Bu044F
public string GetPassword()
return Password_Value;
* u041Fu0435u0440u0435u0432u043Eu0434 u0441u0442u0440u0443u043Au0442u0443u0440u044B u0432 u0442u0435u043Au0441u0442u043Eu0432u044Bu0439 u0432u0438u0434
* u0434u043Bu044F u0438u0441u043Fu043Eu043Bu044Cu0437u043Eu0432u0430u043Du0438u044F u043Fu0440u0438 u0441u043Eu0437u0434u0430u043Du0438u0438 u043Au043Eu043Du043Du0435u043Au0442u043Eu0440u0430
public override string ToString()
return "Data Source="+DataSource_Value+";Initial Catalog="+
InitialCatalog_Value+";User ID="+UserID_Value+";Password="+
Password_Value;
* u0424u0443u043Du043Au0446u0438u044F u043Fu043Eu043Bu0443u0447u0435u043Du0438u044F u0441u0442u0440u043Eu043Au0438 u043Fu043Eu0434u043Au043Bu044Eu0447u0435u043Du0438u044F u043Fu043E u0443u043Cu043Eu043Bu0447u0430u043Du0438u044E
* u043Du0443u0436u043Du0430 u0431u044Bu043Bu0430 u0434u043Bu044F u0442u0435u0441u0442u043Eu0432
static private string GetDefaultConnectionString()
return "Data Source=BSRV01;Initial Catalog=Prokat_Last;User ID=sa;Password=";
* u0412u043Du0443u0442u0440u0435u043Du043Du044Fu044F u0441u0442u0440u043Eu043Au0430 u043Fu043Eu0434u043Au043Bu044Eu0447u0435u043Du0438u044F
* u043Du0435 u0434u043Eu0441u0442u0443u043Fu043Du0430 u0434u043Bu044F u0432u044Bu0437u043Eu0432u0430 u043Du0430u043Fu0440u044Fu043Cu0443u044E
private ConnectionString localConnectionString;
* u0423u0441u0442u0430u043Du043Eu0432u0438u0442u044C u0441u0442u0440u043Eu043Au0443 u0432u043Du0443u0442u0440u0435u043Du043Du0435u0433u043E u043Fu043Eu0434u043Au043Bu044Eu0447u0435u043Du0438u044F
public void SetConnectionString(ConnectionString CS)
this.localConnectionString = CS;
* u041Fu043Eu043Bu0443u0447u0438u0442u044C u0441u0442u0440u043Eu043Au0443 u0432u043Du0443u0442u0440u0435u043Du043Du0435u0433u043E u043Fu043Eu0434u043Au043Bu044Eu0447u0435u043Du0438u044F
public ConnectionString GetConnectionString()
return this.localConnectionString;
* u0424u0443u043Du043Au0446u0438u044F u0443u0434u0430u043Bu0435u043Du0438u044F u0432u0440u0435u043Cu0435u043Du043Du043Eu0433u043E u0444u0430u0439u043Bu0430
* u043Fu043Eu0441u043Bu0435 u0437u0430u0432u0435u0440u0448u0435u043Du0438u044F u0432u0441u0435u0445 u043Eu043Fu0435u0440u0430u0446u0438u0439 u0441 u0448u0430u0431u043Bu043Eu043Du043Eu043C
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
if (FileTreeView.Nodes.Count!=0)
if (File.Exists(TemplateFilePath))
File.Delete(TemplateFilePath);
* u041Eu0431u0440u0430u0431u043Eu0442u0447u0438u043A u0434u0432u043Eu0439u043Du043Eu0433u043E u043Au043Bu0438u043Au0430
* u043Fu043E u0448u0430u0431u043Bu043Eu043Du0443 u0432 u0434u0435u0440u0435u0432u0435 u0444u0430u0439u043Bu043Eu0432
public void FileTreeView_DoubleClick(object sender, EventArgs e)
int Result = 0;
try
Result = ParseReportWithDataBase();
if (Result == 0)
Result = ParseReport(TempFilePath + FileTreeView.SelectedNode.Text.ToString() + ".rpt");
if (Result == 0)
Process.Start(TemplateFilePath);
else
MessageBox.Show("u0424u0430u0439u043B u043Du0435 u043Cu043Eu0436u0435u0442 u0431u044Bu0442u044C u043Eu0442u043Au0440u044Bu0442!");
catch (Exception ex)
MessageBox.Show(ex.Message);
* u041Fu043Eu043Bu0443u0447u0435u043Du0438u0435 u0432u0441u0435u0445 u0444u0430u0439u043Bu043Eu0432 u0441 u0440u0430u0441u0448u0438u0440u0435u043Du0438u0435u043C .rpt
* u0438u0437 u0431u0430u0437u044B u043A u043Au043Eu0442u043Eu0440u043Eu0439 u043Fu0440u0438u0441u043Eu0435u0434u0438u043Du0438u043Bu0438u0441u044C
public void GetReportNamesFromDataBase(ConnectionString CS)
try
SqlConnection C = new SqlConnection(CS.ToString());
SqlDataAdapter adapter = new SqlDataAdapter();
DataTable table = new DataTable();
table.Clear();
string sqlcom = "Select P115 from " + GetDataViewName(CS,"24") + " where P116 like '%.rpt'";
SqlCommand Q1 = new SqlCommand(sqlcom,C);
Q1.CommandType = CommandType.Text;
adapter.SelectCommand = Q1;
adapter.Fill(table);
FileTreeView.Nodes.Clear();
for (int i = 0; i < table.Rows.Count; i++)
FileTreeView.Nodes.Add(table.Rows<i>.ItemArray.GetValue(
table.Rows<i>.ItemArray.Length-1).ToString());
// MessageBox.Show(table.Rows<i>.ItemArray.GetValue(0).ToString());
C.Close();
catch (Exception ex)
MessageBox.Show(ex.Message);
* u041Fu043Eu043Bu0443u0447u0438u0442u044C u0438u043Cu044F DataView
* u0434u043Bu044F u0442u0435u043Au0443u0449u0435u0433u043E u043Fu043Eu043Bu044Cu0437u043Eu0432u0430u0442u0435u043Bu044F
private string GetDataViewName(ConnectionString CS,string ClassID)
string ViewName = "";
SqlConnection C = new SqlConnection(CS.ToString());
C.Open();
SqlCommand Q = new SqlCommand("[dbo].[_SysGetClassesInfoNew1]"/*P115 from dbo.Attr24 where P116='.rpt'*/, C);
Q.CommandType = CommandType.Text;
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = Q;
DataTable table = new DataTable();
adapter.Fill(table);
for (int i = 0; i < table.Rows.Count; i++)
if (table.Rows<i>.ItemArray.GetValue(0).ToString() == ClassID)
ViewName = table.Rows<i>.ItemArray.GetValue(13).ToString();
// MessageBox.Show(ViewName);
C.Close();
return ViewName;
* u041Eu0431u0440u0430u0431u043Eu0442u0447u0438u043A u043Au043Bu0438u043Au0430 u043Du0430 u0432u044Bu043Fu0430u0434u0430u044Eu0449u0435u043C
* u043Cu0435u043Du044E u0432 u043Fu0443u043Du043Au0442u0435 "Delete"
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
FileTreeView.SelectedNode.Remove(); -
Unable to see data in the report or workbook
Hello All,
We are struggling to display data in the report level or workbook, however the data is available in Multiprovider.
Error Message: "No Applicable Data Found"
Steps Carried Out:
1. Dropped the BIA Indexes for relevant cubes and Reactivated the Multiprovider, still did not work.
2. When we checked for previous years like 2013, we are able to see data in the report. To elaborate an issue, we loaded budget data for year 2015 as requested by user. Restricted the same filters from the Query in the Multiprovider and able to see the data in the backend, however not data can be seen in the Report.
3. Three Hierarchies are restricted in the Filters of the Query.
It would be great, if any of you can help us to fix the issue.
Best Regards,
SudhakarHi,
Have you used any exists?
in exists is there any system date kind?
Can you try to run your report thru RSRT and use debug option there.
before reporting please check your all connected targets have data for reporting.
mean at targets-->request tab, reporting symbol was there or not.
Any master data objects included in multi provider?
if yes then please check those, if any ACR was running then it may cause you.
if possible try to develop simple query with as per needs(mean to see 2015 data only).
As my guess selections/filters migth be hidden, please check those.
Thanks -
Could not see the data in the report
Hi,
BOXI R3.1 is intalled newly in my sytem.Through Infoview,when i refresh a new report, though data is getting into the report ,I am not able to see the data in the report plus the Header color is blue and the rest of the row colors are displaying as yellow.
when I am logging in another machine i am able to see the data.Please help me in solving this issue.
Thanks in Advance.
Regards,
Spandana.Spandana,
As suggested, JVM is problem. You can find out it at Control Panel == Java (Double-click) General tab == About button (See the build version) (build 1.6.0_20-b02). So you have to choose below 20 (I prefer 17).
Alternatively, You might have several Java's running on your machine. Uninstall all Java versions and start developing reports or Editing any existing reports, now BO will prompt for you to install JVM, Run it, Now the problem is solved.
Hope it should solves the issue.
If you want to see the data:(now with yellow & blue)
Select Column == properties == Read cell content as, change it to HTML.
Thank You!!
Sent from iPhone -
Not getting data in the report.
Hi BW Experts,
I have Changed the display attribute to Navigational attribute for 0BP_FSTNAME of 0BPARTNER.I have switched on in the Cube as Navigational Attribute.I have checked the table /BI0/SBPARTNER and it contains the data. In Query Designer, i can the 0BP_FSTNAME as seperate Characteristic.When i execute the query, # Values are displaying in the report.
I have loaded the master data again for 0BPARTNER_ATTR.
I have tried to laod Attribute Change run, but 0BP_FSTNAME is not displayed in the list.
But still i couldnt able to see the data in the report.
Can u pls help on this issue.
Thanks,
Jelina.Hi,
Do one thing.
See what all records you get in the cube for the selections which you have given on the report.Give the same selection in the cubes and pick some records for you analysis.
pick the value of BPARTNER from all those records.
Now check the table /BI0/PBPARTNER and check inside that if it stores values for 0BP_FSTNAME or not for the same value of BPARTNER in the cube.
If it stores then try to activate the master data again and see if it shows up in the report.
If not then it will show up in blank.
use the transaction LISTCUBE to see all the values in the inforpovider and give the same selections and restrcitions here which you have given in the report.
Also if this query is based on a multiprovider...then you need to give proper identification...that is the this char should be identified from all the underlying cubes.
Thanks
Ajeet -
How to avoid printing a blank page when there is 'no data' in the report.
how to avoid printing a blank page when there is 'no data' in the report.
try like this
if@section:IND=1
this template
end ifsectionbreak
if@section:IND=2
this template
end if -
Need to show No applicable data in the report.
Hi All,
We ave a key figure in the selection screen. And user will enter the value. based on the input, the report has to display less than or equal to the entered value as a result in the output of the report.
Input NIV as 67,169.48 then below results -
If user gives input NIV as 16,544.14 , the below output is showing.
But we need to show zero as result or no applicable data in the report. Is it possible to achieve through FORMULA.Please help on this
Thanks.Hi Jalina,
Yasemin already asked few questions.
but this is what we may do:-
to create a formula variable and use it for user input. use this formula variable in a formula , if your NIV kf<= formula variable, then NIV KF, else, 0.
then make a condition on this KF, not equal to zero to suppress this record.
regards,
Sakthi. -
From and To Date in the report
Hello friends,
Can we display the From Date and TO Date in the report heading (not in the column) which is entered by the User.hi,
Hey u use Replacement path variable for this.
in the new selection which u have created while writing the description/name of it use the replacement patgh variable and u will get the user entered dfates.
eg.
purchases &Replacement_path_variable&
then the column heading would be
purchases Mar 2008.
regards,
VJ -
How to find the last run date of the report..
please any one one help me
how to find last run date of the report...
for example if my report is zgrir...if i am exuted in last week
if want to find when it executed
last run date is req
please any one help me...The trasaction stat is limited because i want all the execution date even if it is 3 years ago.
I have tryied the transaction st03 but it is limited to 3 months ago.
check transaction STAT and it's report RSSTAT00.
U can copy RSSTAT00 into ZRSSTAT00 and modify corresponding.
*& Report ZDSAP *
REPORT ZDSAP .
DATA: d_ref TYPE REF TO data,
d_ref2 TYPE REF TO data ,
i_alv_cat TYPE TABLE OF lvc_s_fcat,
ls_alv_cat LIKE LINE OF i_alv_cat.
TYPES tabname LIKE dcobjdef-name .
parameter: p_tablen type tabname.
data: begin of itab occurs 0.
INCLUDE STRUCTURE dntab.
data: end of itab.
FIELD-SYMBOLS : <F_FS> TYPE table,
<F_FS1> TYPE TABLE,
<F_FS2> TYPE ANY,
<F_FS3> TYPE TABLE.
REFRESH itab.
CALL FUNCTION 'NAMETAB_GET'
EXPORTING
langu = sy-langu
tabname = p_tablen
TABLES
nametab = itab
EXCEPTIONS
no_texts_found = 1.
LOOP AT itab .
ls_alv_cat-fieldname = itab-fieldname.
ls_alv_cat-ref_table = p_tablen.
ls_alv_cat-ref_field = itab-fieldname.
APPEND ls_alv_cat TO i_alv_cat.
ENDLOOP.
internal table build
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = i_alv_cat
IMPORTING ep_table = d_ref .
ASSIGN d_ref->* TO <F_FS>.
SELECT * FROM (p_tablen) INTO CORRESPONDING FIELDS OF TABLE <F_FS>.
LOOP AT <F_FS> ASSIGNING <F_FS2>.
*your code goes here.
ENDLOOP.
Maybe you are looking for
-
Keep losing my secure wifi with iPhone and ipad with newest iOS update. PC still connected
Keep losing my secure wifi on my ipad and iphone with newest iOS update. My PC is still connected to same secure wifi. Any ideas.
-
Hi All, We have created the Purchase order and enter Delivery block in item detail customer data, the purpose is we block the purchase order. But system allowing to do the outbound delivery. Any body can please tell me how can we resolve this issue
-
SPOOL the file in UTF8 Encoding
Hi My Database supports the storage of chineese characters. I need to generate a file from my db which is used for further Processing. The file generated from the database using spool command should support chineese characters. How to generate a flat
-
Continuous DAQ with multiple Channels using 6023E
I am trying to countinuously aquire data from 8 channels using a 6023E (without loosing data). For some reason it allways gives me error -10092. Meaning the card requires a certain time between each scan. If i set the scan rate to something that work
-
Archivelink Solutions for SAP on Mainframe?
Hi all, can an Open-System based Archivelink-compatible solution also archive data from an SAP system running on mainframe? Can anybody please shed some light on that? Thanks and Regards, Tristan