سوال عن توليد سجلات عشوائية من قاعدة البيانات دون تكرارها

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

default سوال عن توليد سجلات عشوائية من قاعدة البيانات دون تكرارها

مُساهمة من طرف فيجوال بيسك 6 في الأربعاء أكتوبر 25, 2006 10:26 am

السلام عليكم ورحة الله وبركاته

لدي سوال توليد حقل من قاعدة البيانات دون تكرار

مثلاً قاعدة بيانات بها خمسين سجل

الحقل الأول (( id ))

الحقل الثاني (( so ))

وأريد في زر الكوماند توليد في Label1 في كل ضغطه على الكوماند بسجل مختلف

بحيث يولد الخمسين سجل عشوائيه دون تكرار ويخبرني بإنتها السجلات في حال تم توليد

الخمسين سجل .

علماً تم وضع كود الإتصال بقاعدة البيانات ، وأيضاً تم تعبئة السجلات في الحقول

والحقل (( id )) يحمل أرقام متسلسة من 0 إلى 49

والحقل (( so )) يحمل النص المراد وضعه في Label1

أرجو أن يكون السوال واضح وكل عام وأنتم بخير

فيجوال بيسك 6
مراقب عام
مراقب عام

عدد الرسائل : 17
تاريخ التسجيل : 22/10/2006

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

default رد: سوال عن توليد سجلات عشوائية من قاعدة البيانات دون تكرارها

مُساهمة من طرف Admin في الأربعاء أكتوبر 25, 2006 3:11 pm

أخي أولا اشكرك على سؤالك

يوجد اكثر من طريقة لحل هذا السؤال

ولكنني اعتمدت على الطريقة التالية لأنها لا ترتكز على شروط معينة في خصائص الجدول الذي في قاعدة البيانات

وهذه الطريقة تصلح في اي وقت


الكود:
'انا استخدمت في هذا المثال طريقة فتح قاعدة البيانات بإستخدام الكائن
'ado 3.6
'تستطيع عمل رفرنس لهذا الكائن من
'project>references > Microsoft Dao 3.x object library
'هذا الكود في الجنرل
Dim Randtmp(49) As Integer
Dim RanNo() As Long
Dim b As Integer
Private Sub Command1_Click()
'هذا الكود في زر الأمر
Dim db As Database
Dim rs As Recordset
If b = 49 Then
MsgBox "تم الوصول إلى آخر سجل"
Exit Sub
End If
'استدعاء كود تكوين ارقام عشوائية
If Randtmp(0) = 0 And Randtmp(1) = 0 Then
RandomizeNumbers 0, 49
For i = 0 To 49
Randtmp(i) = RanNo(i)
Next i
End If
'''''''''انتهاء تكوين الأرقام العشوائية
'استدعاء السجلات حسب الإرقام التي تم تكوينها لنظمن عدم تكرار استدعاء السجل
Set db = OpenDatabase(App.Path & "\test.mdb")
Set rs = db.OpenRecordset("Table1")
rs.Move Randtmp(b)
Label1.Caption = rs(0)
Label2.Caption = rs(1)
List1.AddItem rs(0)
rs.Close
db.Close
b = b + 1
End Sub
'طبعاً هذا الكود لتكوين ارقام عشوائية حسب الرغبة طبعاً دون تكرار
Private Sub RandomizeNumbers(ByVal iFrom As Integer, ByVal iTo As Integer)
ReDim RanNo(iFrom To iTo)
For i = iFrom To iTo
RanNo(i) = i
Next i
Randomize (Timer)
For i = iFrom To iTo
j = CInt((iTo - iFrom) * Rnd + iFrom)
tmp = RanNo(i)
RanNo(i) = RanNo(j)
RanNo(j) = tmp
Next i
End Sub

_________________
إذا أعجبك موضوع من مواضيعي فلا تقل شكـراً ...
بل قل الآتـي ::
اللهم اغفر له ولوالديه ولزوجته وابنائه ولأخوانه واخواته ولسائر المسلمين ماتقدم من ذنبهم وما تأخر..
وقِهم عذاب القبر وعذاب النار..
و أدخلهم الفردوس الأعلى مع الأنبياء والشهداء والصالحين ..
واجعل دعاءهم مستجاب في الدنيا والآخرة ..
اللـهم آميـن..اللـهم آميـن..اللـهم آميـن..

اخوكم جاد القرعان
الأردن- الطفيلة
jadquraan@yahoo.com
jad_quraansoft@hotmail.com
00962777765709
avatar
Admin
jadquraan
jadquraan

عدد الرسائل : 125
العمر : 34
تاريخ التسجيل : 19/10/2006

معاينة صفحة البيانات الشخصي للعضو http://jad4vb.lightbb.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

default رد: سوال عن توليد سجلات عشوائية من قاعدة البيانات دون تكرارها

مُساهمة من طرف فيجوال بيسك 6 في الأربعاء أكتوبر 25, 2006 5:10 pm

أخي جاد القرعان أشكرك على المبادره الطيبه

والحقيقه انا كنت عامل الكود بس بطريقة متعبة جداً

ولكن أختصرت لي الكود فلك جزيل الشكر والتقدير

وأتمنا من كل قلبي إنجاح المنتدى ليأخذ مكانه بين المنتديات الخاصه بالبرمجة

تحياتي ،، ولي عوده بمشاريع قريباً سوف تنفع المنتدى بمشيئة الله سبحانه وتعالى

فيجوال بيسك 6
مراقب عام
مراقب عام

عدد الرسائل : 17
تاريخ التسجيل : 22/10/2006

معاينة صفحة البيانات الشخصي للعضو

الرجوع الى أعلى الصفحة اذهب الى الأسفل

default رد: سوال عن توليد سجلات عشوائية من قاعدة البيانات دون تكرارها

مُساهمة من طرف Admin في الأربعاء أكتوبر 25, 2006 5:18 pm

حياك الله اخي

انا هنا للخدمة
avatar
Admin
jadquraan
jadquraan

عدد الرسائل : 125
العمر : 34
تاريخ التسجيل : 19/10/2006

معاينة صفحة البيانات الشخصي للعضو http://jad4vb.lightbb.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى