Private Sub Check1_Click()
If Check1.Value = 1 Then
DTP1.Enabled = True
Else
DTP1.Enabled = False
End If
End Sub        
 Private Sub Check2_Click()
If Check2.Value = 1 Then
DTP2.Enabled = True
Else
DTP2.Enabled = False
End If
End Sub        
 
 Private Sub cmd_Click()
 Set cn = New ADODB.Connection
Set res = New ADODB.Recordset
cn.Open "provider=SQLOLEDB;server=it;database=khgl1;uid=sa;pwd=123456"
res.CursorLocation = adUseClient
res.Open "select * from khgl", cn, adOpenStatic, adLockOptimistic
Set frm_xxxg.MSHFlexGrid1.DataSource = res
On Error Resume Next
If Check1.Value = 1 Then
        res!来电时间 = DTP1.Value
        res!去电时间 = DTP2.Value
          -----
       res.Update
res.Close
MsgBox ("修改成功")
这是我的修改代码,修改日期,当存入日期之后,无法清空了,主要采用 check控件控制dtpicker,希望在dtpicker就成灰色,修改保存的时候不存入日期!

解决方案 »

  1.   

    那在dtpicker不能用的时候就不要 res!来电时间 = DTP1.Value ,判断一下
      

  2.   

    dtpicker还有一个CHECKBOX属性 可以结合用一下
      

  3.   

    checkbox设置为true之后,把dtpicker设置为null,也不行
      

  4.   

    来电时间和来电时间在数据库中是什么类型?字符型的就这样:
    If Check1.Value = 1 Then 
          res!来电时间 = DTP1.Value 
          res!去电时间 = DTP2.Value 
              ----- 
          res.Update 
    else
          res!来电时间 = ""
          res!去电时间 = ""         
              ----- 
          res.Update
    end if
      

  5.   

    日期型换成   res!去电时间 = vbnull也没有用的  
      

  6.   

    SQL server 上的时间是不是容许null?
    看看有没有 trigger
      

  7.   

    对的 没有道理不能设成NULL,我这里都是可以的
      

  8.   

    不过我都是用SET 语句来的,不知道和你UPATE的方法是不是不一样
      

  9.   

    sql server里是允许空值,但是直接修改的时候,也无法修改~
      

  10.   

    那是trigger(触发器)的问题吧
      

  11.   

    确实用CTRL+0可以改,在VB中怎么修改呢?
      

  12.   

    那就用 SET 来电时间 = NULL来
      

  13.   

    ZM说了,用update, set 的SQL最好
      

  14.   

    cn.EXCUTE " UPDATE khgl SET 来电时间 = NULL来 WHERE ..."
      

  15.   

    用update, set 有新问题的,我是通过check控制dtpicker的,当勾选的时候才存入,不勾选就是显示灰色,不存入~
      

  16.   

    if isnull(dtp1.value) then -- not ticked 
    update set = null
    else
    update set = dtp1.value
    end if
      

  17.   

    可以用if判断加两条UPDATE语句啊 
    我经常用和好用
    set 来电时间='"&dtp1.value &"'
    就ok了