當我嘗試通過存儲過程更新記錄時發生錯誤。 我得到的錯誤是2147217833字符串或二進制數據將被截斷。2147217833字符串或二進制數據將被截斷
我已經在插入的每個字段上做了一段長度,他們應該舒適地適合數據庫字段 - 即長度不大於列規格。
此刻完全困惑 - 爲什麼會出現此錯誤的其他原因?
謝謝,
Set objReturnParam = objComm.CreateParameter("Return",adInteger,adParamReturnValue)
Set objRiskIDParam = objComm.CreateParameter("@riskID",adBigInt,adParamInput)
Set objControlsDescriptionParam = objComm.CreateParameter("@ControlsDescription",adVarChar,adParamInput,5000)
Set objTreatmentParam = objComm.CreateParameter("@Treatment",adVarChar,adParamInput,5000)
Set objControlsParam = objComm.CreateParameter("@Controls",adVarChar,adParamInput,10)
Set objPriorityParam = objComm.CreateParameter("@Priority",adVarChar,adParamInput,6)
Set objProbabilityParam = objComm.CreateParameter("@Probability",adVarChar,adParamInput,6)
Set objImpactParam = objComm.CreateParameter("@Impact",adVarChar,adParamInput,6)
Set objScoreParam = objComm.CreateParameter("@Score",adInteger,adParamInput)
Set objReviewTimeframeParam = objComm.CreateParameter("@ReviewTimeframe",adVarChar,adParamInput,6)
Set objReviewDateParam = objComm.CreateParameter("@ReviewDate",adDate,adParamInput)
Set objDateReviewedParam = objComm.CreateParameter("@DateReviewed",adDate,adParamInput)
Set objReviewerIDParam = objComm.CreateParameter("@ReviewerID",adInteger,adParamInput)
objComm.Parameters("@riskID") = lRiskID
objComm.Parameters("@ControlsDescription") = strControlsDescription
objComm.Parameters("@Treatment") = strTreatment
objComm.Parameters("@Controls") = strControls
objComm.Parameters("@Priority") = strPriority
objComm.Parameters("@Probability") = strProbability
objComm.Parameters("@Impact") = strImpact
objComm.Parameters("@Score") = iScore
objComm.Parameters("@ReviewTimeframe") = strReviewTimeframe
objComm.Parameters("@ReviewDate") = cStr(Year(dReviewDate)) + "-" + cStr(Month(dReviewDate)) + "-" + cStr(Day(dReviewDate)) + " 00:00:00"
objComm.Parameters("@DateReviewed") = cStr(Year(Date)) + "-" + cStr(Month(Date)) + "-" + cStr(Day(Date)) + " 00:00:00"
objComm.Parameters("@ReviewerID") = Cstr(Session("UserID"))
當我輸出的每個我想要更新的變量,每個的長度爲:
lRiskID:2
strControlsDescription:6
strTreatment: 6
strControls:4
strPriority:0
strProbability:1
strImpact:1
iScore:1
strReviewTimeframe:0
Reviewdate19
dateReviewed19
reviewerid2
[ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[CONTROLS_DESCRIPTION] [varchar](5000) COLLATE Latin1_General_CI_AS NOT NULL,
[TREATMENT] [varchar](5000) COLLATE Latin1_General_CI_AS NOT NULL,
[PRIORITY] [varchar](6) COLLATE Latin1_General_CI_AS NOT NULL,
[PROBABILITY] [varchar](6) COLLATE Latin1_General_CI_AS NOT NULL,
[IMPACT] [varchar](6) COLLATE Latin1_General_CI_AS NOT NULL,
[SCORE] [tinyint] NOT NULL,
[REVIEW_TIMEFRAME] [varchar](6) COLLATE Latin1_General_CI_AS NOT NULL,
[PROPOSED_REVIEW_DATE] [datetime] NOT NULL,
[DATE_REVIEWED] [datetime] NULL,
[REVIEWER_ID] [int] NULL,
你能分享模式和代碼嗎?你很可能會執行一個cast/convert/substring /等。或者可能獲得隱式轉換到/從unicode,或可能是別的。很難說沒有看到代碼/架構。 – chadhoc 2009-11-20 14:50:17
好的,這有幫助,但是你打算怎麼寫數據到服務器,並且除插入...值外還有其他代碼嗎?即看起來你正在構建一個ADO命令對象並填充它的參數集合 - 你在調用什麼來寫入到服務器(即cmd.Execute('what procedure')),並且你可以共享該過程聲明中包含的任何代碼(即param接口和任何之前的實際插入語句)? – chadhoc 2009-11-20 16:18:34
是否有任何理由鑄造日期字符串之前分配給datetime類型?爲什麼不只是做objComm.Parameters(「@ ReviewDate」)= dReviewDate objComm.Parameters(「 @DateReviewed「)=日期 – kristof 2009-11-20 17:00:31