PDA

View Full Version : چطور به فایل DLL پاامتر بفرستم ؟



am_abbas65
چهارشنبه 07 شهریور 1386, 12:05 عصر
سلام به همه دوستان

من تو ‍Class Liberary یک کلاس تعریف کردم و نوع خروجی اونرو Dataset گذاشتم .
بع یک پروژه کریستال رپورت ایجاد کردم و Connection اونرو از طریق فایل Dll انتخاب کردم .

حالا وقتی میخوام گزارش رو نشون بدم صحیح عمل میکنه و گزارش رو نشون میده . اما وقتی فایل Dll رو یک مقدار ورودی نسبت میدم مثلا یه پارامتر دریافت کنه و بر اساس اون سلکت بکنه اما در هنگام لود کردن کریستال رپورت ارو میده
کد مربوط به فایل Dll:


namespace ClassLibrary1
{
public class Report_Class
{
private const string ConStr = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Khoshkbar;Data Source=localhost";
public static DataSet GetPersonal(string Code)
{
SqlConnection ObjConnection = new SqlConnection(ConStr);
ObjConnection.Open();
SqlCommand ObjCommand = new SqlCommand("Select * from Shoper where Code=@Code" , ObjConnection);
objcommand.parameters.addwitValue("@Code",Code);
SqlDataAdapter ObjdataAdapter=new SqlDataAdapter(ObjCommand.CommandText,ObjConnectio n);
ObjdataAdapter.SelectCommand.ExecuteScalar();
DataSet ObjDataset = new DataSet();
ObjdataAdapter.Fill(ObjDataset, "shoper");
return ObjDataset;
}
}
}


اینم کد برنامه در این پروژه رفرنس فایل Dll رو به برنامه اضافه میکنم و از طریق کدی که کنارش علامت گذاشتم پارامتر رو ارسال میکنم که فکر میکنم اشکال کار اینجاست


private void Form1_Load(object sender, EventArgs e)
{
ClassLibrary1.Report_Class.GetPersonal("1");// <<<< این کد
string RepPath = "C:\\Documents and Settings\\Dear-User\\My Documents\\Visual Studio 2005\\Projects\\Rep\\Rep\\CrystalReport1.rpt";
CrystalDecisions.CrystalReports.Engine.ReportDocum ent RepDoc = new CrystalDecisions.CrystalReports.Engine.ReportDocum ent();
RepDoc.Load(RepPath);
crystalReportViewer1.ReportSource = RepDoc;
}

لطفا نحوه ارصال پارامتر رو بگین که چطوری به فایل DLL پارامتر بفرستم یا به کریستال پورت بفرستم .


در ضمن در هنگام لود شدن گزارشات قبلی کمی کریستال رپورت کند لود میشود این اشکال رو چه جوری حل کنم ؟
از اینکه سرتون رو به درد آوردم معضرت میخوام

asgari2005
چهارشنبه 07 شهریور 1386, 13:38 عصر
به نظر من شما راه رو اشتباه رفتی شما می تونی فایل Craystal report رو ایجاد کنی و از طریق کلاس های Crystal report توی dotnet استفاده کنی و پارامترهای پاس کنی و نیازی به ساخت Dll نمی باشد فقط نیاز است شما در مورد ارسال پارامتر به Crystal Report توی سایت جستجو کنی
مثلا
protected _1001.Reports.CR32 rpt;
public CrystalDecisions.CrystalReports .Engine .Table table ;
public CrystalDecisions.Shared .TableLogOnInfo logon = new TableLogOnInfo ();
foreach (CrystalDecisions.CrystalReports .Engine .Table table in rpt.Database .Tables )
{
logon = table.LogOnInfo ;
logon.ConnectionInfo.Password = System.Configuration .ConfigurationSettings .AppSettings ["password"].ToString ();
logon.ConnectionInfo .UserID = System.Configuration .ConfigurationSettings .AppSettings ["userid"].ToString ();
table.ApplyLogOnInfo(logon);

}
rpt.DataDefinition .FormulaFields ["group"].Text = "ToText('از - اسلحه و مهمات فروشی مجاز شهرستان ')";
rpt.DataDefinition .FormulaFields ["subject"].Text ="ToText('موضوع - خرید و فروش سلاح')";

شما می تونی از طریق DotNet کاملا Crystal Report رو کنترل کنی

am_abbas65
پنج شنبه 08 شهریور 1386, 11:33 صبح
با عرض شرمندگی من از کدهایی که شما نوشتید سر در نیاوردم لطفا اگه میشه نحوه ارسال پارامتر رو بگین فکر کنم کد بالا مربوط به لاگین میباشد. لطفا یک مثال کامل از کریستال رپورت واسم بفرستین

hdv212
پنج شنبه 08 شهریور 1386, 12:58 عصر
http://www.codeproject.com/useritems/Crystal_Design.asp

am_abbas65
پنج شنبه 08 شهریور 1386, 22:36 عصر
سلام HDV عزیز عکست رو هم که عوض کردی ما به عکس قبلیت عادت کرده بودیم اولش نشناختمت ولی از اسم کاربریت متوجه شما شدم . این عکست خوبه.

در ضمن درمورد لینک بالا دستت درد نکنه مشکلم حل شد . ولی یک مشکل کوچولو دیگه دارم اونم اینه که من توی فرم چند تا DGView دارم . در اولی کاربر مشخصات کشاورز رو انتخاب میکنه
در دومی مشخصات بار کشاورز انتخابی رو انتخاب میکنه و جزییات در سومی نمایش داده میشه .

خوب وقتی من Dataset جزییات رو به گزارش میفرستم فقط اونو نشون میده .
من میخوام بهمراه Dataset فیلد های مشخصات کشاورز و بار رو هم بفرستم تا اونها هم در گزارش چاپ بشن .

میتونم این کار رو از طریق جوین جدول ها انجام بدم ولی فکر میکنم چون این اطلاعات یکتا هستن در جوین بار اضافی به سیستم وارد میشه اگه روشی هست که من اطلاعات رو تو Xml بنویسم لطف کنید بگید.

choobin84
جمعه 09 شهریور 1386, 07:10 صبح
سلام

ClassLibrary1.Report_Class.GetPersonal("1");// <<<< این کد

[/code]

سلام. اول از کلاس مربوط به dll نمونه سازی کنید


classLibrary1.Report_Class rc=new ClassLibrary1.Report_Class();بعد، از rc استفاده کنید

rc.GetPersonal("1");

am_abbas65
جمعه 09 شهریور 1386, 14:48 عصر
مرسی امتحان میکنم ولی از راه XML مشکلم حل شده