منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] امر الاختيار العشوائي - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40)
+--- قسم : قسم أسئلة قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=41)
+--- الموضوع : [سؤال] امر الاختيار العشوائي (/showthread.php?tid=535)



امر الاختيار العشوائي - العزابي - 13-10-13

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

اخواني أنا لدي برنامج اختبارات . وامر الاستعلام العشوائي لدي هاكذا

كود :
SELECT      QuestionID, Question, AnswerA, AnswerB, AnswerC, AnswerD, CorrectAnswer
FROM          EntranceQuestion
ORDER BY rnd(QuestionID)

ولكن تكمن المشكلة في انه عند الضغط على الفورم يعيد نفس التكرار . مثل ان يبداء من
7
2
9
1
6

وانا اريده ان يتغير في كل مرة عند الضغط على الفورم . مالحل السهل لهذه المهمة بارك الله فيكم


RE: امر الاختيار العشوائي - @@أبورائد@@ - 13-10-13

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

جرب هذا في الجملة
كود :
ORDER BY NEWID()

وإذا ما نفعت استغل هذه الدالة لتعطيك مصفوفة بين رقمين عشوائية بدون تكرار
ومن الناتج أعرض الصفوف بناء على الأرقام العشوائية في المصفوفة
كود :
#Region " RangeRND (minValue As Integer, maxValue As Integer) As Array "
    Public Function RangeRND(ByVal minValue As Integer, ByVal maxValue As Integer) As Array
        If (minValue < 0) Or (minValue >= maxValue) Then Return Nothing
        minValue += 1 : maxValue += 1
        Dim mArray(maxValue - minValue) As Integer
        For i = 0 To (maxValue - minValue)
[lp]:       Randomize()
            Dim mValue As Integer = CInt(Int((maxValue * Rnd()) + minValue))
            For Each r In mArray
                If mValue = r Or mValue > maxValue Then GoTo [lp]
            Next
            mArray(i) = mValue
        Next
        For i = 0 To mArray.Length - 1
            mArray(i) -= 1
        Next
        Return mArray
    End Function
#End Region


وطيقة استخدامها كالتالي
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    ' mDataTable بعد تعبئة

    Dim arr() As Integer = RangeRND(1, 15)

    For Each i As Integer In arr
        Me.ListBox1.Items.Add(mDataTable.Rows(i).Item("name"))
    Next

End Sub


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


RE: امر الاختيار العشوائي - العزابي - 13-10-13

الف شكر لك جاري التجربة .

تحياتي