PDA

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



akram
یک شنبه 28 بهمن 1386, 05:33 صبح
سلام
من میخواهم از دو تا view یا دو تا storeprocedure در یک گزارش استفاده کنم به طوریکه با توجه به اینکه فیلد مشترک دارند روی نمایش داده های هم تاثیری نداشته باشند یعتی ارتباط بینشون برقرار نشه. ایا امکانش هست؟i

sm
یک شنبه 28 بهمن 1386, 13:29 عصر
یعنی میخواین اول گزارش اولی و بعد دومی رو نشون بده ؟

akram
دوشنبه 29 بهمن 1386, 10:07 صبح
سلام
نه فقط یک گزارش که از دو جدول استفاده کنه.من مجبورم از روی چند تا جدول یک view بسازم که مجموع بعضی ستونها را بدست بیاره .از همون جداول view دیگری نیاز دارم که فیلدهای دیگه و همون فیلدها را که مجموع گرفتم (مقدار خودشون ]را انتخاب کنه وهردو view را میخوام در گزارش به کار ببرم .ولی crystall report قبول نمیکنه و میخواد که ارتباط بینشون را نشون بدم در نتیجه مقادیر sum که در view اول هست را تغییر میده .چه کار میتونم بکنم کلکی چیزی میشه به کار برد ؟؟

sm
دوشنبه 29 بهمن 1386, 13:03 عصر
شمامیتونین به راحتی با استفاده از TempTable مشکل رو حل کنین بدین ترتیب که توی SQL تمام مواردی رو که میخواین نمایش بدین بریزین توی یه جدول موقت و بعد اونو به گزارشتون Bind کنین.

موفق باشید

akram
سه شنبه 30 بهمن 1386, 18:30 عصر
میشه لطفا بیشتر توضیح بدین من توی استفاده از دستورات sql هم مشکل دارم
از لطفتون سپاسگزارم

محمد رضاپور
سه شنبه 30 بهمن 1386, 19:40 عصر
با سلام
دوست عزیز شما می تونید با استفاده از دستور Union بین Viewها ویا SPهای خودتون نوعی رابطه برقرار کنید که همه رکوردهای 2 تا View ویا SP نشون داده بشه، به شرطی که تعداد فیلدهای اونها با هم برابر باشه.
اگر تعداد فیلدهاتون برابر نیست، می تونید از فیلدهای مجازی که مقدار Null رو برمی گردونن استفاده کنید

(Select Sum(Quantity) As fl1,
'' As fl2
From spQnt)

Union

(Select '' As fl1,
Sum(Sale) As fl2
From spSale)

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

موفق باشید.

akram
دوشنبه 06 اسفند 1386, 13:38 عصر
ضمن تشکر
روشی که شما گفتید سطر های Select دوم را به اولی اضافه میکنه ولی من نیاز به اضافه شدن ستونها دارم تا بتونم از آنها در گزارشم استفاده کنم

محمد رضاپور
دوشنبه 06 اسفند 1386, 16:39 عصر
با سلام
متاسفانه سوال شما برای من خیلی گنگ و کلی هست و من متوجه نیاز شما نمی شم، لطفا اگر براتون مقدور هست، نمونه ای از اسکریپت View گزارش رو ارسال کنید تا متوجه نیاز شما بشیم.

ممنون و موفق باشید.

akram
دوشنبه 06 اسفند 1386, 18:06 عصر
ببینید من در واقع این راه حل را برای سند های حسابداری میخوام که باید برای اعداد درج شده در سند بر اساس اینکه بدهکار یا بستانکار هسند و همچنین براساس کد کل مربوطه مجموع را بدست بیارم(یعنی گروهبندی اول بر اساس فیلد بولین بدهکار /بستانکارو دوم بر اساس کد کل )
ولی در عین حال باید فیلدهای دیگری مثل کد های معین و تفضیلی ,شرح سند ,تاریخ و شماره سند و ... را هم انتخاب کنم چون در گزارش سند وجودشون الزامیه.
خوب مشکل من اینه که با انتخاب این فیلدها مجموع بدست امده خراب میشه یعنی چون مجبورم همه فیلدها را در گروهبندی ذکر کنم ( چون تمام فیلدهایی که تحت Aggregation قرار ندارند، باید الزاما در Group By شرکت کنند)طبیعتا محدوده گروهبندی انقدر کوچک میشه که به
یک رکورد میرسه و اصلا مجموعی نخواهیم داشت

تقریبا view های من به این صورت هستند
view1:
select a,b,c,d from table1
view2
select sum(c),sum(d) from table2 group by a,b
که a,b فیلدهای مشترک دو جدول هستند

محمد رضاپور
دوشنبه 06 اسفند 1386, 19:24 عصر
با سلام
چرا شما تاکید دارید که سرجمع حسابها حتما از طریق کدهای SQL محاسبه بشن، به نظر من اگر شما این کارها رو به عهده CR بذارید، مطمئنا جواب منطقی تری رو بدست خواهید آورد، چون من خودم هم برای انجام یه پروژه کوچیک حسابداری از همون روش شما استفاده کردم (یه فیلد عددی برای مبلغ حساب و یه فیلد بولیون برای تعیین بدهکار / بستانکار بودن حساب)، ولی انجام همه محاسبات (با تمامی شرایط و ضوابطی که برای من تعریف شده بود) رو با CR انجام دادم و خوشبختانه هم به نتیجه مطلوب رسیدم.

پیشنهاد می کنم که شما هم از همین روش استفاده کنید، چون دقیقا می دونید که چه تعداد رکورد به CR پاس شده و محاسبات رو اونجا انجام بدید.

اگر در انجام محاسبات با مشکلی مواجه شدید، خوشحال می شم که با همکاری دوستان دیگه پروژه شما به اتمام برسونیم.

موفق باشید.

akram
چهارشنبه 08 اسفند 1386, 14:05 عصر
با سلام
خدمتتون عرض شود که من هم درcr سعی کردم که جمع ها را بدست بیارم یعنی به عهده اون بگذارم ولی مشکل از همون جا پیدا شد و نتیجه گرفتم که باید مجموعم را در view های پشت گزارشم بدست بیارم چون مشکل من جمع نقل به صفحه بعد روی مبالغ بدهکار و بستانکاره که خودشون با فرمول sum بدست امده اند ,یعنی نهایتا در پایین صفحه باید روی اون اقلام که مجموع یک چیزهایی هستند مجموع بگیرم که cr نمیتونه اینکار را برام انجام بدهد!

akram
یک شنبه 12 اسفند 1386, 10:18 صبح
جناب رضا پور ضمن تشکر از توجه و راهنماییهاتون
یک تصویر از گزارش مورد نظر را برای شما ارسال میکنم. همانطور که ملاحظه می فرمایید کد حساب هزینه با کد 31 در این سند دارای مجموع بدهکار 355,859,073 است در خود کریستال ریپورت محاسبه شده است با دستور sum روی مقادیر جز, این حساب ,و در پایین صفحه برای نقل به صفحه بعد بایدمجموع مقادیر موجود در ستون بدهکار (یا بستانکار) که با sum در کریستال بدست امده اند را نشان دهم چون هنوز چند سطر اقلام آخرین حساب باقی مانده که در صفحه بعد دیده میشود مجموعی که در پایین صفحه دیده میشود برای نقل به صفحه بعد عبارت از مجموع مقادیر جزءای است که در صفحه جاری دیده میشود (در شکل ملاحظه میکنید عدد124,351,163 ) در حالیکه باید دو عدد موجود در ستون بدهکار را با هم جمع کندبرای همین تصمیم گرفتم که در دیتابیسم یک جایی این مجموع سر فصل حسابها را حساب کنم که در کریستال بتوانم با دستور sum آنها را بدست آورم .اگر متوجه مشکل شده اید خواهش میکنم که راهکاری اگر دارید ارائه فرمایید. باسپاس

akram
یک شنبه 12 اسفند 1386, 10:21 صبح
ببخشید مثل اینکه در پاسخ قبلیم فایلم ضمیمه نشده بود!