OleDbParameter-> OleDbType.DBTimeStamp問題

cheong 2003-06-23 04:52:56
Dim parameterINDATE As New OleDbParameter("INDATE", OleDbType.DBTimeStamp)
myCommand.Parameters.Add(parameterINDATE)
parameterINDATE.Direction = ParameterDirection.Input
parameterINDATE.Value = Now
----
我把OleDbType的種類和 輸入的value 已作多次的修改.但還是error.
出現下面錯誤:
---------------------------------------------------
System.InvaildOperationException: 因為除了簽名不符或資料溢位之外的原因,無法轉換命令 parameter[4] 'INDATE'資料值.
---->System.Data.OleDb.OleDbException: 沒有錯誤資訊: DB_E_ERRORSOCCURRED(0x90040E21)
.....
-----------------------------------------------------

...全文
104 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheong 2003-06-24
  • 打赏
  • 举报
回复
CREATE PROCEDURE CA_AACCLOG (
IN CODE CHAR(1) ,
IN INDATE TIMESTAMP )

------
database is db2
Acony 2003-06-23
  • 打赏
  • 举报
回复
原来你用的是存储过程,那你有没有检查过存储过程里的参数名、参数类型跟你程序里的是不是一样?
cheong 2003-06-23
  • 打赏
  • 举报
回复
我已經track 得好清楚. 看見parameterINDATE 的value 是Date類型(因為在track時應該沒有Datetime)
值是#2003-01-10 12:01:01 PM#
cheong 2003-06-23
  • 打赏
  • 举报
回复
其他類型的欄位是沒有問題的.

Dim myCommand As New OleDbCommand(INACC", cn)
myCommand.CommandType = CommandType.StoredProcedure

Dim parameterCODE As New OleDbParameter("CODE", OleDbType.Char)
myCommand.Parameters.Add(parameterCODE)
parameterCODE.Direction = ParameterDirection.Input
parameterCODE.Value = "A"

Dim parameterINDATE As New OleDbParameter("INDATE", OleDbType.DBTimeStamp)
parameterINDATE.Direction = ParameterDirection.Input
parameterINDATE.Value = System.DateTime.Now
myCommand.Parameters.Add(parameterINDATE)

myCommand.ExecuteNonQuery()
Acony 2003-06-23
  • 打赏
  • 举报
回复
没道理,把你的CommandText贴上来看看,会不会是你的这个INDATE参数名写错了?
cheong 2003-06-23
  • 打赏
  • 举报
回复
這些方法都已經試了

但還是不成.

求命呀~~~
Acony 2003-06-23
  • 打赏
  • 举报
回复
你应该在给parameterINDATE赋值后才调用myCommand.Parameters.Add(parameterINDATE)吧,你改成这样看看:
Dim parameterINDATE As New OleDbParameter("INDATE", OleDbType.DBTimeStamp)
parameterINDATE.Direction = ParameterDirection.Input
parameterINDATE.Value = System.DateTime.Now
myCommand.Parameters.Add(parameterINDATE)
Montaque 2003-06-23
  • 打赏
  • 举报
回复
parameterINDATE.Value = new DateTime
cheong 2003-06-23
  • 打赏
  • 举报
回复
parameterINDATE.Value = System.DateTime.Now
這個方法已經試過了
還有試了很多值. 例如.System.DateTime.UtcNow 等等.
都是不成的.
Acony 2003-06-23
  • 打赏
  • 举报
回复
parameterINDATE.Value = Now?这个Now怎么得到的?

System.InvaildOperationException: 因為除了簽名不符或資料溢位之外的原因,無法轉換命令parameter[4] 'INDATE'資料值.

这个错误的意思是说INDATE的值和INDATE的数据类型不匹配,在你的代码里面INDATE的数据类型是OleDbType.DBTimeStamp,它映射到DateTime数据类型。所以你的代码应该做这样的修改:
parameterINDATE.Value = Now
改为:parameterINDATE.Value = System.DateTime.Now
W_W_Q 2003-06-23
  • 打赏
  • 举报
回复
System.DateTime.Now?

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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