2012-09-20 81 views
0

我正在運行SQL Server 2000和經典的asp與vb。我對存儲過程感到非常頭痛,它接受一個名爲start的datetime和一個名爲end的datetime。我試圖將今天的日期減去一個星期作爲date1發送到存儲過程,但我甚至無法發送它以發送今天的日期。與VB.Net和存儲過程的DateTime問題

If date1 = "" Then 
    date1 = now() 'eventually want to subtract 7 days from this 
End If 
If date2 = "" Then 
    date2 = now() 
End If 

我的存儲過程對其他輸入參數運行良好,除了日期。這裏是我追加開始日期的地方。

.Parameters.Append cmdTmp2.CreateParameter("start",135,1,,date1) '129=adChar, 1=adParamInput 
    .Parameters.Append cmdTmp2.CreateParameter("end",135,1,,date2) '129=adChar, 1=adParamInput 

我recvieing一個錯誤:錯誤轉換數據類型char爲datetime

+0

看起來像VB6而不是VB.NET。 –

+0

'date1'和'date2'的類型是什麼?那是'Date'還是他們是'String'? –

+0

VB6或.NET。它不可能都是... –

回答

0

DateTime.Now會給今天的日期和時間。 Date.Today會給今天的日期。 DateAdd(DateInterval.Day,-7, Date.Today)將在今天7天前完成。

編輯:你的存儲過程期望什麼類型的參數?

+0

它預計日期時間,如前所述。 「@start datetime」 – shenn

0

您需要將實際的Date對象傳遞給CreateParameter方法。由於您在聲明date1date2時未指定類型,因此它們可以引用任何類型的對象,這會使事情變得複雜。最簡單的事情將他們定義爲Date類型的變量,例如:

Dim date1 As Date 
Dim date2 As Date 
If date1 = Date.MinValue Then 
    date1 = Date.Today.AddDays(-7) 
End If 
If date2 = Date.MinValue Then 
    date2 = Date.Today 
End If 

如果你這樣做,它應該工作的罰款。如果由於某種原因,你需要它們作爲基礎對象類型,那麼你必須解析它們,或在將它們傳遞給合適的對象(取決於它們的類型)之前將它們投射到合適的對象上。

+0

謝謝!我喜歡你的建議,但是我收到以下錯誤:預期結束語句 – shenn

+0

在哪一行?我懷疑這是因爲我的答案採用VB.NET語法。 –