Проверка нескольких предпосылок для предмета - PullRequest
0 голосов
/ 04 мая 2019

Мой друг сказал мне, что мне нужно установить свой предварительный идентификатор как varchar и сохранить предварительное условие, разделенное запятой?

Это то, что у меня есть сейчас. мне удается получить и проверить предварительную базу идентификатора на предмете id но я могу хранить и проверять только одно предварительное условие, потому что я сохраняю его как целое число, но теперь я изменяю его на varchar и разделяю другое предварительное условие запятой. Смотрите мою базу данных

enter image description here

Это все, что у меня есть сейчас. Этот код работает только для одной предпосылки.

 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

Немного запутано, потому что я дублирую весь код, который мне нужно проверить для другого столбца, который я добавляю.

  '**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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...