解决日期型字段不能空值更新问题的问题

js_jdc 2004-08-30 11:54:53
为解决日期型字段不能空值更新问题,在窗体添加一个DTPicker1控件(DTPicker1.Visible=False)和一个Text1控件,DTPicker1与数据库的日期型字段绑定,text1不与字段,但与DTPicker1连接,要通过text1向DTPicker1输入日期,并用text1显示DTPicker1中值,代码如下:

Private Sub Text2_KeyPress(KeyAscii As Integer) '向DTPicker1和数据库输入日期
On Error GoTo err1:
If KeyAscii = 13 Then
If IsDate(Text2) = True Then
DTPicker1.Value = Text2
Else
If Text2 = "" Then
DTPicker1.Value = Null
Else
MsgBox "日期输入错误!", 16
End If
End If
End If
Exit Sub
err1:
MsgBox "日期输入错误!", 16
End Sub

Private Sub DTPicker1_Change() '显示DTPicker1绑定数据库的日期
If DTPicker1.Value = Null Then
Text2.Text = ""
GoTo 5
End If
Text2.Text = DTPicker1.Value
5 End Sub

上述代码,上一段输入没有问题,但下一段显示出现错误,什么原因?请指教!!!
...全文
296 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
js_jdc 2004-09-01
  • 打赏
  • 举报
回复
我可能未说得清:

Access日期型字段在text1控件中不能空值输入,在DTPicker1控件中可以空值""输入,但要在DTPicker.checkbox=bure状态,这种状态下,DTPicker控件上会有复选框,不美观。为了解决这个问题,我将DTPicker与text联用,用DTPicker与数据库连接,用text来向DTPicker输入和显示DTPicker中的数值,DTPicker设为不可见状态(DTPicker.Visible=False)。现在输入的问题是解决了,在text中不论输入的日期型值或空值,都可以,不会像单独用text输入空值出现错误的情况。但现在出现的问题是,text不能显示DTPicker中的数值,不随DTPicker的变化而变化,也就是下面这段代码出了问题,不知错在哪里?请指教。

Private Sub DTPicker1_Change() '显示DTPicker1绑定数据库的日期
If IsNull(DTPicker1.Value) = Ture Then
Text2.Text = ""
GoTo 5
End If
Text2.Text = DTPicker1.Value
5 End Sub
leolan 2004-08-31
  • 打赏
  • 举报
回复
If Text2 = "" Then
DTPicker1.Value = Null 'DTPicker的值不可為NULL!
tztz520 2004-08-31
  • 打赏
  • 举报
回复
Private Sub DTPicker1_Change() '显示DTPicker1绑定数据库的日期
If DTPicker1.Value = Null Then
Text2.Text = ""
GoTo 5
End If
Text2.Text = DTPicker1.Value
5 :
End Sub
饮水需思源 2004-08-31
  • 打赏
  • 举报
回复
'不太理解楼主说的情况:
'如果数据库中允许日期型字段为空,则:
strsql=" update tablename set 日期字段="& iif(text1.text="","NULL","'"& format(text1.text,"YYYY-MM-DD") &"')"
conn.strsql
'如果数据库不允许日期型字段为空,则:
private sub text1_lostfocus()
if trim(text1.text)="" then
msgbox "请输入日期型数据!",48,"提示"
text1.setfocus
exit sub
else
if not isdate(text1.text) then
msgbox "请输入日期型数据!",48,"提示"
text1.setfocus
exit sub
else
text1.text=format(text1.text,"YYYY-MM-DD")
end if
end if
end sub
strsql=" update tablename set 日期字段='"& text1.text &"'"
conn.execute strsql
js_jdc 2004-08-31
  • 打赏
  • 举报
回复
tztz520说的与楼主的一样,没有区别。

leolan说的,实际上是没有问题的: 设DTPicker1.checkbox=ture时,DTPicker1.Value = Null是可以的。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧