2015-04-02 6 views
0

Я довольно новичок в кодировании и SQL. У меня есть следующий (часть) кода, который работает, но даты должны передаваться как параметр. Как мне это сделать?Дата передачи SQL в качестве параметра?

sqlStr = "DECLARE @MYDATE DATETIME, @MYDATE2 DATETIME" 
sqlStr &= " SET @MYDATE = '" & fromDate.ToString("MM-dd-yyyy") & "'" & "" 
sqlStr &= " SET @MYDATE2 = '" & toDate.ToString("MM-dd-yyyy") & "'" & "" 

Dim da As New SqlDataAdapter(sqlStr, conn) 
ds = New DataSet 
da.Fill(ds, "DevLog") 
da.Dispose() 
Return ds 

мне нужно сделать что .ToString операцию, так как даты, поступающие от системы являются xx.xx.xxxx (fi-FI) и не xx-xx-xxxx (en-US), как SQL хотят это их (черт ... :) американцев).

Итак, я хочу передать эти даты как параметр SQL, например @fromDate = fromDate, но поскольку я новичок в кодировании и SQL вообще, мне нужна помощь. Где и как вставить?

command.parameters.Add(@fromDate, DATETIME) 

command.parameters.Add(@toDate, DATETIME) 

EDIT: Извините, я допустил ошибку. На самом деле то, что я Мента сказать было:

command.parameters.Add("@toDate", SqlDbType.DateTime).Value = toDate 

я должен каким-то образом передать FromDate и Todate, как правильные параметры DATETIME образуют в SQL строку (@fromdate и @toDate), а не так, как я делаю это сейчас ... как преобразование ToString.

@Saagar Элиас Jacky

sqlStr = "DECLARE @MYDATE DATETIME, @MYDATE2 DATETIME" 
sqlStr &= " SET @MYDATE = '" & fromDate.ToString("MM-dd-yyyy") & "'" & "" 
sqlStr &= " SET @MYDATE2 = '" & toDate.ToString("MM-dd-yyyy") & "'" & "" 
sqlStr &= " SELECT FixedDate, persons.FirstName, persons.lastName, TimeStampRecord, HoursSpent, HoursSpentRow, HoursSpentType" 
sqlStr &= " FROM DevLog" 
sqlStr &= " INNER JOIN Persons ON DevLog.OwnerUserID=Persons.UserID" 
sqlStr &= " WHERE TimeStampRecord=1" 
sqlStr &= " AND FixedDate BETWEEN @MYDATE AND @MYDATE2" 
+0

Почему вы используете DECLARE заявление и где эти переменные используются в БД? –

+1

Даты не имеют формата, американского или иного. Однако они отображаются людям в различных форматах. Большей проблемой будет то, что SQL вы добавляете или вставляете? – Plutonix

+0

Вот вся строка SQL: – finjay

ответ

1
sqlStr = "SELECT * FROM DevLog " 
sqlStr &= " INNER JOIN Persons ON DevLog.OwnerUserID=Persons.UserID" 
sqlStr &= " WHERE TimeStampRecord = 1" 
sqlStr &= " AND FixedDate BETWEEN @MYDATE AND @MYDATE2" 

Dim ds As DataSet  

Using sqlComm As New SqlCommand(sqlStmt, sqlConn) 
    sqlComm.Parameters.AddWithValue("@fromDate", fromDate) 
    sqlComm.Parameters.AddWithValue("@toDate", toDate) 

    Dim da As New SqlDataAdapter(sqlStmt, sqlConn) 
    ds = New DataSet() 
    da.Fill(ds, "DevLog") 
    da.Dispose() 

End Using 

Не тестировался, но надеюсь, что это помогает

+0

Хотел бы знать, был ли полезен один из комментариев или мой ответ. Не сообщать сообществу, если проблема решена, так приятно ... –

+0

Я не собираюсь заниматься пасхальным праздником. Я вернусь с ответом, как только успею поработать над кодом. – finjay

+0

Желаю вам приятных уик-энда –

Смежные вопросы