2012-11-10 20 views
0

因此,我已经得到了此代码来遍历表单中的每个控件,并根据它们的名称和值,文本或标题创建和更新sql。为vb6中的每个控件创建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 

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

在此先感谢。

+1

你有没有考虑数据绑定? – MarkJ

+0

这也是一个好主意。 让我们来看看......我有一个数据表与数据表中的一堆数据。当用户按下F2时,它将显示一个框架来编辑活动行的数据。 是否可以将控件设置为使用所选行?据我所知,我只能设置数据源和数据字段。那么我可以,如果我创建一个adodc对象,并修改它,每当用户打开这个表单,我猜。 – Joe88

+0

只是一个次要的事情,我注意到这里: 'SQL = SQL&ctr.name& “=” & “ '” &ctr.Text& “',”' 您有一个额外的符号,并设置报价,你可以这样写: 'sql = sql&ctr.name&“='”&ctr.Text&“',”' –

回答

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 
相关问题