مشاهده نسخه کامل
: پرینت اطلاعات (گزارش گیری) Access در #C
با عرض سلام
می خواستم ببینم به چه طرقی می توان در C# گزارش گیری کرد.
البته دیتابیس من اکسسه نه اس کیو ال
آیا با کریستال ریپورتم میشه گزارش گرفت؟ چطوری؟
فقط اگه ممکنه سریع. خیلی ممنون
نبود.....
می خواهم از اطالاعات دیتابیسم (اکسس) گزارش و بعد از اون پرینت تهیه کنم
با چه ابزاری و به چه صورتی می تونم این کارو انجام بدم؟
یکم فوریه. لطفا...
سلام
پیش خودمان باشد ... !
گمان کنم مشکل آنجا است که کسی حال جواب دادن به این سوالات را ندارد :31:
شما میتوانید از همان کریستال و یا سایر ابزارآلات گزارش گیری با هر بانک اطلاعاتی استفاده کنید.
به عنوان سمپل و نمونه کد میتوانید نگاهی به کد زیر بیاندازید:
support.h02.ir/fwlink/?LinkId=1003769457
برای کریستال...
پس از طراحی جداول بانک اطلاعاتی یک TypedDataSet به برنامه اضافه کرده و برنتامه را کامپایل میکنید و سپس یک گزارش کریستال هم اضافه میکنید و در ویزاد مربوطه آن TypedDataSet را به عنوان منبع اطلاعات مشخص کرده و گزارش را design میکنید.
در نهایت در برنامه با کمک دستور sql مطلوب و dataadapter یک dataset را پرکرده و تحویل نمونه گزارش میدهد.
به نمونه کد معرفی شده دقت کنید.
دمت گرم...
انشا الله همیشه با حال بمونی
دارم تست می کنم
اگه مشکلی داشتم دوباره همین جا مطرح می کنم
با تشکر
ضمن تشکر به خاطر پاسخگویی شما دوست عزیز
ظاهرا با VS2008 نوشتید که من امکان دیدن ندارم اما با جستجو هایی که کردم یه چیزایی دست گیرم شد و یه گزارشایی گرفتم الان 2 تا سوال دارم
1_ من به طریق Wizard کریستال ریپورت یه گزارش از دیتا بیس رابطه ای خودم ساخته ام. در دستورات SQL این ویزارد یک پارامتر اضافه کردم به نام ID که می خواهم قبل از نمایش پنجره ورود اطلاعات آن (یعنی عکس زیر) خودم مقدار آن را وارد کنم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
2_ دیتا بیس اکسس من رمز دار است و برای هر گزارش از من پسورد می خواهد البته در موقع شناساندن فایل دیتا بیس در ویزارد پسورد را یکبار وارد کرده ام اما برای نمایش هر گزارش هم دوباره پسورد می خواهد چگونه می توانم جلوی نمایش این پنجره را بگیرم؟ یا با ورود پسورد قبل از نمایش به صورت کد و یا اصلا عدم نمایش پنجره
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
ظاهرا با VS2008 نوشتید که من امکان دیدن ندارم
البته میتوانید تک فایلهای کدها را در Notepad یا VS مشاهده کنید، فرق خاصی ندارد.
یک پارامتر اضافه کردم به نام ID که می خواهم قبل از نمایش پنجره ورود اطلاعات آن (یعنی عکس زیر) خودم مقدار آن را وارد کنم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دیتا بیس اکسس من رمز دار است و برای هر گزارش از من پسورد می خواهد
شما در ویزارد خود کریستال را مستقیماً به دیتابیس وصل کرده اید، این کار برای کریستال چندان جالب توجه نیست و بعدً هم امکان تغییر در محتویات خروجی نمایشی در کریستال را سخت و شاید در برخی موارد غیر ممکن کند.
پیشنهاد میکنم مراحل گفته شده در پست 3 را مجدد انجام دهید و اول یک TypedDataSet بسازید و سپس از آن گزارش بسازید.
(بحرحال کریستال DataSet میسازد! چه بهتر که دیتاست را خودمان بسازیم تا نحوه جستجو و پرکردن و تغییر راحت ConnectionString و... هم دست خودمان باشد و همه با کدنویسی در دسترس باشند.)
اولا خیلی تشکر می کنم بابت جوابتون
اما باید بگم چون بار اولمه که می خوام از کریستال ریپورت استفاده کنم و تجربه کافی ندارم هنوز متوجه روشی که بیان کردید نشدم
مثلا اینکه TypedDataSet را چگونه باید ADD کنم
آیا منظورتون از "گزارش کریستال هم اضافه میکنید" CrystalReport Viewer است
چگونه "TypedDataSet را به عنوان منبع اطلاعات" معرفی کنم
همچنین آیا کد:
crystalreport rep = new crystalreport();
CrystalDecisions.Shared.ParameterDiscreteValue value = new CrystalDecisions.Shared.ParameterDiscreteValue();
value.Value = "Data";
rep.ParameterFields["ID"].CurrentValues.Add(value);
را باید در روش ذکر شده شما استفاده کنم؟
با تشکر
سلام
توضیح مرحله به مرحله از ابتدا:
پروزه را در VS باز کنید و فرمان زیر را بدهید:
Project->Add New Item->DataSet
سپس در همان حال که TypedDataSet خالبی جلویتان باز است فرمان زیر را بدهید
Data->Add->TableAdapter
در دیالوگ مربوط دکمه New Connection را کلیک کنید.
در دیالوگ جدید دکمه Change را کلیک کنید و Data Source را به مورد زیر تغییر دهید:
(Microsoft Access Database File (OLE DB
مسیر و رمز و... فایل mdb را هم وارد کنید و دیالوگ را OK کنید.
وارد دیالوگ قبلی خواهید شد که سه بار Next کنید:
Next->Next->Next
در این مرحله دستور SQL مورد نظر خود را برای پر کردن DataSet وارد کنید
مثلاً
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میتوانید از دکمه Query Builder هم کمک بگیرید.
دیالوگ را Finish کنید.
=====
کل پروژه تا این لحظه را Save کنید:
File->Save All
فرم TypedDataSewt و سایر فرمهای باز داخل VS را ببندید و پروزه را کامپایل کنید:
Build->Build Solution
یا
Project->Rebuild Solution
=====
حالا نوبت ساختا گزارش است:
Project->Add New Item->Crystal Report
دیالوگی ظاهر میشود که اجازه دهید همان Using the Report Wizard انتخاب باشد و OK کنید.
در فرم بعدی لیست درختی در سمت چپ میبینید که باید وارد شاخه زیر شوید:
Project Data->ADO.Net DataSet
و TypedDataSet تان را انتخاب کرده و با کمک دکمه فلش وسط ان را به لیست سمت چپ اضافه کنید.
دیالوگ را Finish کنید.
=====
حالا میتوانید گزارش خود را طراحی کنید و فیلدهای مربوطه را از toolbox گرفته وئ در محل مورد نظر و مطلوب گزارش رها کنید.
در نهایت هم کار را Save کنید.
=====
حالا دقیقاً میتوانید عین کدهای آن کد سمپل که معرفی کردم کار کنید و مثلاً برای چاپ گزارش، فرمان زیر را اجرا کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
=====
را باید در روش ذکر شده شما استفاده کنم؟
اگر خودتان دستی و به منظور خاصی پارامتری در گزارش کریستال بسازید با ان دستورات میتوانید مقدار دهی اش کنید ولی اگر منظورتان فیلتری برای دستور SQL-SELECT-WHERE بوده، دیگر نیازی به این کار نیست و پارامتر مذکور را به DataAdapter تان پاس میدهید که برای dataSet ساخته اید (یا خودکار ساخته شده.9
موفق باشید.
از این بهتر نمی شد دستتون درد نکنه
فقط... به بعضی از قسمتهای کد شما در پروژه من گیر می داد خوب بعضیهاش که تفاوت نام بود که لامانع اما مثلا
dbDA.Fill(ret.DataTable1, fieldname); فقط یک پارامتر ورودی می پذیرفت.
کد زیر، کد شما در پروژه منه جاهایی که تغییر دادمو مشخص کردم(CHANGE) اگه میشه یه نگاهی بکنید ببینید صحیحه
private void Print_Click(object sender, EventArgs e)
{
this.CreateNewReport(this.CreateNewDataSet(14)).Pr intToPrinter(1, false, 1, int.MaxValue);
}
private CrystalReport2(CHANGE) CreateNewReport(DataSet1 datasource)
{
CrystalReport2(CHANGE) ret = new CrystalReport2()(CHANGE);
ret.SetDataSource(datasource);
return ret;
}
private DataSet1 CreateNewDataSet(int fieldname)
{
DataSet1 ret = new DataSet1();
using (DataSet1TableAdapters.DataTable1TableAdapter dbDA = new DataSet1TableAdapters.DataTable1TableAdapter()(CHA NGE))
{
//dbDA.Connection.ConnectionString = CONNECTIONSTRING;
dbDA.Fill(ret.DataTable1)(CHANGE);
}
return ret;
}
البته به این کد گیر نمی دهد مشکل سر همان پارامتر هاست
فکر می کنم باید قبل از dbDA.fill پارامتر را مقدار دهی کرده باشیم چرا که در موقع اجرا به این خط اررو می دهد
No value given for one or more required parameters
"پارامتر مذکور را به DataAdapter تان پاس میدهید" در dbDA هم پارامتر یا تابعی مبنی بر معرفی پارامتر پیدا نکردم.
لازم به ذکر است که پارامتر من در اصل یک فیلتر(Where) ساده در دستور سلکتی است که در قسمت ویزادر به صورت [ID] (شبیه پارامتر در اکسس) نوشته ام
سلام
فقط یک پارامتر ورودی می پذیرفت
به خاطر این است که من در دستور SQL یک پارامتر داشتم، مثل این:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ولی احتمالاً شما دستورتان را بدون پارامتر داده اید، مثل این:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
طبیعتاً برای شما پارامتری جداگانه ای برای تغذیه SQL-SELECT نمیگیرد.
1- دستور SQL که برای SELECT نوشته اید چیست؟
2- ویزاد را فقط یک بار و با دستور SQL که خواهید گفت اجرا کردید؟ درست است؟
این کد Select منه (توضیح: سه جدول پرسنلی، سرویس، نوبت که در جدول نوبت، دو کد از جداول پرسنلی و سرویس می گیرد)
SELECT Nobat.ID, Nobat.Personely_ID, Nobat.Service_ID, Personely.Name, Personely.Famil, Services.NameService, Services.Zaman, Services.Hazine,
Nobat.Daryafti, Nobat.Zamane_Rezerv, Nobat.T_Rezerv, Nobat.Zamane_Nobat, Nobat.T_Nobat, Nobat.Sh_Nobat
FROM ((Personely INNER JOIN
Nobat ON Personely.ID = Nobat.Personely_ID) INNER JOIN
Services ON Nobat.Service_ID = Services.ID)
WHERE (Nobat.ID = [ID])
2- ویزاد را فقط یک بار و با دستور SQL که خواهید گفت اجرا کردید؟ درست است؟
متوجه منظورتون نشدم، از همون طریقی که گفتید dataset و... را ساختم به اون قسمتها هم که گفتم گیر میداد.
یه مشکل جدید:
من دیتا بیس برنامه را در شاخه bin\Debug ریخته ام و در ویزارد هم همانجا را آدرس دادم (زیرا علاوه بر استفاده توسط crystal report و Dataset آموزش داده شما از طریق OleDbConnection و OleDbDataAdapter هم برای انجام عملیات insert و update و... مورد استفاده قرار می گیرد)
مشکل اینجاست که در موقع اجرا یک نسخه از آن (دیتا بیس) در شاخه اصلی برنامه کپی شده و در هربار اجرای برنامه دیتا بیس از شاخه اصلی برنامه به شاخه bin\Debug کپی می شود لذا هرگونه تغییراتی در دیتا بیس از بین رفته و به حالت اولیه بر میگردد.
البته اگر از طریق exe ساخته شده برنامه در شاخه bin\Debug برنامه اجرا شود مشکلی پیش نمی آید. همچنین با تغییر خصوصیت Copy to Output directory دیتابیس ایجاد شده در دات نت به Copy if newerمشکل حل می شود .
می خواهم ببینم در موقع setup مشکلی به وجود نیاید (با توجه به اینکه هیچ تغییری در فایل دیتابیس موجود در شاخه اصلی برنامه به وجود نمی آید)
سلام
این کد Select منه
همانطور که گفتم شما برای ویزارد پارامتری مشخص نکرده اید!!!
ویزارد به کاراکتر "؟" برای پارامتر حساس است.
کد SQL صحیح در زمان اجرای ویزارد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مشکل اینجاست که در موقع اجرا یک نسخه از آن (دیتا بیس) در شاخه اصلی برنامه کپی شده
فایل را در پالت SolutionExplorer انتخاب کرده و در properties گزینه Copy to Output Directory را تغییر دهید.
موفق باشید.
99.9 درصد مشکلات پرینتم به کمک شما دوست عزیز حل شده...
به عنوان آخرین سوالات:
ظاهرا اگر بخواهم قبل از پرینت مستقیم پیش نمایشی از اون را ببینم باید از crystal report viewer استفاده کنم
اگه ممکنه یکم در این زمینه (Print Preview) و چگونگی پاس کردن پارامتر ها به آن اشاره کنید.
با تشکر...
ببخشید آیا کریستال ریپورت هم پولیه یعنی باید رجیستر بشه آخه بعضی مواقع که Report هامو باز میکنم عکس زیر رو نمایش می دهد:
[img=[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
اگر بالایی نمایش نداد لینک زیر را ببینید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با تشکر...
سلام
سیستم گزارش ساز کریستال مربوط به شرکت مایکروسافت نیست ولی نسخه محدودی از ان با هماهنگی شرکت تولید کننده اصلی تحت لایسنز VS نصب میشود.
دیالوگی که شما اشاره کردید فقط در حین طراحی در vs ظاهر میشود و استفاده برای enduser ها (کاربران نهایی) آزاد است و دیالوگی نمایش داده نخواهد شد.
در کل مشکلی وجود ندارد، شما میتتوانید دیالوگ مذکور را cencel کنید.
البته اگر نسخه های کامل را بخرید امکانات بیشتری خواهد داشت ( که در آن صورت هم اگر بخواهید پول دهید گزارش سازهای بهتری وجود دارد)
موفق باشید.
چطوری می تونم اطلاعات یک DataSet رو توی یک dataGridView بریزم
چطوری می تونم اطلاعات یک DataSet رو توی یک dataGridView بریزم
شما باید جدول مشخصی از دیتاست رو داخل datagridview برزید مثلا کد زیر اولین جدول دیتاست رو توی گرید ویو می ریزه
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یه سوال اینجا مطرح کردم
اگه زحمت نیست یه سری بزنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.