PDA

View Full Version : رکورد تکراری



sepelloo
یک شنبه 09 اردیبهشت 1386, 14:23 عصر
سلام لطفا منو توجیه کنید
من تازه کارم و در اولین گزارش می خوام که از جدول اعضا اسم و کد را نمایش بدهم و سپس تعداد خرید هر عضو را از جدول خرید
اینجوری
کد نام خرید
1234 علی احمدی 5
ولی مشکل اینجاست که اگه کسی 5 بار خرید کرده باشه 5 بار اسمش رو می نویسه
کد اعضاء هم کلید خارجی جدول خرید هستش
البته از RuningTotal استفاده کردم ولی جواب نداد
در ضمن برای تازه کارها هم اگه مقله یا کتاب خوب سراغ دارید معرفی کنید .
ممنون.

AmirTabari
یک شنبه 09 اردیبهشت 1386, 14:40 عصر
دوست عزیز در دستور Select مورد استفاده از Distinct استفاده کنید تا رکوردهای تکراری حذف شود با این صورت
Select distinct * from tablename

sm
یک شنبه 09 اردیبهشت 1386, 14:45 عصر
شما باید کوئریتون رو اصلاح کنید یا از Group توی کریستال استفاده کنید.
اگر کوئری رو اصلاح کنید بهتره... برای اینکار باید از Group by استفاده کنید.

(*.select tbl1.code , tbl1.name , count (tbl2
from tbl1 left join tbl2 on tbl1.code=tbl2.code
group by tbl1.code , tbl1.name

موفق باشید

sm
یک شنبه 09 اردیبهشت 1386, 14:46 عصر
دوستمون که گفتند از Distinct استفاده بشه، اینجوری چطور متوجه میشید که چندتا رکورد به ازای هر کاربر وجود داره ؟
طبق همون روشی که توی پست 3 توضیح داده شد، عمل کنید...

موفق باشید

sm
یک شنبه 09 اردیبهشت 1386, 14:54 عصر
دوستمون که گفتند از Distinct استفاده بشه، اینجوری چطور متوجه میشید که چندتا رکورد به ازای هر کاربر وجود داره ؟
طبق همون روشی که توی پست 3 توضیح داده شد، عمل کنید...

موفق باشید

sepelloo
یک شنبه 09 اردیبهشت 1386, 22:08 عصر
دوستان من کمی گیج شدم
من موقع تهیه گزارش با کریستال هیچ کوئری نمی بینم
در ضمن اگه گروپ هم درست کنم باز توی گروپ تعداد را تکرار کرده

sm
دوشنبه 10 اردیبهشت 1386, 08:50 صبح
شما اطلاعات رو از بانک چطوری به گزارش رد می کنید؟
کامل توضیح بدید تا دوستان راهنماییتون کنند.

sepelloo
دوشنبه 10 اردیبهشت 1386, 13:31 عصر
من یه DataSet توی برنامه درست کردم بوسیله ویزارد و تمام بانکم رو ریختم توی اون
حالا موقعی که گزارش جدید می سازم با ویزارد کریستال ریپورت و از گزینه استاندارد جلو می رم وجدولهایی رو که می خوام انتخاب می کنم و بعد فیلد ها رو بعد گزارش اماده است

sm
دوشنبه 10 اردیبهشت 1386, 13:43 عصر
شما میتونید به راحتی یه کوئری توی برنامه بزنید و اطلاعات رو بدست بیارید و بعد بصورت Dataset به گزارش رد کنید.
کوئریش هم همونیه که بالا براتون نوشتم.

موفق باشید

sepelloo
دوشنبه 10 اردیبهشت 1386, 14:14 عصر
آیا گزارش من متوجه میشه که قبلا از دوتا جدول اطلاعات را می خونده و حالا که من با کوئری براش می فرستم حکم یه جدول رو داره دچار اشکال نمیشه
و اینکه آیا امکان این هست که کوئری را که کریستال ریپرت خودش توسط ویزارد تهیه کرده رو اصلاح کرد

sm
سه شنبه 11 اردیبهشت 1386, 08:38 صبح
شما میتونید با استفاده از منوی Database داخل کریستال و گزینه Verify Database اطلاعات Update شده رو به کریستال معرفی کنید. حتی شما میتونید با استفاده از گزینه Set Location از همون منوی Database مسیر داده های کریستال رو عوض کنید. کافیه شما دیتاستتون رو اصلاح کنید یا اینکه یه دیتاست جدید بسازید و این دفعه تغییرات فوق رو از کریستال انجام بدید.
به راحتی امکان پذیر هست.

موفق باشید

sepelloo
سه شنبه 11 اردیبهشت 1386, 20:48 عصر
من تونستم کوئری را بنویسم
وقتی دیتابیس را با اون پر می کنم توی گزارشم فیلدی برای تعداد خریدها که از جدول دوم می خونم ندارم
یعنی من توی گزارشم فیلدهای نام و کد رو از جدول 1 گذاشتم

حالا چطور فیاد آخر را که تعداد خریدها د رجدول 2 است را در محیط designe اضافه کنم
تا موقع کوئری اجرا شد اون فیلد هم مقدار بگیره

sm
چهارشنبه 12 اردیبهشت 1386, 09:10 صبح
اگر توی اون کوئری که توی چندتا پست قبل اومده دقت کنید عبارت (*.Count (tbl2 رو می بینید، این قسمت همین عمل رو انجام میده و تعداد سطرهاییکه در جدول دوم بازای اون کد ایجاد شده است رو برای شما نمایش می دهد.

موفق باشید

sepelloo
چهارشنبه 12 اردیبهشت 1386, 12:41 عصر
یه سوال فنی
چه جور میشه چند تا textBox توی گزارش گذاشت
که موقع اجرای کوئری مقادیر فیلدی خاص رو نشون بدن
یعنی ما نتونستیم در محیطdesign این فیلد رو بسازیم

sm
چهارشنبه 12 اردیبهشت 1386, 12:53 عصر
شما میتونید TextBoxها رو از بانک پر کنید یا اینکه بصورت پارامتر از داخل برنامه به اونها مقدار رد کنید.
امیدوارم که درست متوجه شده باشم، درغیر اینصورت بیشتر توضیح دهید.

موفق باشید

sepelloo
چهارشنبه 12 اردیبهشت 1386, 14:29 عصر
من فیلدهای جدول اول را در محیط design از جدول اول انتخاب کردم
حالا برای تعداد خرید در محیط design فیلد متناسب را ندارم
و این فیلد در هنگام کوئری اضافه می شود
خوب حالا چطور باید اون رو نشون بدم

sm
چهارشنبه 12 اردیبهشت 1386, 14:41 عصر
فکر کنم شما کلا اشتباه کردید... یکبارکل مراحل رو توضیح میدم ... امیدوارم که مشکلتون حل بشه.
شما باید کوئریتون رو که شامل کل فیلدهایی میشود که میخواین توی گزارش نمایش دهید رو بسازید. یعنی توی Select کل ستونها را بهمراه تعداد کل خرید (*.Count db2) ذکر کنید. و در نهایت این کوئری را تحت یک نام مثلا test بعنوان یک View یا Stored Procedure ذخیره کنید.
حالا که کوئریتون آماده شد، برید توی کریستال و گزارش جدید رو شروع کنید. توی این مرحله اصلا با جدول کار ندارید، بلکه با View یا Stored Procedurی که ساختید باید کار کنید. در اینجا در حالت Wizard که جلو میروید، وقتی کانکشن برقرار شد، شما از قسمت View یا Stored Procedure، اونی رو که ساختید (test) انتخاب و از ستونهایش که یکی از آنها جمع خرید هست، در گزارش استفاده کنید.

موفق باشید

sepelloo
پنج شنبه 13 اردیبهشت 1386, 16:31 عصر
سلام
واقعا درست حدس زدید و من کانلا متوجه شدم
این یه سوال رو هم بپرسم
آیا میشه ویو یا گزارشی درست کرد که ابتدا اسم فرد مورد نظر را بنویسد و بعد خرید ها را لیست کند
یعنی ا اینجوری
علی احمدی
خرید 1 اردیبهشت 1200 تومان
خرید 2 خرداد 300 تومان

sm
جمعه 14 اردیبهشت 1386, 14:41 عصر
بله... شما وقتی دارید گزارش رو میسازید اگر بعد از اون مرحله ایکه جدول یا کوئری رو انتخاب کردین و توی مرحله بعد فیلدهای گزارش رو، در مرحله بعد میتونید بگویید روی برخی از این فیلدها Group ایجاد کند و همونی میشه که شما نیاز دارید.
اگر هم که گزارش رو ساخته اید از قسمت Group Expert میتونید این کار رو انجام بدید. منوی Report--->Group Expert

موفق باشید