PDA

View Full Version : آمارگیری



Moh1361sen
دوشنبه 14 آبان 1386, 13:54 عصر
با سلام خدمت دوستان
من یک برنامه دارم و میخوام به ازای مقادیری که از Combo Box در داخل بانک اطلاعاتی ذخیره می‌شود در پایان آمارگیری انجام بدهم به طور مثال تفکیک جنسیت، یا وضعیت تحصیلی افراد؛ با ذکر این مسئله که بانک اطلاعات با پایگاه داده اکسس طراحی شده.

ghabil
دوشنبه 14 آبان 1386, 16:50 عصر
توضیحاتت که ناقصه ولی فکر میکنم منظورت استفاده از Group By هست. یعنی باید نتیجه Selectت رو با فیلد مورد نظر گروه بندی کنی....

dkhatibi
چهارشنبه 16 آبان 1386, 06:59 صبح
یا برای بعضی فقط Select با Where و نام شرط مورد نظر. فیلدنان و نام احنمالا در Combo مشخص شده است.

Select name,familyname from table where sex=...

Moh1361sen
چهارشنبه 16 آبان 1386, 07:58 صبح
توضیحاتت که ناقصه ولی فکر میکنم منظورت استفاده از Group By هست. یعنی باید نتیجه Selectت رو با فیلد مورد نظر گروه بندی کنی....

اگر ممکن هست بگید چه اطلاعاتی نیاز هست تا راهنمایی شما کاملتر باشه
ضمنا اگه نمونه آماده هست لطف کنید اعلام کنید تا بتونم استفاده کنم
با تشکر

ghabil
شنبه 19 آبان 1386, 01:41 صبح
مثلا این تعداد افراد رو به تفکیک مدرکشون بهت میده :(ار فیلد edu_State نشانگر وضعیت مدرک باشه )


Select edu_State, Count(Key_Field) from TableName group by edu_State

یک جواب اینطوری مثلا :
دیپلم 12
لیسانس 20
دکترا 5

SYNDROME
شنبه 19 آبان 1386, 06:06 صبح
اگر ممکن هست بگید چه اطلاعاتی نیاز هست تا راهنمایی شما کاملتر باشه
ضمنا اگه نمونه آماده هست لطف کنید اعلام کنید تا بتونم استفاده کنم

روشی که دوستمان در بالا گفت بهترین روشه برای آمار گیری.
اگر هم بخواهی از روش دیگری استفاده کنید باید کل بانک را رکورد به رکورد پیمایش کنی و یک متغییر برای تعداد زنها و یک متغییر برای تعداد مردها در نظر بگیری و با توجه به شرط به متغییرهای مورد نظر یک واحد اضافه کنی.


VMale := 0;
VWoman := o;
While Not ADO.EOF Do
Begin
IF ADO.FielByName('Sex').Asstring = 'Male'
Inc(VMale)
Else
Inc(VWoman);
ADO.Next;
End;

موفق باشید

ghabil
شنبه 19 آبان 1386, 21:15 عصر
روشی که دوستمان در بالا گفت بهترین روشه برای آمار گیری.
اگر هم بخواهی از روش دیگری استفاده کنید باید کل بانک را رکورد به رکورد پیمایش کنی و یک متغییر برای تعداد زنها و یک متغییر برای تعداد مردها در نظر بگیری

فکر میکنم منظورت اینه که بگی این روش چقدر بد و غلط هست و یک وقت کسی به فکرش نرسه که بجای استفاده از aggregate های efficient دیتابیس بخاطر اینکه به خودش زحمت یادگرفتنشون رو نده از این روش بد استفاده بکنه.

Moh1361sen
یک شنبه 20 آبان 1386, 08:29 صبح
مثلا این تعداد افراد رو به تفکیک مدرکشون بهت میده :(ار فیلد edu_State نشانگر وضعیت مدرک باشه )


Select edu_State, Count(Key_Field) from TableName group by edu_State

یک جواب اینطوری مثلا :
دیپلم 12
لیسانس 20
دکترا 5
با تشکر
فکر می‌کنم روشی که شما توضیح دادید منطقی تر و کاربردی تر باشه.

SYNDROME
یک شنبه 20 آبان 1386, 14:48 عصر
فکر میکنم منظورت اینه که بگی این روش چقدر بد و غلط هست و یک وقت کسی به فکرش نرسه که بجای استفاده از aggregate های efficient دیتابیس بخاطر اینکه به خودش زحمت یادگرفتنشون رو نده از این روش بد استفاده بکنه.
نه دوست عزیز
در بعضی از مواقع اطلاعات داخل بانک نیست که بتوان با یک Select به جواب رسید.
موفق باشید

ghabil
یک شنبه 20 آبان 1386, 20:38 عصر
با سلام خدمت دوستان
من یک برنامه دارم و میخوام به ازای مقادیری که از Combo Box در داخل بانک اطلاعاتی ذخیره می‌شود

گاهی اوقات هم ممکنه اصلا اطلاعات نباشه بخواهیم بخواهیم اس ام اس بفرستیم ، خب اون موقع باید از یک روش دیگه استفاده کنیم ، ولی جواب این سوال استفاده از aggregate بود و بس، قصد بحث هم ندارم ولی وقتی میاید زیر یک سوال جوابی میدهید که به این سوال ربطی نداره و اگر دیتابیسی نبود باید ازش استفاده میشد و اگر های دیگر ، چون این اگر ها رو نمینویسید فرد سوال کننده رو گیج میکنید یا به استفاده از یک روش غلط راهنمایی میکنید ، فکر این رو هم نمیکنید که اون الان نگاه میکنه مثلا میبینه یک کد آماده نوشته شده هست همون رو میزاره تو برنامش ، بعد پس فردا که بخواد یک امکان دیگه به برنامش اضافه کنه یا تعداد رکوردهاش بره بالا و سرعت برنامش افت شدید بکنه و صدای مشتریش در بیاد ، یا پدرش در بیاد تا تغییرات رو اعمال کنه، بیچاره نمیفهمه از کجا میخوره و اگر هم بفهمه اون موقع نه شما نه خودش هیچ کمکی نمیتونید بکنید.
روی این صحبتم با شما نیست با همه دوستانیه که به قصد خیر خواهی فکر میکنند اگر زیر هر پستی یک جواب ندهند مدیون میشند : وقتی به فکر اضافه کردن تعداد پستهاتون هستید به فکر عاقبت اون کسی که ممکنه گیجش بکنید و به راه غلط بندازیدش هم باشید

Moh1361sen
دوشنبه 21 آبان 1386, 10:25 صبح
Select edu_State, Count(Key_Field) from TableName group by edu_State


سلام من از دستور بالا تو Access استفاده کردم و جواب داد ولی توی محیط Delphi پس از استفاده از این دستور از مقدار (Count(Key_Field ایراد گرفت .آیا باید از فرمت دیگری استفاده کنم؟ لطفا راهنمایی کنید؟

SYNDROME
دوشنبه 21 آبان 1386, 17:16 عصر
[quote=Moh1361sen;419833]
ولی توی محیط Delphi پس از استفاده از این دستور از مقدار (Count(Key_Field ایراد گرفت [/
quote]
پیغام خطای را بنویسید؟
موفق باشید

Moh1361sen
سه شنبه 22 آبان 1386, 14:21 عصر
با سلام
بالاخره تونستیم در داخل دلفی هم به اون چیزی که می‌خواهیم دست پیدا کنیم .


Select Count(Sex) as [jensiat], (Sex) as [Amar]




From Employ

where Sex=man
or
Sex=woman
Group by sex


فقط یک مشکل در زمان نمایش این آمار و اطلاعات در برنامه مشکلی وجود ندارد و می‌توان به راحتی آن را در یک دی‌بی‌ گرید نمایش داد.
ولی اگر بخواهیم در Qreport هر اطلاعات را نمایش دهیم مجبورم برای هر عنوان یک AdoQuery بنویسم.

ghabil
سه شنبه 22 آبان 1386, 20:42 عصر
دیگه Where نمیخواد که !
چه فرقی داره ؟!! چرا میگی باید به ازای هرکدوم یک Queryبنویسی؟!!

Moh1361sen
چهارشنبه 23 آبان 1386, 10:45 صبح
با سلام
خوب من میخوام هر اطلاعاتی رو جداگانه داشت باشم.
راستی چرا دیگه به Where احتیاجی نیست
با تشکر

ghabil
چهارشنبه 23 آبان 1386, 13:02 عصر
خب جداگانه داشته باش... منظورت اینه که میخوای ریز هرکدوم از گروه ها را هم داشته باشی؟

مگر برای Sex حالتی بجز مرد و زن هم هست که روش شرط گذاشتی؟!