我正在尝试创建等候名单。
这个等待名单背后的想法是,我们有一个培训问题,要求用户在课堂上注册一个座位。
最多可容纳 45 人。
如果所有 45 个座位都已被占用,则从 45 开始并随着课程注册而减少的 available_seating 将为 0。
如果available_seating 为0,则表示班级已满,没有座位。
当用户尝试报名参加可用座位 = 0 的课程时,我们希望让用户知道该课程已满,他/她将被列入等候名单。
我想我知道如何解决这个问题。
当 available_seating > 0 时,将用户插入 tblTrainings 表。
但是,如果 available_seating = 0 则将用户插入到名为 waitingList 的表中。
我的问题是如何将该条件语句与下面的计数器混合。
下面,SELECT Count(*) 查询检查用户是否已经注册了一个特定的类。
如果没有,请注册该课程的用户。如果是,请提醒用户他/她已经注册了该课程。
我如何将两者整合在一起,以便我们首先检查用户是否已经注册了该课程。
如果没有,那么我们检查类是否还没有满。如果已满,将用户插入waitingList。如果未满,则将用户插入 tblTrainings。
请参阅当前代码并提前非常感谢。
'If user already registered for a class, alert user
s = "SELECT Count(*) FROM tblTrainings WHERE Username = '" & username & "' AND CourseID = " & Request.QueryString("cosId") & " AND LocationID = " & Request.QueryString("locid") & " AND dateId = " & Request.QueryString("iddate") & ""
Dim connSt As String = ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString
Dim connc As New SqlConnection(connSt)
Dim cmdc As New SqlCommand(s, connc)
connc.Open()
cmdc.ExecuteNonQuery()
counter = cmdc.ExecuteScalar()
' Now let's see if we found existing record
If counter = 0 Then
'User hasn't signed up for this class yet
s = "INSERT INTO tblTrainings (CourseId, tblLocations.LocationId, dateId,AvailableSeats,username) VALUES (@CosID, @LocID, @dat, @Available_Seating, @Username)"
Dim cmd = New SqlCommand(s, conn)
cmd.Parameters.AddWithValue("@cosID", Request.QueryString("cosId"))
cmd.Parameters.AddWithValue("@locID", Request.QueryString("locid"))
cmd.Parameters.AddWithValue("@dat", Request.QueryString("iddate"))
cmd.Parameters.AddWithValue("@Available_Seating", 45 - 1)
cmd.Parameters.AddWithValue("@UserName", username)
conn.Open()