更新数据库,发生的“标准表达式类型不匹配”。让人实在难以解决。
strSQL = "UPDATE Client_tbl_item SET "
......
strSQL &= "REF_no_equip= ' " & REF_no_Equip.Text & " ', "
strSQL &= "order_date= ' " & converttoDate(order_date.Text) & " ', "
strSQL &= "confirm_date= ' " & converttoDate(confirm_date.Text) & " ',
......
Public Function converttoDate(ByVal itemobject As Object) As Object '判断某字段为空,避免显示出错
Dim needdate As Date
If itemobject = " " Then
Return System.DBNull.Value
Else
needdate = CDate(itemobject)
Return needdate
End If
End Function
为什么当我order_date文本框里什么也不输入的时候,点击更新。
会出现“标准表达式中数据类型不匹配”
怎么处理。
------解决方案--------------------return DBNull.value时肯定会出错.
------解决方案--------------------你看看生成的sql就知道发生什么事了.
------解决方案--------------------日期不能为 ' ' 可以为 null
------解决方案--------------------处理输入字符串的时候
if itemobject= " " then
return itemobject = "null "
else
return itemobject = " ' " & itemobject & " ' "
end if
生成sql的时候
strSQL = "UPDATE Client_tbl_item SET "
......
strSQL &= "REF_no_equip= " & converttoDate(REF_no_Equip.Text) & ", "
//最主要的问题是sql只是一个字符串。你程序生成的sql当null的时候就变成: "columnname = ' " & dbnull.value & " ' " , 正确的是 " columnname = null "。这是你出现错误的地方。
另外你没有必要把时间用cdate转换。还是那句话,sql是个字符串。你转了之后在生成sql的时候,又给你转回去了,所以这是没有必要的操作。
------解决方案--------------------根据错误找出问题.
------解决方案--------------------你把strSQL 生成的sql语句放到数据库里执行,不是通过程序执行,如果没有错,看你的程序,如果有错,你在数据库里调很容易发现哪里的错误
------解决方案--------------------顶一下,学习
------解决方案--------------------试看看:
If itemobject is null orElse itemobject.tostring = " " Then
Return " "
Else
needdate = CDate(itemobject)
Return needdate
End If
------解决方案--------------------这个问题挺奇怪的嘛
学习中。。。