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