PDA

View Full Version : استفاده از چند جدول در گزارشگیری



yaserzare
پنج شنبه 08 آذر 1386, 00:31 صبح
من از اطلاعات چند جدول میخواهم گزارش بگیرم
مثلا من یک جدولی با فیلدهای ( کد کالا,تعداد کالا) که نام این کالا بر اساس این کد در جدول دیگری با فیلدهای (کد کالا,نام کالا) ذخیره شده است . وقتی که این جدول ها را به CrystalReport اضافه میکنم خود به خود بین آنها لینک بر قرار میشود .

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

من فکر میکنم مشکل از Link Option باشه چون وقتی اونا دستکاری میکنم یه تغییراتی داده میشه ولی اطلاعات را به صورت کامل نشان نمیده.

اگر کسی در مورد گزینه های LinkOption چیزی میدونی آن را توضیح بده (ممنون)

sm
پنج شنبه 08 آذر 1386, 07:27 صبح
شما باید لینک بین این دو جدول رو کد کالا قرار بدین که البته باید نوع هر دو یکی باشه.
بعد هم فیلد نام کالا رو به گزارشتون اضافه کنین.
میتونین یه Command هم بنویسین و توی اون فیلدهاتون رو Select کنین.

موفق باشید

yaserzare
پنج شنبه 08 آذر 1386, 09:59 صبح
لینک بین جداول کد کالا هست و نوع آنها هم یکی است

من وقتی توی Link Option گزینه inner Join را انتخاب میکنم اصلا اطلاعاتی نشان نمیده ولی وقتی left outer join را انتخاب میکنم اطلاعات را نشان میده(کد کالا و نام کالا) ولی اطلاعات فیلد نام کالا(که از جدول دیگه است) را نشان نمیده.

sm
پنج شنبه 08 آذر 1386, 12:09 عصر
خوب درستش هم همینه
فیلدی که توی یکی از جداول هست توس اون یکی نیست... حتی میتونین Right Join هم استفاده کنین.
فکر کنم شما با دستورات SQL آشنا نیستین!!!
ابتدا به بخش بانک های اطلاعاتی مراجعه کنین.

موفق باشید

yaserzare
پنج شنبه 08 آذر 1386, 12:26 عصر
خوب اگه درستش همینه پس چرا جواب نمیده.

sm
پنج شنبه 08 آذر 1386, 12:44 عصر
عرض کردم خدمتتون
به این دلیل برخی رو میاره و بقیه رو نمیاره که اون کلید باید در هر دو جدول وجود داشته باشه.
اگه SQL Server دارین توی Help دنبال انواع Joinها بگریدن، مطالب خوبی دستگیرتون میشه
یا اینکه توی بخش SQL همین سایت هم مطالب مفیدی وجود داره

موفق باشید

yaserzare
جمعه 09 آذر 1386, 13:01 عصر
همه آن چیزهایی که شما میگید برقراره و من تمام روشهای join را امتحان کردم ولی این دستورات در QA جواب میده ولی هنگام گزارشگیری فقط اطلاعات یک جدول را نشان میده.

ممنون از اینکه به تاپیک های من جواب میدهید.

sm
شنبه 10 آذر 1386, 07:41 صبح
1- چک کنین ببینین تیک مربوط به Save With Data توی گزارشتون فعال نباشه!
2- میتونین همون Select رو توی یک Command‌بنویسین، بجای اینکه از جداول استفاده کنین.

موفق باشید

yaserzare
یک شنبه 11 آذر 1386, 10:36 صبح
من از Crystal Report خود VS استفاده میکنم ( آیا اینجور گزینه ای داره اگه داره توی کدام قسمت است)

در ضمن از روش دومی هم استفاده کردم بازم همین مشکل را داره.

sm
یک شنبه 11 آذر 1386, 12:33 عصر
یجای کار رو دارین اشتباه انجام میدین.
اگه ضروریه میتونین برام بفرستین یا اینجا قرارش بدین.

موفق باشید

yaserzare
یک شنبه 11 آذر 1386, 20:29 عصر
این کد نویسی که انجام داده ام

"CrystalName = "\CrystalLostProduce.rpt
"tableName = "lostproduce

MainForm.SqlCommand = "select * from lostproduce inner Join Produces On "LostProduce.ProduceCode=Produces.ProduceCode
PrivateFunction fncGetData(ByVal Sqlcommand AsString, ByVal TableName AsString
As DataSet
(Dim objDataAdapter AsNew SqlDataAdapter(Sqlcommand, pc.ObjConnection
Dim objdataset AsNew DataSet
(objDataAdapter.Fill(objdataset, TableName
Return objdataset
EndFunction
PrivateSub MainReport_Load(ByVal sender AsObject, ByVal e As System.EventArgs)
HandlesMe.Load
Dim strReportPath AsString = GetCurrentDirectory()
If strReportPath.Substring(strReportPath.Length - 9) = "bin\Debug"Then
(strReportPath = strReportPath.Substring(0, strReportPath.Length - 10
EndIf
strReportPath &= MainForm.CrystalName

Dim rptEmployee AsNew CrystalDecisions.CrystalReports.Engine.ReportDocum ent
(rptEmployee.Load(strReportPath
(Dim dstData As DataSet = fncGetData(MainForm.SqlCommand, MainForm.TableName
(rptEmployee.SetDataSource(dstData
CrystalReportViewer1.ReportSource = rptEmployee

endSub

و در مراحل Crystal Report دو جدول lostProduce (جدولی که کد کالا در آن قرار دارد) و Produces(جدولی که کد کالا با نام کالا در آن قرار دارد) را به آن اضافه کرده

و فیلدهای producecode که در دو جدول قرار دارد به یکدیگر link شده است
و خصوصیت لینک آن left outer join است.

خیلی ضروریه (با تشکر فراوان)

sm
یک شنبه 11 آذر 1386, 21:43 عصر
دوست عزیز شما از دیتاست استفاده کردین و توی کدنویسیتون inner join کردین و توی کریستال میگین left join کردین!!!
این روشتون مشکل داره
یکار بکنین... این select رو توی بانکتون بزنین ببینین جواب مدنظرتون رو میده؟
بعد ازش استفاده کنین.

موفق باشید

yaserzare
یک شنبه 11 آذر 1386, 21:52 عصر
من از تمام روشهای join استفاده کردم جواب نمیده

منظور از بانک چیه(اگر منظورتون QA است) در آن جواب میده.

firoozi90
چهارشنبه 25 مرداد 1391, 17:15 عصر
از دوستان گرامی میشه یه کمک کنید و این تایپیک رو به سرانجام برسونیم
استفاده از چند جدول در یک گزارش با کریستال ریپورت
(http://barnamenevis.org/showthread.php?356305-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%86%D9%86%D8%AF-%D8%AC%D8%AF%D9%88%D9%84-%D8%AF%D8%B1-%DB%8C%DA%A9-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%D8%A8/page2)