【问题标题】:Loop same case in select case in vb.net在 vb.net 中的选择案例中循环相同的案例
【发布时间】:2014-03-18 06:19:33
【问题描述】:

我想提出这个问题....如果循环中只有 1 个 false 则它不会插入到数据库中,反之亦然,如果全部为 true 则它将插入到数据库中。

这是我的代码

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 个错误

【问题讨论】:

  • 我不清楚你的问题,但是,如果你的 site_idBoolean 会有两个值。为什么不使用If 而不是Select Case
  • 我也使用 if 语句,但我没有得到它,当我使用 IF 语句时也会发生同样的事情,它只是插入到数据库中
  • 如果所有行中的side_id 为真,您的意思是要插入数据库吗?
  • 我的意思是,如果 site_id 返回的只有 1 个 false,它将不会插入到数据库中,但如果所有 site_id 都为 true,那么它将插入到数据库中
  • @Denmark,看看我的回答。

标签: vb.net for-loop switch-statement sql select-case


【解决方案1】:

希望这能解决问题

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

【讨论】:

    【解决方案2】:

    试试这个

    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
    

    【讨论】:

    • 它仍然会出现其他情况,这就是我的问题 xD 我需要如果有 1 false 它将继续直到循环结束但它不会插入到数据库中
    • 但是如果全部为真,我怎样才能获得 dr 中的数据?我的意思是,如果它转到下一个,那么我就不能再称呼“博士”了
    • 我可以再问一次吗?如果我添加另一个语句你能再看看我的代码吗
    • 在哪里?我没有看到更重要的陈述。
    • 由您决定何时终止它。
    猜你喜欢
    • 2023-03-28
    • 2016-01-19
    • 2012-12-07
    • 2012-06-28
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    相关资源
    最近更新 更多