Мой друг сказал мне, что мне нужно установить свой предварительный идентификатор как varchar и сохранить предварительное условие, разделенное запятой?
Это то, что у меня есть сейчас.
мне удается получить и проверить предварительную базу идентификатора на предмете id
но я могу хранить и проверять только одно предварительное условие, потому что я сохраняю его как целое число, но теперь я изменяю его на varchar и разделяю другое предварительное условие запятой. Смотрите мою базу данных
![enter image description here](https://i.stack.imgur.com/zVkpm.png)
Это все, что у меня есть сейчас.
Этот код работает только для одной предпосылки.
Private Sub EnrollStudent(ByVal StudentID As Integer, ByVal SubjectID As Integer)
'**CHECKING IF SUBJECT HAS A PREREQUISITE
Dim Prerequisite As Integer
Using cn As New MySqlConnection(connstring)
Using cmd As New MySqlCommand("Select pre_id from subject where subject_id = @subject_id", cn)
cmd.Parameters.Add("@subject_id", MySqlDbType.Int32).Value = SubjectID
cn.Open()
Prerequisite = CInt(cmd.ExecuteScalar)
End Using
End Using
'**ANSWER = NO / NO PREREQUISITE ? DO THIS -> CALL THE INSERTENROLLMENT FUNCTION
If Prerequisite = 0 Then
InsertEnrollment(StudentID, SubjectID, lbl_As_SchoolYear.Text)
Return
End If
'**ANSWER = YES / THERE IS A PREREQUISITE
'**CHECKING IF THE SUBJECT IS PASSED
'**CHECKING FOR INC GRADES SINCE INC IS STRING
Dim PassingGradeStr As String
Using cn As New MySqlConnection(connstring)
Using cmd As New MySqlCommand("Select grade FROM student_subject WHERE sub_id =@sub_id AND student_id =@student_id", cn)
cmd.Parameters.Add("@sub_id", MySqlDbType.Int32).Value = Prerequisite
cmd.Parameters.Add("@student_id", MySqlDbType.Int32).Value = StudentID
cn.Open()
PassingGradeStr = CStr(cmd.ExecuteScalar)
End Using
End Using
'**CHECKING IF THE GRADE IS INC / IF INC THEN EXIT SUB
If PassingGradeStr = "INC" Then
MessageBox.Show("GRADE STILL INC")
Exit Sub
End If
'**PASSING GRADE IS NOT INC / SO GRADE MUST BE INTEGER
Dim PassingGrade As Integer
Using cn As New MySqlConnection(connstring)
Using cmd As New MySqlCommand("Select Grade From student_subject Where sub_id = @sub_id And student_id = @student_id", cn)
cmd.Parameters.Add("@sub_id", MySqlDbType.Int32).Value = Prerequisite
cmd.Parameters.Add("@student_id", MySqlDbType.Int32).Value = StudentID
cn.Open()
PassingGrade = CInt(cmd.ExecuteScalar)
End Using
End Using
'**CHECKING IF THE GRADE IS GREATER THAN 0 / IF TRUE THEN IT IS PASSED / CALL INSERTENROLLMENT FUNCTION
If PassingGrade > 0 Then
If PassingGrade = 4 Then
MessageBox.Show("Prerequisite Subject is 4")
Exit Sub
End If
If PassingGrade = 5 Then
MessageBox.Show("Prerequisite Subject is Failed")
Exit Sub
End If
InsertEnrollment(StudentID, SubjectID, lbl_As_SchoolYear.Text)
Else
MessageBox.Show("Student cannot enroll because of prerequisite.")
End If
End Sub
Мне удается сделать это, выполнив одно из предложенных комментариев. добавив еще один столбец для предварительных условий. Я знаю, что это не очень эффективный способ сделать это, поэтому при любых предложениях я с удовольствием попробую. Благодарю.
Я буду публиковать, что я сделал, чтобы все равно исправить.
UPDATE:
![enter image description here](https://i.stack.imgur.com/2j5fa.png)
Немного запутано, потому что я дублирую весь код, который мне нужно проверить
для другого столбца, который я добавляю.
'**CHECKING IF SUBJECT HAS A PREREQUISITE
Dim Prerequisite As Integer
Using cn As New MySqlConnection(connstring)
Using cmd As New MySqlCommand("Select pre_id from subject where subject_id = @subject_id", cn)
cmd.Parameters.Add("@subject_id", MySqlDbType.Int32).Value = SubjectID
cn.Open()
Prerequisite = CInt(cmd.ExecuteScalar)
End Using
End Using
'**ANSWER = NO / NO PREREQUISITE ? DO THIS -> CALL THE INSERTENROLLMENT FUNCTION
Dim Prerequisite2 As Integer
Using cn As New MySqlConnection(connstring)
Using cmd As New MySqlCommand("Select pre_id2 from subject where subject_id = @subject_id", cn)
cmd.Parameters.Add("@subject_id", MySqlDbType.Int32).Value = SubjectID
cn.Open()
Prerequisite2 = CInt(cmd.ExecuteScalar)
End Using
End Using
If Prerequisite = 0 Then
InsertEnrollment(StudentID, SubjectID, lbl_As_SchoolYear.Text)
Return
End If
If Prerequisite2 = 0 Then
InsertEnrollment(StudentID, SubjectID, lbl_As_SchoolYear.Text)
Return
End If
'**ANSWER = YES / THERE IS A PREREQUISITE
'**CHECKING IF THE SUBJECT IS PASSED
'**CHECKING FOR INC GRADES SINCE INC IS STRING
Dim PassingGradeStr As String
Using cn As New MySqlConnection(connstring)
Using cmd As New MySqlCommand("Select grade FROM student_subject WHERE sub_id =@sub_id AND student_id =@student_id", cn)
cmd.Parameters.Add("@sub_id", MySqlDbType.Int32).Value = Prerequisite
cmd.Parameters.Add("@student_id", MySqlDbType.Int32).Value = StudentID
cn.Open()
PassingGradeStr = CStr(cmd.ExecuteScalar)
End Using
End Using
Dim PassingGradeStr2 As String
Using cn As New MySqlConnection(connstring)
Using cmd As New MySqlCommand("Select grade FROM student_subject WHERE sub_id =@sub_id AND student_id =@student_id", cn)
cmd.Parameters.Add("@sub_id", MySqlDbType.Int32).Value = Prerequisite2
cmd.Parameters.Add("@student_id", MySqlDbType.Int32).Value = StudentID
cn.Open()
PassingGradeStr2 = CStr(cmd.ExecuteScalar)
End Using
End Using
'**CHECKING IF THE GRADE IS INC / IF INC THEN EXIT SUB
If PassingGradeStr = "INC" Then
MessageBox.Show("GRADE STILL INC")
Exit Sub
End If
If PassingGradeStr2 = "INC" Then
MessageBox.Show("GRADE STILL INC")
Exit Sub
End If
'**PASSING GRADE IS NOT INC / SO GRADE MUST BE INTEGER
Dim PassingGrade As Integer
Using cn As New MySqlConnection(connstring)
Using cmd As New MySqlCommand("Select Grade From student_subject Where sub_id = @sub_id And student_id = @student_id", cn)
cmd.Parameters.Add("@sub_id", MySqlDbType.Int32).Value = Prerequisite
cmd.Parameters.Add("@student_id", MySqlDbType.Int32).Value = StudentID
cn.Open()
PassingGrade = CInt(cmd.ExecuteScalar)
End Using
End Using
Dim PassingGrade2 As Integer
Using cn As New MySqlConnection(connstring)
Using cmd As New MySqlCommand("Select Grade From student_subject Where sub_id = @sub_id And student_id = @student_id", cn)
cmd.Parameters.Add("@sub_id", MySqlDbType.Int32).Value = Prerequisite2
cmd.Parameters.Add("@student_id", MySqlDbType.Int32).Value = StudentID
cn.Open()
PassingGrade2 = CInt(cmd.ExecuteScalar)
End Using
End Using
'**CHECKING IF THE GRADE IS GREATER THAN 0 / IF TRUE THEN IT IS PASSED / CALL INSERTENROLLMENT FUNCTION
If PassingGrade > 0 And PassingGrade2 > 0 Then
If PassingGrade = 4 Or PassingGrade2 = 4 Then
MessageBox.Show("Prerequisite Subject is 4")
Exit Sub
End If
If PassingGrade = 5 Or PassingGrade2 = 5 Then
MessageBox.Show("Prerequisite Subject is Failed")
Exit Sub
End If
InsertEnrollment(StudentID, SubjectID, lbl_As_SchoolYear.Text)
Else
MessageBox.Show("Student cannot enroll because of prerequisite.")
End If