エクストラ レポートとパラメーターを含むストアド プロシージャに関する質問があります。
XtraReports を使用して間もないですが、多くのことを学びました。問題は、1 つのタスクを正しい方法で完了できていないことです。
説明させてください:
私の DataSet には、SP_get_singleRecord
2 つのパラメーターが(@ID, @TYPE) /*string,int*/
あり、テーブルに 6 つの列があるものがあります。
そこで、、、およびを xtraReport に追加dataset(dataset1)
しdataMember(SP_get_singleRecord)
ますdataAdapter(SP_get_singleRecord_TableAdapter)
。ウィザードを使用してフィールドを所定の位置に設定します。
ここで、xtrareports の fieldList のパラメーター セクションに移動し、パラメーターをID
asstring
およびTYPE
as として追加しますint
。
次に、フィルター文字列に移動し、次のようにパラメーターを設定します。
[ID] = ?ID And [TYPE] = ?TYPE
ここで、windowsForm に移動します -> print_simplebuttonEvent_OnClick
次のようにパラメーターを黙って渡します。
private void btn_print_Click(object sender, EventArgs e)
{
//convert parameters from controls
int type = Convert.ToInt32(lookUpEdit_Type.EditValue);
string id = lookUpEdit_id.EditValue.ToString();
// Create a report instance
Xtrareport report = new Xtrareport();
// Obtain a parameter, and set its value.
report.ID.Value = id;
report.TYPE.Value = type;
// Hide the Parameters UI from end-users.
report.ID.Visible=false;
report.TYPE.Visible = false;
// Show the report's print preview.
report.ShowPreview();
}
次に、次のようなエラー メッセージが表示されます。Error when trying to populate the datasource. The following exception was thrown: Procedure or function 'SP_getSingleRecord' expects parameter '@ID' which was not supplied.
それによると、渡したパラメーターはストアド プロシージャに到達しませんでした。レポートを印刷する前に単一のレコードを取得しようとしていますが、ここで何が欠けているのかわかりません...
私はそれを行う別の方法を試しましたが、それには「SP_getALLRecords」の「SP_getSingleRecord」を変更する必要があります(パラメーターなし)。それは約6500以上のレコードを返し、レポートの側面からそれらをフィルタリングしますが、それには9秒かかります.これは受け入れられません...動作しますが、正しい方法ではありません...
私は自分自身を明確にしたことを願っています。あなたが私を助けてくれることを願っています。
前もって感謝します。
アルフレッド。