如何通过从表单上的文本框字段中获取数据来更新?

时间:2011-08-22 15:39:45

标签: vb.net

我正在预订系统。我使用相同的形式进行插入和更新。如何通过从文本框中获取值来更新。例如,如果用户仅为8个字段中的2个输入值,那么如何仅更新2个字段而不影响其余记录。我的意思是说,如果我使用所有字段的单个更新查询,那么如果一些文本框留空,那么它将用null或其他东西替换数据库字段值。任何人都可以帮我这个???

2 个答案:

答案 0 :(得分:0)

您需要编写代码来跟踪哪些文本框已更改。加载现有记录时,为每个文本框设置.Tag = 0。在每个TextBox.Validated事件中,设置.Tag = 1。当用户按下更新按钮时,您可以检查哪些文本框具有.Tag = 1并仅更新这些字段。


根据评论编辑:

只需动态创建查询字符串。

Private Function GetUpdateQuery() As String
    Dim Query As New StringBuilder
    Query.Append("UPDATE Table SET ")
    Dim First As Boolean = True
    For Each ColumnTextBox In ColumnTextBoxes
        If First Then
            First = False
        Else
            Query.Append(",")
        End If
        If ColumnTextBox.Tag = 1 Then Query.Append("{0}={1}", ColumnName, ColumnTextBox.Text)
    Next
    Query.Append(" WHERE ID={0}", RecordID)
    Return Query.ToString
End Function

答案 1 :(得分:0)

如果值不是NULL,则以下代码仅更新列。如果是,则当前值将保存在自身上。

UPDATE TableA
SET ColA=ISNULL(@ColA, ColA)
   ,ColB=ISNULL(@ColB, ColB)
   ,ColC=ISNULL(@ColC, ColC)
WHERE ID=@ID