我现在正在做一个有关于权限方面的设置的界面,在资料的读取时均没有问题,代码如下:
 
  Call mydovro   <-------------这个是调用数据库
    SQL = "SELECT * FROM duser Where name='" & ComboBox1 & "'"
    RST.Open SQL, CNN, adOpenKeyset, adLockOptimistic
    Call frmbw   <-------------这个界面清空
     CheckBox1.Value = CBool(RST.Fields("fchck"))
     CheckBox2.Value = CBool(RST.Fields("DDGL"))
     CheckBox3.Value = CBool(RST.Fields("YWGL"))
     CheckBox8.Value = CBool(RST.Fields("bb1"))
     CheckBox9.Value = CBool(RST.Fields("bb2"))
     CheckBox7.Value = CBool(RST.Fields("CWYY"))
 Set RST = Nothing
 Set CNN = Nothing
问题是出在下面:
我想通过界面上的CheckBox的编辑,获得对权限的设置,代码如下:
Call mydovro
    SQL = "Update duser set fchck='" & CBool(CheckBox1.Value) & "' where name='" & ComboBox1 & "'"
    RST.Open SQL, CNN, adOpenKeyset, adLockOptimistic
    MsgBox "权限设置成功!", vbOKOnly, "DOVRO"现在的问题有2个:
1、在点击编辑后也即上面的第二段代码,产生如下提示:
标准表达式中数据类型不匹配。在我的ACCESS数据库中字段的类型是数字整型!2、我一共有N个Checkbox,如果一直用set fchck='" & CBool(CheckBox1.Value),我不知道这代码有多长,象这个情况代码要怎么写呀?

解决方案 »

  1.   

    SQL = "Update duser set fchck='" & CBool(CheckBox1.Value) & "' where name='" & ComboBox1 & "'"
    这句我用这种方式也做过,也是不行!
     SQL = "Update [duser] set [fchck]='" & CBool(CheckBox1.Value) & "' where [name]='" & ComboBox1 & "'"
      

  2.   

    fchck是什么类型的呀。
    还有,是什么数据库,sql server中是bit型,是认0和1的。与access中不同的。
      

  3.   

    CheckBox1.Value = CBool(RST.Fields("fchck"))
         CheckBox2.Value = CBool(RST.Fields("DDGL"))
         CheckBox3.Value = CBool(RST.Fields("YWGL"))
         CheckBox8.Value = CBool(RST.Fields("bb1"))
         CheckBox9.Value = CBool(RST.Fields("bb2"))
         CheckBox7.Value = CBool(RST.Fields("CWYY"))
    全部是整型,要不我用BIT试试!
      

  4.   

    fchck='" & CBool(CheckBox1.Value) & "'------------------
    整型不能加单引号呀,改成:
    fchck= " & CBool(CheckBox1.Value) & "
    就行了。
      

  5.   

    谢谢,第一个问题解决了,现在要解决第二个问题就是我的权限子项有N个,我总不能一个SET 继续写下去吧,其它有什么办法吗?
      

  6.   

    另外一个问题,我的SQL是这样的
     SQL = "Update [duser] set [fchck]='" & CBool(CheckBox1.Value) & "' where [name]='" & ComboBox1 & "'"
    我现在把括号去掉竟然也可以的,但是在修改密码时却一定要括号,不知道为什么?密码是用文本格式的,那儿可以查到这方面的资料?
      

  7.   

    第二个问题,你可以拼接字符串。
    比如:
    sql = "fdasfsadf"
    sql = sql & "89898989"
      

  8.   

    另外一个问题,我的SQL是这样的
    SQL = "Update [duser] set [fchck]='" & CBool(CheckBox1.Value) & "' where [name]='" & ComboBox1 & "'"
    我现在把括号去掉竟然也可以的,但是在修改密码时却一定要括号,不知道为什么?密码是用文本格式的,那儿可以查到这方面的资料?
    -------------------
    你指的是什么括号呀。没明白。
      

  9.   

    1、我指的是中括号,我昨天没注意这个问题!因为在我的代码中曾经因为有一句没有中括号,竟然通不过,后来加了中括号方通过。代码是这样的: 这儿的字段没有中括号,字段的属性是文本格式。
    SQL = "Update [duser] set [password]='" & TextBox1.Text & "' where [name]='" & userID & "'"2、如果要更新的资料很多,是不是可以这样写:SQL = "Update [duser] set fchck=" & CBool(CheckBox1.Value) & "
    SQL=SQL &"set BB1=" & CBool(CheckBox2.Value) & "
    SQL=SQL &"set BB2=" & CBool(CheckBox3.Value) & "
    SQL=SQL & "where [name]='" & ComboBox1 & "'"
      

  10.   

    Call mydovro
       SQL = "Update duser set fchck=" & CheckBox1.Value & ""
       SQL = SQL & "and set DDGL=" & CheckBox2.Value & " "
       SQL = SQL & "and set YWGL=" & CheckBox3.Value & " "
       SQL = SQL & "and set bb1=" & CheckBox8.Value & " "
       SQL = SQL & "and set bb2L=" & CheckBox9.Value & " "
       SQL = SQL & "and set CWYY=" & CheckBox7.Value & " "
       SQL = SQL & "where name='" & ComboBox1 & "'"
       RST.Open SQL, CNN, adOpenKeyset, adLockOptimistic
       MsgBox "权限设置成功!", vbOKOnly, "DOVRO"
       Set RST = Nothing: Set CNN = Nothing我下面的代码没有难过?郁闷
      

  11.   

    语法不对:
    你可以用 debug.print sql试下下生成和字串 SQL = "Update duser set fchck=" & CheckBox1.Value & ""
    SQL = SQL & "and set DDGL=" & CheckBox2.Value & " "应改成
     SQL = "Update duser set fchck=" & CheckBox1.Value & ","
    SQL = SQL & "DDGL=" & CheckBox2.Value & ","
    sql = sql & "ddd = " & ...