電子書籍の厳選無料作品が豊富!

初めまして。C#でどういても分からないことがあって質問させていただきました。
現在、VisualStadio2008でForm1で入力した値を、ボタンを押すことでActiveReport3.0に渡し、
Form2のViewerにセットしようと考えているところです。


public Form1()
{
InitializeComponent();
}

private void print_Click(object sender, EventArgs e)
{
NewActiveReport1 report = new NewActiveReport1();
report.Run();

Form2 form2 = new Form2();
form2.setDocument(report.Document);
form2.Show();
}

private void Form1_Load(object sender, EventArgs e)
{

}


public Form2()
{
InitializeComponent();
}

public void setDocument(DataDynamics.ActiveReports.Document.Document doc)
{
this.viewer1.Document = doc;
}

private void viewer1_Load(object sender, EventArgs e)
{

}


public void ActiveReport_DataInitialize()
{

this.Fields.Add("1lbl");
this.Fields.Add("2lbl");
this.Fields.Add("txt1");
this.Fields.Add("txt2");
}

public bool ActiveReport_FetchData(object sender, DataDynamics.ActiveReports.ActiveReport.
FetchEventArgs eArgs)

{
try
{
m_reader.Read();
Fields["1lbl"].Value = m_reader["lbl1"].ToString();
Fields["2lbl"].Value = m_reader["lbl2"].ToString();
Fields["txt1"].Value = m_reader["txt1"].ToString();
Fields["txt2"].Value = m_reader["txt2"].ToString();
eArgs.EOF = false;
}
catch
{
eArgs.EOF = true;
}

return eof;

}

これをデバッグして、ボタンを押すと強制終了して、[ report.Run(); ]に
「Report Script Compile Error on line 15 Error = 型または名前空間名 'ActiveReport' は
名前空間 'DataDynamics.ActiveReports' に存在しません。アセンブリ参照が不足しています。」
と、表示されてしまいます。どうしたらよいでしょうか?
タイトルの通り、DB接続は行いません。また、Form1にはlabel2個、TextBoxが2個セットしてあります。

A 回答 (4件)

DBを使わないはずなのにDataReaderが出てくる理由がよくわかりません……



http://intd.componentone.com/arJPhelp_Internal_v …
↑のURLあたりのコードをそのまま引っ張ってきたのかもしれませんが、
これはレポートスクリプトに書くコードではなく、本体側(NewActiveReport1側)に書くコードです。
(そもそも、要件的にFetchDataイベントを使うのが適切がどうかも疑問です)


このあたりが参考になるかと思います(バージョンは違うので注意)。
http://www.grapecity.com/tools/support/technical …
    • good
    • 0

と思ったらバグ関係なかったorz



FetchDataイベントの引数はコード側とレポートスクリプト側とで異なりますので、
製品ヘルプを参照の上、正しい引数を指定してください。

↓コード側の書き方
public bool ActiveReport_FetchData(object sender, DataDynamics.ActiveReports.ActiveReport.
FetchEventArgs eArgs)

↓レポートスクリプト側の書き方
public bool ActiveReport_FetchData(bool eof)

この回答への補足

返答ありがとうございます。さっそく、ご指摘いただいた通りに修正を行ってみました。
ついでに、DataReaderの宣言が無かったので追加しました。
修正後のコードです↓

private DataReader dataReader;

public void ActiveReport_DataInitialize()
{
this.Fields.Add("1txt");
this.Fields.Add("2txt");
this.Fields.Add("1lbl");
this.Fields.Add("2lbl");

}


public bool ActiveReport_FetchData(bool eof)
{
Fields["1txt"].Value
= dataReader["txt1"].ToString();
Fields["2txt"].Value
= dataReader["txt2"].ToString();
eof = true;



return eof;

}





Report Script Compile Error on line 6 Error = 型または名前空間名 'DataReader' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。

補足日時:2014/09/12 10:55
    • good
    • 0

質問文の中にあったのですね……。


どこからどこまでがどのファイルのコードなのかを明記していただけると助かります。


FetchDataイベントの引数が記憶しているものと違ったので調べてみたところ、
スクリプトエディタにバグがあったようです。
http://www.grapecity.com/tools/support/technical …
    • good
    • 0

エラーメッセージに"Report Script Compile Error"と書いてあるのですから、


まず確認すべきはレポートのスクリプトです。

この回答への補足

回答ありがとうございます。レポートのスクリプトは、

public void ActiveReport_DataInitialize()
{

this.Fields.Add("1lbl");
this.Fields.Add("2lbl");
this.Fields.Add("txt1");
this.Fields.Add("txt2");
}

public bool ActiveReport_FetchData(object sender, DataDynamics.ActiveReports.ActiveReport.
FetchEventArgs eArgs)

{
try
{
m_reader.Read();
Fields["1lbl"].Value = m_reader["lbl1"].ToString();
Fields["2lbl"].Value = m_reader["lbl2"].ToString();
Fields["txt1"].Value = m_reader["txt1"].ToString();
Fields["txt2"].Value = m_reader["txt2"].ToString();
eArgs.EOF = false;
}
catch
{
eArgs.EOF = true;
}

return eof;

}


です。

補足日時:2014/09/11 11:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!