在sqlstr="..."前加上如下语句:
if len(riqi)=0 then riqi='null'

解决方案 »

  1.   

    if len(riqi)=0 then
    sqlstr = "insert into testdate(name,TheDate) " & _
            "values('" & _
            name & "',null)"
    else
    sqlstr = "insert into testdate(name,TheDate) " & _
            "values('" & _
            name & "','" & riqi & "')"
    endif
      

  2.   

    sqlstr = "insert into testdate(name,TheDate) " & _
            "values('" & _
            name & "'," & iif(len(riqi)>0,"'" & format(riqi,"yyyy/mm/dd") & "'","NULL") & ")"
      

  3.   

    各位大虾,还是不行,我知道可能就是“riqi”的类型定义有问题,各位看一下我的源程序:类模块Class1:
    Public Sub add(ByVal riqi As Date)     '留意riqi类型
        ....... 打开数据库cnn
        
        sqlstr = "insert into testdate(name,riqi) " & _
                "values('" & riqi & "')"
                
        cnn.Execute sqlstr
        
    End Sub工程调用:
    Private Sub Command1_Click()
        Dim riqi As Date                  '留意riqi类型
        
        riqi = Text2.Text                 '留意这样赋值有没有问题
        
        Dim myclass As New DataProject.Class1
        
        myclass.add riqi
        
    End Sub请继续指点,太感谢啦。
      

  4.   

    当text2.text为空时不对riqi赋值
    if text2.text<>"" then
       riqi=text2.text
    endif
    不就行了??
      

  5.   

    为什么我没有为riqi赋值,在Dim riqi As Date后跟着Debug.Print riqi,发觉riqi的值为:上午 12:00:00 ,怎么会这样呢?
    在SQL SERVER7的数据类型好象没有短日期嘛。
      

  6.   

    SQL SERVER里怎么没有短日期?SmallDateTime!
    你是不是设了一个Default值?
      

  7.   

    问题是:Dim riqi As Date 后 riqi已经不是空了,用Debug.Print riqi,发觉riqi的值为:上午 12:00:00 ,怎么会这样呢?
      

  8.   

    举个例子吧:比如,你定义一个int型的变量:i,然后你就会看到i=0;
    一样啊,如果你定义一个date型变量,你也会赋初值呀。在VB里date是按长整型数值存储的,它的0=0:00:00,也就是上午的12:00:00了。
      

  9.   

    其实,你可以这样处理:
    把riqi定义成字符串。然后在
    用下面的语句组合sql语句:
    sqlstr = "insert into testdate(name,riqi) " & _
                "values('" & Format(riqi,"yyyy-mm-dd") & "')"就可以了。
    我原来一直是这样写的。
      

  10.   

    我再想问一下各位,到底我在上面类模块和PROJECT里的riqi的类型这样设置,要不要设置成vaiant 呢?
      

  11.   

    当日期为空时,你不处理日期字段不可以吗,也就是说当日期文本为空时,
    sqlstr = "insert into testdate(name) " & "values('" & name & "')"
    ////////only name,拭拭吧,我觉得可以。