PDA

View Full Version : خطا هنگام ساخت گزرش سازی پویا با کریستال ریپورت 13



negar.rafie
یک شنبه 07 خرداد 1391, 19:42 عصر
سلام
دوستان من یه مشکلی برام پیش اومده و اینم اینه که وقتی می خوام پارامتر به کریستال ریپورت ارسال کنم همه چیز درست است ولی این کدها در کریستال ریپورت های ورژنهای پایین به خوبی کار می کند ولی وقتی می خوام ب ا ویژوال استادیو 2010 انجام بدم پیغام میده پارامتر اشتباه است که با تغییر نت فریم ورک هم درست نشد مشکل کجاست؟

87549

The parameter is incorrect

ma.rad
یک شنبه 07 خرداد 1391, 19:55 عصر
سلام اگر یه گزارشی رو تو cr13 درست کردید و تو ورژن های پایین بازش کردید وذخیرش کردید یه سری پارامترها توش جواب نمی ده
فکر می کنم این پارامترها تو ورژن جدید تعریف شدن

negar.rafie
یک شنبه 07 خرداد 1391, 20:20 عصر
منظور من را متوجه نشدید

من یه اموزش گزارش گیری پویا پیدا کردم که روی لپ تاپ یکی از هم کلاسی هام ویژوال استادیو 2008 نصبه که به خوبی کار می کنه
ولی وقتی همین کدها را تو ویژوال استادیو 2010 می خوام استفاده کنم نمیشه و پیغام بالا را میده

negar.rafie
دوشنبه 08 خرداد 1391, 21:03 عصر
دوستان من پروژه را میزارم ببینید مشکلش کجاست

arash ghafori
دوشنبه 08 خرداد 1391, 23:43 عصر
دوست عزیز یه کد بهینه تر به شما پیشنهاد میکنم ، امیدوارم به دردت بخوره .

1.یه کلاس Data Access برای برنامه بزار و داخل اینو بنویس :


using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
class DataAccess
{
public string DBName = "db1.mdf";
SqlConnection con;
SqlCommand cmd;
SqlDataAdapter da;

public DataAccess()
{
con = new SqlConnection();
cmd = new SqlCommand();
da = new SqlDataAdapter();
cmd.Connection = con;
da.SelectCommand = cmd;
}


public void connect()
{
string cs = global::WindowsFormsApplication1.Properties.Settin gs.Default.db1ConnectionString;
cs = string.Format(cs, this.DBName);
con.ConnectionString = cs;
con.Open();
}


public void Disconnect()
{
con.Close();
}

public DataTable select(string sql)
{
DataTable dt = new DataTable();
cmd.CommandText = sql;
da.Fill(dt);
return dt;
}

public void docommand(string sql)
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}

}
}


2.بعد از اون یه متد با مقدار برگشتی DataTable بساز :(هرجا که خواستی بزار . اینجا من توی یه کلاسی به اسم Table نوشتم) :


public DataTable SelectForreport()
{
DataTable dt = new DataTable();
DataAccess md = new DataAccess();
string sql = @"Select * from Table1";
md.connect();
dt = md.select(sql);
md.Disconnect();
return dt;
}

3 . بعد این کد رو توی دکمه ی Show Report بزار ( بازم تاکید میکنم من متد بالا رو توی کلاسی به اسم Table نوشتم پس ازش یه شئ میسازم بعد مقدار تابعم رو فراخوانی میکنم ) :


Table1 b = new Table1();
DataTable dt = b.SelectForreport();

ReportDocument rd = new ReportDocument();
rd.FileName = "FactorReport.rpt";
rd.SetDataSource(b.SelectForreport());
crystalReportViewer1.ReportSource = rd;
crystalReportViewer1.Show();


یه نکته ی مهم : فایل Report.rpt رو حتما به پوشه ی Bin->Debug کپی کنید.
ببخشید طولانی شد . موفق باشید .

negar.rafie
سه شنبه 09 خرداد 1391, 17:18 عصر
با سلام مجدد
دوست عزیز مشکل پارامتر قبول نکردن کریستال ریپورت 13 است نه بهینه سازی