2015-04-17 19 views
0

我想創建一個SQL查詢,以便當用戶輸入開始日期,結束日期,並從下拉列表中選擇一個大小是連接到我的數據庫,結果顯示單擊按鈕時所選日期的可用連衣裙。預訂系統SQL查詢:使用開始和結束日期和大小可用的數據庫搜索

這是我的模式。

Product (Product_ID, Size, Image, Description) 

Booking (Booking_ID, Product_ID, Start_Date, End_Date) 

這是我試過的第一個查詢。

SELECT Product_ID FROM Product P 
WHERE Size = 'DropDownList1.SelectedValue' AND NOT EXISTS 
(SELECT * FROM Booking 
WHERE Product_ID = P.Product_ID AND Start_Date >= 'Start' AND End_Date <= 'End') 

我還沒有VB代碼,因爲我不太確定把它放在哪裏或寫什麼。當我嘗試測試查詢時,它說日期的轉換失敗。

另外,我應該在搜索按鈕中放入什麼代碼才能讓它在列表視圖中顯示結果?

這是我正在使用的jQuery。

<script> 
    $(function() { 
     $("#Start").datepicker({ 
      dateFormat: 'dd/mm/yy', 
      defaultDate: "+1w", 
      changeMonth: true, 
      numberOfMonths: 1, 
      onClose: function (selectedDate) { 
       $("#End").datepicker("option", "minDate", selectedDate); 
      } 
     }); 
     $("#End").datepicker({ 
      dateFormat: 'dd/mm/yy', 
      defaultDate: "+1w", 
      changeMonth: true, 
      numberOfMonths: 1, 
      onClose: function (selectedDate) { 
       $("#Start").datepicker("option", "maxDate", selectedDate); 
      } 
     }); 
    }); 

而這是用戶進入使用jQuery日期選擇器的日期。

Date Needed: <input type="text" id="Start"> 

Return Date: <input type="text" id="End"> 

我嘗試了幾個不同的東西,它仍然無法正常工作。我已經添加了一些VB,看起來像這樣。但我不認爲這是正確的。開始和結束在他們下面有藍線。它開始說它「沒有被宣佈」,並且結束它說「預期的表達」。

Partial Class Pages_Default 
Inherits System.Web.UI.Page 

Protected Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click 
    Dim conn As SqlConnection 
    Dim cmd As SqlCommand 
    Dim recordsAffected As Integer 
    Dim cmdstring As String = "SELECT Booking(Start_Date, End_Date) Values(@Start, @End)" 
    conn = New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=F:\BBB.mdf;Integrated Security=True") 
    cmd = New SqlCommand(cmdstring, conn) 
    cmd.Parameters.Add("@Start", SqlDbType.Date).Value = Start.SelectedValue 
    cmd.Parameters.Add("@End", SqlDbType.Date).Value = End.SelectedValue 
    conn.Open() 
    recordsAffected = cmd.ExecuteNonQuery 
    conn.Close() 
End Sub 
End Class 

我也改變了這個SQL查詢,它不工作。

SELECT Image, Price, Description FROM Product P WHERE Size = 'DropDownList1.SelectedValue' AND NOT EXISTS (SELECT * FROM Booking WHERE Product_ID = P.Product_ID AND Start_Date >= @Start AND End_Date <= @End) 
+0

你可以顯示'開始'和'結束'? – User2012384

+0

「開始」和「結束」不是日期。 –

+0

是的,但用戶將從日期選擇器中選擇日期。只是不知道我需要放在那裏才能使其工作。 – ConfusedStudent

回答

0

轉換失敗,因爲它試圖將文本「開始」變成日期(它不能)。您的第一步是用參數替換這些文本字段,以便您的搜索將日期字段發佈到SQL的這些部分中。

編輯:This page有一個如何正確安全地進行查詢的例子。

+0

我是一個SQL人,但不是一個.NET人。底部的參數部分現在是正確的SQL語法,但更新代碼中的cmdString變量不是。 – Nicholai

相關問題