Зациклить тот же случай в выбранном случае в vb.net

Я хочу придумать эту проблему .... если в цикле есть только 1 false, он не будет вставлен в базу данных, и наоборот, если все верно, он будет вставлен в базу данных.

Вот мой код

Public Function Check_Foreign_Key(ByVal select_column_name As String, ByVal table_name As String, ByVal where_column_name As String, ByVal where_value As String, ByRef Foreign_Key As String) As Boolean
    Dim dt_service_provider_id As DataTable = ExecuteSQLQuery("select " & select_column_name & " from " & table_name & " where " & where_column_name & " = '" & where_value & "'")
    If dt_service_provider_id.Rows.Count = 0 Then
        Return False
    Else
        Foreign_Key = dt_service_provider_id.Rows(0).Item(0).ToString()
        Return True
    End If
End Function 


    For Each dr As DataRow In dt.Rows
     Dim dt_rows as Integer = 0
     Dim site_id As Boolean = Check_Foreign_Key("site_id", "sites", "site_code", dr(2).ToString, dt_fk)
        If dr(0).ToString.Length > 50 And dr(0).ToString = "" And dr(0).ToString Is Nothing Then
            get_error(dt.TableName, dt.Columns(2).ToString, dt_row.ToString, "Character is greater than 50")
            'in here i want to continue checking go to next, i think i got error in cheking if dr(0) is empty
         Else
             If dr(1).ToString.Length > 50  And dr(1).ToString = "" And dr(1).ToString Is Nothing Then
               get_error(dt.TableName, dt.Columns(2).ToString, dt_row.ToString, "Character is greater than 50")
               'in here i want to continue again to next
              Else
               Select Case site_id
                Case False
                  get_error(dt.TableName, dt.Columns(2).ToString, dt_row.ToString, dr(2).ToString)
                  Return
                End Select
              End If
            End If
          dt_row += 1
     Next

Это код, который знаю только я, но, к сожалению, я не могу понять свою логику, он всегда вставляется, а имеет 1 false


person Denmark    schedule 18.03.2014    source источник
comment
Я не совсем понял ваш вопрос, но если ваш site_id равен Boolean, будет два значения. Почему бы вам не использовать If вместо Select Case?   -  person Tun Zarni Kyaw    schedule 18.03.2014
comment
я также использую оператор if, но я его не понял, то же самое происходит, когда я использую оператор IF, который просто вставляется в базу данных   -  person Denmark    schedule 18.03.2014
comment
Вы имеете в виду, что хотите вставить в базу данных, если side_id из всех строк верны?   -  person Tun Zarni Kyaw    schedule 18.03.2014
comment
я имею в виду, что если есть только 1 ложное значение, возвращаемое site_id, оно не будет вставлено в базу данных, но если все site_id истинно, оно будет вставлено в базу данных   -  person Denmark    schedule 18.03.2014
comment
@Дания, посмотри мой ответ.   -  person Jade    schedule 18.03.2014
comment
мне нужно, чтобы, если есть 1 false, он продолжался бы до тех пор, пока цикл не закончится, но он не будет вставлен в базу данных   -  person Denmark    schedule 18.03.2014
comment
@Дания, я поздно увидел, у меня все равно есть обновление   -  person Jade    schedule 18.03.2014


Ответы (2)


Надеюсь, это решит проблему

Dim blnAllTrue As Boolean = True
For Each dr As DataRow In dt.Rows
    Dim site_id As Boolean = Check_Foreign_Key("site_id", "sites", "site_code", dr(2).ToString, dt_fk)
    blnAllTrue = blnAllTrue And site_id
    If site_id = False Then
          get_error(dt.TableName, dt.Columns(2).ToString, dt_row.ToString, dr(2).ToString)
    End If
Next
If blnAllTrue = True Then
    'insert into your database
End If
person Tun Zarni Kyaw    schedule 18.03.2014

Попробуй это

Private SaveToDB()
    For Each dr As DataRow In dt.Rows
     Dim site_id As Boolean = Check_Foreign_Key("site_id", "sites", "site_code", dr(2).ToString, dt_fk)
        Select Case site_id
           Case False
              get_error(dt.TableName, dt.Columns(2).ToString, dt_row.ToString, dr(2).ToString)
              Return

         End Select
     Next

    'if you got here means no error
    'NOTE: You should loop again and save the rows
     For Each dr As DataRow In dt.Rows
        'Your code to save into the database here
     Next
End Sub
person Jade    schedule 18.03.2014
comment
это все еще будет случай, и это моя проблема xD, мне нужно, чтобы, если есть 1 false, он продолжался бы до тех пор, пока цикл не закончится, но он не будет вставлен в базу данных - person Denmark; 18.03.2014
comment
но как я могу получить данные в др, если все правда? я имею в виду, если он перейдет к следующему, я больше не могу звонить доктору - person Denmark; 18.03.2014
comment
можно еще раз спросить? что, если я добавлю еще одно утверждение, вы можете снова взглянуть на мой код? - person Denmark; 18.03.2014
comment
куда? я не вижу более существенных утверждений. - person Jade; 18.03.2014
comment
Это зависит от вас, чтобы решить, когда вы прекратите его. - person Jade; 18.03.2014