(31-12-24, 01:07 AM)fireswored1 كتب : شكرا لحضرتك لكن ظهر مشكلة اخيرة وهيا الستدعاء الاجبات من نفس الرقم العشوائي هل لها حل
المثال التالي كامل يعمل جيدا وتمت تجربته
المطلوب
قاعدة بيانات أكسس
بها جدول أسمه Questions يحتوي على الأعمدة التالية
ID
Question حقل نصي وفيه ستضع الأسئلة
OptionA حقل نصي وفيه الأجابة الأولى
OptionB حقل نصي وفيه الأجابة الثانية
OptionC حقل نصي وفيه الأجابة الثالثة
OptionD حقل نصي وفيه الأجابة الرابعة
CorrectAnswer حقل نصي وفيه ستضع الأجابة الوحيدة الصحيحة مما سبق
أفتح مشروع جديد
form1
أضف الأدوات التالية
LabelQuestion
ButtonA
ButtonB
ButtonC
ButtonD
ثم أضف الكود التالي كاملا في form1
كود :
Imports System.Data.OleDb
Public Class Form1
Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=مسار_قاعدة_البيانات.accdb;"
Dim questions As New List(Of Question)()
Dim currentQuestionIndex As Integer = 0
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
LoadQuestions()
DisplayQuestion()
End Sub
Private Sub LoadQuestions()
Using connection As New OleDbConnection(connectionString)
Dim command As New OleDbCommand("SELECT * FROM Questions", connection)
connection.Open()
Dim reader As OleDbDataReader = command.ExecuteReader()
While reader.Read()
Dim q As New Question()
q.ID = reader("ID")
q.Text = reader("Question").ToString()
q.OptionA = reader("OptionA").ToString()
q.OptionB = reader("OptionB").ToString()
q.OptionC = reader("OptionC").ToString()
q.OptionD = reader("OptionD").ToString()
q.CorrectAnswer = reader("CorrectAnswer").ToString()
questions.Add(q)
End While
End Using
End Sub
Private Sub DisplayQuestion()
If currentQuestionIndex < questions.Count Then
Dim question As Question = questions(currentQuestionIndex)
LabelQuestion.Text = question.Text
Buttona.Text = question.OptionA
Buttonb.Text = question.OptionB
Buttonc.Text = question.OptionC
Buttond.Text = question.OptionD
Else
MessageBox.Show("انتهت الأسئلة!")
End If
End Sub
Private Sub Button_Click(sender As Object, e As EventArgs) Handles Buttona.Click, Buttonb.Click, Buttonc.Click, Buttond.Click
Dim selectedButton As Button = CType(sender, Button)
Dim selectedAnswer As String = selectedButton.Text
If selectedAnswer = questions(currentQuestionIndex).CorrectAnswer Then
MessageBox.Show("إجابة صحيحة!")
Else
MessageBox.Show("إجابة خاطئة! الإجابة الصحيحة هي: " & questions(currentQuestionIndex).CorrectAnswer)
End If
currentQuestionIndex += 1
DisplayQuestion()
End Sub
End Class
Public Class Question
Public Property ID As Integer
Public Property Text As String
Public Property OptionA As String
Public Property OptionB As String
Public Property OptionC As String
Public Property OptionD As String
Public Property CorrectAnswer As String
End Class
حتى الأن الفكرة تعمل بشكل جيد
عليك التعديل في التصميم على حسب رؤيتك
ولا تنسي تغيير مسار القاعدة في الكود
أتمنى أن أكون وفقت في الشرح