سلام
در اينجا سعي مي كنم يك آموزش اجمالي بدم. اميدوارم براي دوستان مفيد باشه
ما 2 تا جدول داريم كه مي خواهيم تو كريستال ريپورت بياريم
جداول ما به شرح زير است:
article : code * name * unit
buy : number * article_code * buy_count * price
حالا مي خواهيم اين 2 را وارد كريستال كنيم و يك گزارش بر اساس كالا بگيريم و در گزارشمون كد كالا را از كاربر بگيريم و بر اساس آن كد شماره فاكتور ( number ) ، نام كالا (name) ، واحد كالا ( unit ) ، مقدار خريد ( buy_count ) ، قيمت ( price ) را نشون بديم.
براي اينكار تو اون صفحه add command را مي زنيم. و يك پارامتر به نام article_code و با نوع number و با مقدار پيش فرض 1 ايجاد مي كنيم.
بعد كوئري زير را مي نويسيم:
SELECT buy.number, buy.article_code, buy.buy_count, buy.price, article.name, article.unit
FROM article INNER JOIN buy ON article.code = buy.article_code
WHERE buy.article_code = {?article_code};
بعداً گزارشمون را به صورت دلخواه فيلدهاشو مي چينيم
تا اينجاي كار تموم است
حالا بايد بريم سراغ برنامه
در برنامه يك crystal report document روي صفحه مي زاريم ( در اينجا به اسم crystal1 )
با پراپرتي FileName آدرس و نام فايل كريستالي كه ساختيم رو مي ديم.
crystal1.FileName = Application.StartupPath & "\crystal.rpt"
crystal.rpt نام فايل كريستالي است كه ساختيم
حالا بايد آدرس بانك رو بهش بديم ( در اينجا بانك access مي باشد ولي sql هم مي تونه باشه )
crystal1.DataSourceConnections.Item(0).SetConnecti on(Application.StartupPath + "\crystal.mdb", "", False)
در اينجا crystal.mdb نام بانكمون هست.
نكته: اينجا فقط دادن آدرس بانك كافيه و نيازي نيست كه query بهش بديم. زيرا قبلاً تو كريستال query را نوشتيم و خودش نتيجه را بر مي گرداند.
البته مي تونيم يك سري مجموعه ركورد كه در داخل datatable هست هم بدهيم
حالا نوبت پاس دادن پارامترها مي باشد.
crystal1.SetParameterValue("article_code", Val(TextBox1.Text))
تا اينجاي كار تموم است.
حالا يك عدد crystalreportviewer روي فرم مي ذاريم براي نمايش گزارش و اينطوري به crystal1 نسبتش مي ديم:
CrystalReportViewer1.ReportSource = crystal1
و حالا گزارش پخ
فايل هاش رو هم تو ضميمه گذاشتم
اين پروژه كه گذاشتم با 2008 و vb هستش اگه C# هم خواستي بگو بذازم