PDA

View Full Version : سیستم قرعه کشی



kahkeshan_25
شنبه 06 بهمن 1386, 08:04 صبح
با سلام.
من دارم یک سیستم قرعه کشی طراحی می کنم که باید یک تعداد رکورد موردنظر رو بصورت تصادفی از بین رکوردهای موجود در دیتا ست رو انتخاب و نمایش بده.
من به اینصورت عمل کردم که با استفاده از دستورات sql رکورد هایی که در شرط صدق می کنند با استفاده از یک دیتا اداپتور درون یک دیتاست قرار میدم.
حالا می خوام از بین این رکوردها چند رکورد(بعنوان ورودی) رو بصورت تصادفی انتخاب و نمایش بدم.ایا راهی وجود داره؟یا روش دیگه ای؟
لطفا راهنماییم کنید................
ممنون

hassan razavi
شنبه 06 بهمن 1386, 08:23 صبح
می تونید بر اساس تعداد رکوردهای شما در Dataset ، با Random عدد مورد نظرتون رو بسازید و سپس


Ds.Table["mytable].Rows[RNDvalue]["fieldname"].Tostring();

mamali_programer
شنبه 06 بهمن 1386, 08:25 صبح
سلام دوست عزیز
آیا از Dataset استفاده میکنی

dr_csharp
شنبه 06 بهمن 1386, 08:48 صبح
سلام . در تکمیل پاسخ دوست عزیزم جناب حسن رضوی :


private void GetRandom(int intCount,int Min,int Max)
{
for (int x = 1; x < intCount + 1; x++)
{
Random r = newRandom();
try
{
int i = r.Next(Min,Max);
}
catch (Exception err)
{
MessageBox.Show(err.ToString());
}
finally
{
r = null;
}
}
}


intCount تعداد قرعه های شما میشه ، Min کوچکترین index موجود شما و Max بزرگترین Index میشه !

kahkeshan_25
شنبه 06 بهمن 1386, 09:05 صبح
دوستان لطف کردید.....
بله اقای mamali_programer از دیتاست استفاده می کنم....
می خواستم رکورد هایی که بصورت رندوم انتخاب شده اند رو توی یک datagridview و یا crystalreportviewer (فرقی نمی کنه.....ولی ترجیحا crystalreportviwer ) نشون بدم اگه ممکنه کد کاملشو بزارید...............
بی نهایت mer30

mamali_programer
شنبه 06 بهمن 1386, 09:53 صبح
آقای dr_csharp کد خیلی خوبی گفتن
بدردتون نخورد ؟

sinpin
شنبه 06 بهمن 1386, 10:42 صبح
با سلام.
من دارم یک سیستم قرعه کشی طراحی می کنم که باید یک تعداد رکورد موردنظر رو بصورت تصادفی از بین رکوردهای موجود در دیتا ست رو انتخاب و نمایش بده.
من به اینصورت عمل کردم که با استفاده از دستورات sql رکورد هایی که در شرط صدق می کنند با استفاده از یک دیتا اداپتور درون یک دیتاست قرار میدم.
حالا می خوام از بین این رکوردها چند رکورد(بعنوان ورودی) رو بصورت تصادفی انتخاب و نمایش بدم.ایا راهی وجود داره؟یا روش دیگه ای؟
لطفا راهنماییم کنید................
ممنون
شاید بهتر باشه اینکار رو در کوئری یا SP انجام بدید. برای مثال کوئری زیر در هر بار اجرا 5 رکورد تصادفی از جدول Products در دیتابیس NorthWind رو برمیگردونه:

SELECT TOP 5 *
FROM Products
ORDER BY NEWID()

sabzehbzsa
چهارشنبه 25 مرداد 1391, 14:20 عصر
شاید بهتر باشه اینکار رو در کوئری یا SP انجام بدید. برای مثال کوئری زیر در هر بار اجرا 5 رکورد تصادفی از جدول Products در دیتابیس NorthWind رو برمیگردونه:

SELECT TOP 5 *
FROM Products
ORDER BY NEWID()
میشه بگین اگه بخوایم تعداد رکوردهای تصادفی رو به عنوان ورودی بدیم باید چکار کنیم

Farshid007
چهارشنبه 25 مرداد 1391, 14:55 عصر
Top :برای محدود کردن تعداد رکورد ها
order by newid():برای رندوم کردن سلکت

Farshid007
چهارشنبه 25 مرداد 1391, 14:56 عصر
یعنی باید TOP را از 5 به هر چی که می خواهید تغییر بدید

sabzehbzsa
چهارشنبه 25 مرداد 1391, 15:09 عصر
من میخوام کاربر تو برنامه تعداد برنده ها رو وارد کنه و این قرعه کشی براساس اون انجام بشه یعنی هر چند تا برنده که کاربر گفت انتخاب بشه

Farshid007
چهارشنبه 25 مرداد 1391, 15:14 عصر
خوب یه تکست باکس بزار بعد به جای اون عدد ،عدد وارد شده تو تکست باکس رو بده!

sabzehbzsa
چهارشنبه 25 مرداد 1391, 15:22 عصر
ممنون از کمکتون منظور من تو procedure هستش این کد منه
alter proc pcChossen
@Ex_ID int,
@Win_Num int,
@Start_Score int,
@End_Score int
as
begin
select top 1 percent * from tbl_Exam_Answer
where Ex_ID=@Ex_ID and @Start_Score<Point and Point<@End_Score
order by NEWID()
end
حالا اگه بخوام تو اینجا تعداد برنده ها یعنی Win_num رو به procedure بدم باید چجوری اینکارو بکنم این جور که مینویسم خطا میده
alter proc pcChossen
@Ex_ID int,
@Win_Num int,
@Start_Score int,
@End_Score int
as
begin
select top @Win_Num percent * from tbl_Exam_Answer
where Ex_ID=@Ex_ID and @Start_Score<Point and Point<@End_Score
order by NEWID()
end
امیدوارم متوجه منظورم شده باشید