0

所以我让这段代码循环遍历表单中的每个控件,并根据它们的名称和值、文本或标题创建和更新 sql。

Dim sql as String
Dim ctr as Control

sql = "update table set "
For Each ctr In Me.Controls
    If TypeOf ctr Is TextBox Then
        If ctr.Container = "Carton Config data input" Then
            sql = sql & ctr.name & " = " & "'" & ctr.Text & "',"
        End If
    ElseIf TypeOf ctr Is OptionButton Then
        If ctr.Value = True Then
            sql = sql & " status = '" & ctr.Caption & "',"
        End If
    ElseIf TypeOf ctr Is CheckBox Then
        If ctr.Value = 1 Then
            sql = sql & ctr.name = "'OK',"
        ElseIf ctr.Value = 0 Then
            sql = sql & ctr.name = "'',"
        End If
    End If
Next

之后,我当然添加了 where 条件,但现在没关系了。问题是当它到达一个复选框时,sql 的值将是“False”,我不知道为什么。字符串的长度应该没有问题,第一个复选框是第 4 个对象,所以字符串不会太长。此外,没有复选框部分,它就像一个魅力。那么有人可以帮助我吗?

提前致谢。

4

1 回答 1

1

我发现了问题,所以我会为可能需要它的人回答它。这是一个简单的语法错误:

刚刚换了:

If ctr.Value = 1 Then
   sql = sql & ctr.name = "'OK',"
ElseIf ctr.Value = 0 Then
   sql = sql & ctr.name = "'',"
End If

和:

If ctr.Value = 1 Then
    sql = sql & ctr.name & " = 'OK',"
ElseIf ctr.Value = 0 Then
    sql = sql & ctr.name & " = '',"
End If
于 2012-11-10T13:34:49.553 回答