رفتن به مطلب
  • 0

تایع رندوم بدون تکرار


mashgholom
 اشتراک گذاری

سوال

سلامی دوباره به همگی دوستانم

اول از همه تشکر کنم از دوستان بابت زحماتشون *give_heart*

دوستان یه سوالی داشتم که راجبش تو انجمن هم بحثی نشده

ما یه دیتابیس داریم که مثلا 50 رکورد داره تو هر رکورد 5 فیلد قرار داره، توی برنامه هم 5 تا لیبل داریم حالا چطوری میتونیم با استفاده از تابع RND بگیم که هر دفعه به صورت تصادفی و بدون تکرار یه رکورد مثلا رکورد 30 بگیر و اطلاعات هر فیلد رو در لیبل مشخص شده قرار بده؟

اگه نتونستم خوب منظورم برسونم بگید که واضحتر بیانش کنم

با تشکر

  • پسندیدن 2
لینک ارسال
به اشتراک گذاری در سایت های دیگر

10 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

  • 0

ما یه دیتابیس دارم 2 تا رکورد داره با 5 تا فیلد به شکل زیر:

[table=width: 500]

[tr]

[td]مهران[/td]

[td]1[/td]

[td]2[/td]

[td]3[/td]

[td]4[/td]

[/tr]

[tr]

[td]مهدی[/td]

[td]5[/td]

[td]6[/td]

[td]7[/td]

[td]8[/td]

[/tr]

[/table]

توی اپ هم 5 تا لیبل داریم

لیبل 1 لیبل2 لیبل3 لیبل4 لیبل5

خب حالا میخوام وقتی اپ باز میکنم بره تو دیتابیس به صورت تصادفی یه رکورد انتخاب کنه مثلا الان به صورت تصادفی رکورد مهدی گرفت حالا برای

لبیل 1 = مهدی

لیبل 2 = 5

لیبل3 = 6

لیبل 4 = 7

لیبل 5 = 8

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 0

برای انتخاب یک رکورد تصادفی از این کد میشه استفاده کرد:


Cur1 = SQL1.ExecQuery("SELECT * FROM Table01")
Dim rndRow = Rnd(0,cur1.RowCount) As Int

ولی فکر میکنم شما گفتی میخوای رکورد تکراری بینشون نباشه ! یکم پیچیده تر میشه کار.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 0

<strong>خوب یکاری بکن<br>بیا واسه هر رکوردت یک آیدی اختصاص بده توی بانکت<br>بعد آیدی کل رکوردهارو بگیر و رندوم کن <br>به این صورت:</strong><br>

<span class="Apple-tab-span" style="white-space: pre;">	</span>Dim id As Int<br><span class="Apple-tab-span" style="white-space: pre;">	</span>id=cursor1.GetInt("ID")

<br><br><strong>این ID فیلدت توی بانکته و بیا بگو:</strong><br>

rnd(0,id)

<br><br><strong>بعد اون Cursor1 هم همون تمام فیلداته که قبلن آموزش داده شده<br>فقط میمونه کوئری هارو به لیبل ها نسبت بدی<br>انجان بده اگه نتونستی بگو بیشتر راهنمایی کنیم</strong>

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 0

ممنون داداشا

مجید جان من با دیتابیس به صورت حرفه ای کار نکردم میشه بیشتر راهنماییم کنی ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 0

سلام

خوشحال میشم بتونم کارتو راه بندازم

بنده این روشی رو که گفتمو توی سی شارپ انجام دادم به راحتی

چیزی که مهران گفت هم درسته

روشی که بنده واسه رندوم سازی استفاده کردم این بود که یک فیلد id توی دیتابیس واسه اطلاعاتم ساختم و اومدم شماره رکوردهارو می گرفتم و رندوم می کردم

توی بیسیک هنوز تست نکردم

بیسیک به دلیل محدودیت هایی که داره برنامه نویس باید بیشتر کاراشو با کدنویسی انجام بده

خودم باید این روشو تست می کنم اگه به نتیجه رسیدم توی انجمن آموزش خط به خطشو قرار میدم،تا وقتی شاید بچه ها جوابو پیدا کردن

  • پسندیدن 1
لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 0

سلام

من یک نمونه کد واس خودم نوشتم

اصن توصیه نمیکنم چون کد یکم در و داغونه و باید بهینش کرد

گفتم اینجا بزارم شاید یه چیزی ازش فهمیدی

من انشاالله کاملشو و بهینشو اگه عمری باقی موند آناده می کنم

Sub Globals	
Dim sql1 As SQL
Private family_lbl As Label
Private id_lbl As Label
Private name_lbl As Label

End Sub


Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("personal")
If File.Exists(File.DirInternal,"Personal_DB.db")=False Then
File.Copy(File.DirAssets,"Personal_DB.db",File.DirInternal,"Personal_DB.db")
End If
If sql1.IsInitialized=False Then
sql1.Initialize(File.DirInternal,"Personal_DB.db",True)
End If
load_rnd_data


End Sub


Sub load_rnd_data()
id_lbl.Text=""
name_lbl.Text=""
family_lbl.Text=""
cr=sql1.ExecQuery("SELECT * FROM private_info")
For i=0 To cr.RowCount-1
cr.Position=i
	Dim random As Int : random = Rnd(0,(cr.RowCount - 1)+1)
	Select random
	Case 1
	id_lbl.Text=random
	name_lbl.Text=cr.GetString2(1)
	family_lbl.Text=cr.GetString2(2)
	Case 2
	id_lbl.Text=random
	name_lbl.Text=cr.GetString2(1)
	family_lbl.Text=cr.GetString2(2)
	Case 3
	id_lbl.Text=random
	name_lbl.Text=cr.GetString2(1)
	family_lbl.Text=cr.GetString2(2)
	End Select
Next
End Sub



به امید پیشرفتمون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 0

ممنون نیما جان

انشاا... همیشه سلامت و موفق باشی

دستت دردنکنه خودمم حتما روش کار میکنم فقط این کاری که گرفتم تموم بشه راحت بشم خیلی خوبه.

بازم تشکر*give_rose*

  • پسندیدن 1
لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 0

عمادجان کد زیر رو آماده کردم، ببخش دیر شد. آخه خواب بعدازظهر خیلی خوبه *HOHO*

کارش اینطوریه که وقتی رو دکمه کلیک شه، تایمر شروع به کار میکنه و هر 1 ثانیه یک رکورد رو به طور تصادفی انتخاب و اطلاعاتش رو در 2 لیبل نمایش میده ! چون من کمی تنبلم حال نداشتم 5 تا فیلد درست کنم *vibre* اندکی کد رو تغییر بده و کار خودت رو راه بنداز.

برای تولید اعداد غیر تکراری از حلقه Do..While استفاده کردم *dance* برای چک کردن غیر تکراری بودن عدد از تابعی به نام isExist با کدهای زیر استفاده کردم:

Sub IsExist(targetList As List,targetValue As Int) As Boolean
    For Each val As Int In targetList
        If val = targetValue Then Return True
    Next
    Return False
End Sub

در Globals خودت هم این لیست رو برای ذخیره سازی اعداد استفاده شده تعریف کن:

    Dim used_Records As List

اون کد اصلی که تایمر هستش رو نمیذارم (هرچی بگی خودتی :دی) در سورس کد که پیوست کردم میتونی کدش رو ببینی ! *HOHO*

قیافه پایگاه داده *HOHO* (میخوام اسم فیلدها و رکوردها رو ببینی، 28 رکورد داره.) :

http://www.answercenter.ir/attachment.php?attachmentid=242&stc=1

رمز عبور: basic4android.org

جدا از شوخی، امیدوارم بهت کمک کرده باشم.

موفق باشی.

LoadDifferentRow-basic4android.org.rar

  • پسندیدن 5
لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 0

فدای این داداش مهران با این شوخی هاش دستت درد نکنه دادا واقعا ممنون

اره والا خواب ظهر خیلی میچسبه تیک هر چی هم بگی خودتیو خوب اومدی : دی تو جواب این میگم خیلی با معرفتی :)

بخدا هر چقدر از زحمات تو و بقیه دوستان تشکر کنم کافی نیست

خیلی خیلی ممنون باتشکر

*give_rose*

  • پسندیدن 1
لینک ارسال
به اشتراک گذاری در سایت های دیگر

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
 اشتراک گذاری

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...