2011-05-09 98 views
2

我想在MS SQL Server 2005数据库中将日期字段设置为空。设置日期字段为空

我在asp页面上使用VBScript。

DB中的列允许空值。但是,当我尝试添加一条记录,而不是跟着日期字段通过任何东西,或尝试设置现场发回的空,我得到这个错误:

Provider error '80020005'

Type mismatch.

/add_client_notes.asp, line 142

142线是:rs("client_notes_duedate") = client_notes_duedate

这里是所有的代码:

<% 
    clientnotes_id = request("clientnotes_id") 
    client_notes_duedate = request("client_notes_duedate") 
    if client_notes_duedate = "" then 
     client_notes_duedate = Null 
    end if 

    openSQL("SELECT * FROM client_notes WHERE client_notes_id=" & clientnotes_id) 
    rs("client_notes_duedate") = client_notes_duedate 
    rs.update 

%> 

我已经尝试发送一个空值和NULL值,但都返回相同的错误。

当我沿着它发送日期值时效果很好。

如何将client_notes_duedate设置回NULL?

+0

哇,对不起,我只是发现我真正的问题。我用来发布到这个脚本的ajax函数是指向一个较老的asp文件,而不是我正在编辑的那个,它原来的问题实际上起作用。再次抱歉,并且非常感谢您愿意尝试解决我的问题。我应该如何分配点数/哪种解决方案最适合接受? – UpHelix 2011-05-09 22:31:06

回答

3

你能重构这个代码为:

execSomeSqlStatement("UPDATE client_notes SET client_notes_duedate = NULL 
WHERE client_notes_id=" & clientnotes_id) 

也许重构一点,以避免SQL注入漏洞?

+0

它现在不会抛出错误,但它不会覆盖数据库中的值,它们在更新后保持不变。 – UpHelix 2011-05-09 22:26:55

+0

请参阅有关解决方案的问题下的评论。 – UpHelix 2011-05-09 22:31:34

+0

@Dale;嘿没问题。你更喜欢单个语句(UPDATE)而不是3个语句(SELECT,field update和rs.update)吗? – 2011-05-09 22:35:03