【问题标题】:Insert number of record based on checkboxlist selected value in vb.net在vb.net中根据checkboxlist选择的值插入记录数
【发布时间】:2016-07-27 14:19:30
【问题描述】:

我有这个技能复选框列表,其中包含用户可以选择的技能。如果用户选择了两个技能,则会在表中插入两条记录。 我试过这个:

        Dim varSkillID As Integer()
        varSkillID = split(skills, ",")
        If varSkillID(0).value > 0 Then
            Dim sql As String = Nothing
            For I = 0 To varSkillID()
                sql = "INSERT INTO tblConstituentSkills (skillID) VALUES ( " & varSkillID.Value & ")"
            Next I
       end if

但它不起作用。谢谢!

我也试过这段代码。

        Dim varSkillID() As String = Split(skillID, ",")

        For i As Integer = 0 To varSkillID.Length - 1
            If varSkillID(i) <> "" Then
                Using sql As New SqlProcedure("spInsertSkill")
                    sql.AddParameter("@ConstituentIdNo", constituentIdNo)
                    sql.AddParameter("@skillID", varSkillID(i))
                    sql.ExecuteNonQuery()
                End Using
            End If

        Next i

当我只选择一个技能时它有效。但如果我选择两个或更多技能,则会出现此错误“Nullable object must have a value”。

【问题讨论】:

    标签: vb.net sql-server-2008-r2


    【解决方案1】:
    • 请使用editor help 来设计您的请求。很难阅读。
    • 错误消息说明了什么?
    • 缺少End If
    • constituentIdNo.Value 来自哪里?

    调用子:

    Call r101("123456", "1,2,3,4")
    

    子:

    Public Sub r101(ByVal constituentIdNo As String, ByVal skills As String)
        Dim varSkillID() As String = Split(skills, ",")
        Dim sql As String = Nothing
    
        For i As Integer = 0 To varSkillID.Length - 1
            If varSkillID(i) <> "" Then sql = "INSERT INTO tblConstituentSkills (ConstituentIdNo, skillID) VALUES (" & constituentIdNo & ", " & varSkillID(i) & ")"
        Next i
    
    End Sub
    

    这不是最干净的代码,但我可以根据您给出的反馈创建最好的代码。 我不明白为什么要将技能转换为整数。

    【讨论】:

    • 感谢您对问题的关注。我是 vb.net 的新手。我已经编辑了上面的代码以便更好地阅读。错误消息是“'字符串的一维数组'类型的值不能转换为'整数的一维数组',因为'字符串'不是从'整数'派生的。”。谢谢。
    • 第2行是否出现错误?您确定只有用逗号分隔的数字存储在技能变量中吗?
    • 请添加代码行,您在其中启动和设置变量“skills”和组成部分Idno。
    • 是的。错误发生在第 2 行,我确信只有用逗号分隔的数字存储在技能变量中。
    • 好的,请检查您的代码。您正在使用三个变量,名称可能相同。技能 ID、varSkillID 和 varSkill。我认为您的 If-clause 应该更改为“If varSkill(0).value > 0 Then”。
    【解决方案2】:

    我刚刚读到这篇文章并救了我。separate comma separated values and store in table in sql server 谢谢stackoverflow!你是救世主!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-23
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多