ايران ويج

نسخه‌ی کامل: یه سوال در مورد دیتابیس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان
من دارم یه برنامه می نویسم که باید از داخل دیتابیس 10 شماره به صورت تصادفی انتخاب کنه و 2 تا نکته مهم که باید به کار ببریم:
1. نباید توش عدد 0 وجود داشته باشه
2. آخرین عدد هم انتخاب کنه
خودم یه چیزایی نوشتم اما هم هیچ جوره عدد آخر رو انتخاب نمی کنه و اینکه بعضی وقتها عدد 0 هم انتخاب می کنه.
باید چی کار کنم تا درست کار کنه؟؟؟؟
(۰۹-آذر-۱۳۸۸, ۱۹:۳۳:۵۴)toopdanlod نوشته است: [ -> ]سلام دوستان
من دارم یه برنامه می نویسم که باید از داخل دیتابیس 10 شماره به صورت تصادفی انتخاب کنه و 2 تا نکته مهم که باید به کار ببریم:
1. نباید توش عدد 0 وجود داشته باشه
2. آخرین عدد هم انتخاب کنه
خودم یه چیزایی نوشتم اما هم هیچ جوره عدد آخر رو انتخاب نمی کنه و اینکه بعضی وقتها عدد 0 هم انتخاب می کنه.
باید چی کار کنم تا درست کار کنه؟؟؟؟

سلام عزيزم.
اول تمام اعداد رو از ديتابيس بكش بيرون و بعدش از تابع rnd استفاده كني . شكل كلي:‌
کد:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
اگر بخواي يه عدد تصادفي بين 1 تا 100 انتخاب كني اين مثالشه :
کد:
Text1.Text = Int((100 * Rnd) + 1)
بعد از اينكه عدد تصادفي رو پيدا كردي انديس اون ليست كه از ديتابيس كشيدي بيرون رو انتخاب كن.
خوب پس شرط 1 كه گفتي صفر نباشه رو برات توضيح دادم و اگر بخواي 10 تا عدد تصادفي بگيري بزار تو يه حلقه For كه ميدونم بلدي و ديگه توضيح نميدم.
2- منظورت از آخرين عدد چيه ؟ منظورت آخرين ركورد هست ؟ خوب بايد move last record كني !!!!

بازم كامل تر توضيح بده شايد بتونيم بهتر كمك كنيم. Wink
موفق باشي
راستش به چندين روش ميشه حل كرد اين مسئله رو و هر روشي هم يه كدي ميخواد . اين توضيحاتي كه من دادم درهم ورهم هست خودم هم نفهميدم چي نوشتم . بزار يكيشو كه آسونه بگم :
1- ميتوني تمام ركورد ها رو از ديتابيس بخوني و بعد يكي يكي بريزي تو يك listBox همون وقت كه ميريزي كنترل كن كه اگر 0 هست كپي نكنه !!!! بعد يه حلقه بزار چندتا انديس تصادفي بزاره و مقاديرشو بردار + آخرين مقدار ركورد
ممنون از توضیحاتت اما یکم پیچوندی متوجه منظورت نشدم
نمی دونم چه جوری بیشتر برات توضیح بدم واسه همین برنامه رو می ذارم یه نگاه بهش بنداز.
منظورم از آخرین عدد اینه که اگه مثلاً توی دیتابیس 20 تا رکورد وجود داشته باشه هیچ جوره رکورد 20 رو انتخاب نمی کنه
(۰۹-آذر-۱۳۸۸, ۲۳:۵۰:۰۶)toopdanlod نوشته است: [ -> ]ممنون از توضیحاتت اما یکم پیچوندی متوجه منظورت نشدم
نمی دونم چه جوری بیشتر برات توضیح بدم واسه همین برنامه رو می ذارم یه نگاه بهش بنداز.
منظورم از آخرین عدد اینه که اگه مثلاً توی دیتابیس 20 تا رکورد وجود داشته باشه هیچ جوره رکورد 20 رو انتخاب نمی کنه

ُسلام عزيزم
من كدتو ويرايش كردم خوب شد Amaze :
کد:
Private Sub CmdStart_Click()
Dim Max As Integer
Max = Adodc1.Recordset.RecordCount - 1
     If Me.Height = 6000 Then
          Text1.Visible = False
          For i = 6000 To 3675 Step -1
               Me.Height = i
               DoEvents
          Next
     End If
     If List1.ListCount <> 0 Then
          For i = 0 To 8
               Randomize Time
               NumAcount(i) = Int((Max * Rnd) + 1)
               StrTemp = List1.List(i)
               If NumAcount(i) = StrTemp Then NumAcount(i) = Int((Max * Rnd) + 1)
          Next
          Adodc1.Recordset.MoveLast
          NumAcount(9) = Adodc1.Recordset.Fields(0)
     ElseIf List1.ListCount = 0 Then
          For i = 0 To 8
               Randomize Time
               NumAcount(i) = Int((Max * Rnd) + 1)
          Next
          Adodc1.Recordset.MoveLast
          NumAcount(9) = Adodc1.Recordset.Fields(0)
     End If
     List1.Clear
     For i = 0 To 9
          List1.AddItem NumAcount(i)
     Next
End Sub
آخرين مقدار خونه رو دستي پر كردم. متغير max هم برابر با تعداد خونه هاست.
اميدوارم مشكلت حل شده باشه.Wink

خدانگهدار
ممنون اون 2 تا مشکل حل شد اما یه مشکل دیگه ایجاد شده
هر بار که کلیک می کنیم اعداد تکراریش زیاده و اینکه نباید همیشه هم آخرین عدد رو چاپ کنه که اینو حلش می کنم فقط می منه اعداد تکراری که نمی دونم چی کارش کنم
(۱۰-آذر-۱۳۸۸, ۰۱:۵۵:۲۸)toopdanlod نوشته است: [ -> ]ممنون اون 2 تا مشکل حل شد اما یه مشکل دیگه ایجاد شده
هر بار که کلیک می کنیم اعداد تکراریش زیاده و اینکه نباید همیشه هم آخرین عدد رو چاپ کنه که اینو حلش می کنم فقط می منه اعداد تکراری که نمی دونم چی کارش کنم

سلام

کد:
If NumAcount(i) = StrTemp Then NumAcount(i) =StrTemp  +2

نظرت چيه ؟ 008
به هر حال نميشه كاريش كرد . اعداد كم هستن. ميشه ها اما دردسر داره. من بايد برم درس بخونم امروز امتحان دارم.
خدانگهدار