一个关于日期类型变量处理的问题,快快,急死我啦。 在sqlstr="..."前加上如下语句:if len(riqi)=0 then riqi='null' 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if len(riqi)=0 thensqlstr = "insert into testdate(name,TheDate) " & _ "values('" & _ name & "',null)"elsesqlstr = "insert into testdate(name,TheDate) " & _ "values('" & _ name & "','" & riqi & "')"endif sqlstr = "insert into testdate(name,TheDate) " & _ "values('" & _ name & "'," & iif(len(riqi)>0,"'" & format(riqi,"yyyy/mm/dd") & "'","NULL") & ")" 各位大虾,还是不行,我知道可能就是“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请继续指点,太感谢啦。 当text2.text为空时不对riqi赋值if text2.text<>"" then riqi=text2.textendif不就行了?? 为什么我没有为riqi赋值,在Dim riqi As Date后跟着Debug.Print riqi,发觉riqi的值为:上午 12:00:00 ,怎么会这样呢?在SQL SERVER7的数据类型好象没有短日期嘛。 SQL SERVER里怎么没有短日期?SmallDateTime!你是不是设了一个Default值? 问题是:Dim riqi As Date 后 riqi已经不是空了,用Debug.Print riqi,发觉riqi的值为:上午 12:00:00 ,怎么会这样呢? 举个例子吧:比如,你定义一个int型的变量:i,然后你就会看到i=0;一样啊,如果你定义一个date型变量,你也会赋初值呀。在VB里date是按长整型数值存储的,它的0=0:00:00,也就是上午的12:00:00了。 其实,你可以这样处理:把riqi定义成字符串。然后在用下面的语句组合sql语句:sqlstr = "insert into testdate(name,riqi) " & _ "values('" & Format(riqi,"yyyy-mm-dd") & "')"就可以了。我原来一直是这样写的。 我再想问一下各位,到底我在上面类模块和PROJECT里的riqi的类型这样设置,要不要设置成vaiant 呢? 当日期为空时,你不处理日期字段不可以吗,也就是说当日期文本为空时,sqlstr = "insert into testdate(name) " & "values('" & name & "')"////////only name,拭拭吧,我觉得可以。 菜鸟提问:使用VB设计学生信息显示界面,并实现添加,删除和按成绩排序功能 能否用VB把SQL脚本更新到SQL中? vb如何判断某一个媒体文件正被mediaPlayer或其他播放器播放? 关于Activebar上子控件问题,急问 如何读写文本 如何用vb建关联 日文系统下的奇怪问题,哪位大哥看看 多个单字节相加,如何避免益处 vb 和 sql server 结合做一个项目,有人能提供课题吗? 各位大侠!如何用VB5.0打开一个二进制文件,并且读出固定位置的字符串转化为文本? VB中的递归算法 如何得到PictureBox控件中的其他控件的名称
sqlstr = "insert into testdate(name,TheDate) " & _
"values('" & _
name & "',null)"
else
sqlstr = "insert into testdate(name,TheDate) " & _
"values('" & _
name & "','" & riqi & "')"
endif
"values('" & _
name & "'," & iif(len(riqi)>0,"'" & format(riqi,"yyyy/mm/dd") & "'","NULL") & ")"
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请继续指点,太感谢啦。
if text2.text<>"" then
riqi=text2.text
endif
不就行了??
在SQL SERVER7的数据类型好象没有短日期嘛。
你是不是设了一个Default值?
一样啊,如果你定义一个date型变量,你也会赋初值呀。在VB里date是按长整型数值存储的,它的0=0:00:00,也就是上午的12:00:00了。
把riqi定义成字符串。然后在
用下面的语句组合sql语句:
sqlstr = "insert into testdate(name,riqi) " & _
"values('" & Format(riqi,"yyyy-mm-dd") & "')"就可以了。
我原来一直是这样写的。
sqlstr = "insert into testdate(name) " & "values('" & name & "')"
////////only name,拭拭吧,我觉得可以。