我有“总座位数”和“可用座位”。我如何管理这两个?

时间:2013-05-27 16:47:16

标签: asp.net sql-server vb.net

我努力为这个帖子找到合适的头衔。

原谅我并不清楚。

我们有一个名为Locations的表,其中包含以下属性:

locationID - 每个位置每个班级有30个容量座位 Capacity_Seating - 这是每个位置每个班级允许的总座位数。

当用户登录时,会向s / h显示可供选择的位置下拉列表。学员选择的位置是他/她将要参加培训的地点。

每个位置的容量座位为30。

用户登录后,他/她将被带到Trainring页面。培训显示有关课程的一般信息,包括培训的日期和时间,持续时间,容量座位以及最重要的可用座位或剩余座位。

如果座位仍然可用,用户可以单击注册以注册该特定培训。

注册此用户后,可用座位会更改。

例如,如果在该实习生注册之前有15个座位,那么在注册之后,可用的座位现在可以读取14个席位。

如果用户在最初注册后选择取消其座位,则只要不在培训日期的24小时内,受训者就可以这样做。

以下是我的问题。

1,我是否需要将另一个名为Available_Seats的字段添加到位置表或“培训”表中,以显示剩余的席位数,或者可以使用以下查询完成此操作:

选择(Capacity_Seating - 每次实习生注册时)??不知道如何处理这个。

2,我们希望使用寄存器来减去Capacity_SeatingCancel中的数字,以便将数字放回Capacity_Seating

非常感谢您的想法和帮助。

<ItemTemplate>
  <asp:LinkButton ID="Btncalc" runat="server" Text="Register" tooltip="Click to calculate" onclick="calc" />
    </ItemTemplate>
  </asp:TemplateField>
</ItemTemplate>

Sub calc(By​​Val sender As Object,ByVal e As System.EventArgs)     Dim objConnection As SqlConnection

Dim username = Session.Item("Username").ToString
' Dim strSQL As String
objConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("DBConnectionString").ConnectionString)
objConnection.Open()

strSQL = "update TrainingTable set employeeId='" & username
strSQL += "', AvailableSeats= AvailableSeats-1"
strSQL += " where location = '" & ddlLocation.SelectedValue.ToString & "'"
'Response.Write(strSQL)
'Response.End()
Dim cmdcommand As New SqlCommand(strSQL, objConnection)
cmdcommand.ExecuteNonQuery()

cmdcommand = Nothing
objConnection.Close()

objConnection = Nothing

End Sub

顺便说一下,标记是在gridview上。

2 个答案:

答案 0 :(得分:1)

对于您的第一个问题,您希望如何进行,主要归结为您想要做的事情。为表中的可用席位设置另一个字段或使用查询查找剩余的席位都是可行的选择。考虑到系统的基本结构,任何一个的好处或缺陷都可以忽略不计。看到你将使用特定的查询来不断地找到这条信息,将这个值作为表中的新字段添加将是更好的实践和意义。这将消除对特定查询的需要,并使这些数据对其他系统和查询更加公开。

对于你的第二个问题,我不太确定我会遵循它,但我会尽力给你最好的意见。您似乎想根据我不同意的注册和取消来更改每个表中的总容量字段。如果实际的位置总容量没有变化,则不应修改容量值。因此,我不会通过取消或注册更改总容量,而是更改新的可用座位字段。在查看该位置的容量时,这不会造成混淆,并且很容易找到可用的注册空间。

答案 1 :(得分:0)

这是一个简单的模块:

它为您提供了一个特定课程的选择,有两个场地,每个场地都有一个reg或adv选项(这不影响座位)

在此阶段我没有包含SQL OR服务器端脚本..此算法应该有所帮助。 您不需要在表中添加其他列,只需在实现程序时更新字段,如果取消了行,则可以删除该行。我没有包含代码...(它太长了!!!哈哈哈)

(注意这不是数据类型的错误检查 - 这是一个简单的格式来获得一个想法)

Module Module1


Sub main()
    Dim Seat As Object
    Dim Course As Object
    Dim Person1 As Integer
    Dim Venue1 As Integer
    Dim Venue2 As Integer
    Dim regular As Integer
    Dim Advanced As Integer
    Dim x As String

    Do
        Person1 = Person1 + 1
        If Venue1 = 30 Then
            Console.WriteLine("Venue1 is full")
        End If
        If Venue2 = 30 Then
            Console.WriteLine("Venue2 is full")
        End If

        Console.WriteLine("enter 1 for Venue1, 2 for Venue2")
        Seat = Console.ReadLine
        If Seat = 1 Then
            Venue1 = Venue1 + 1
        Else
            Venue2 = Venue2 + 1
        End If
        Console.WriteLine("Regular course = 1, Advanced course = 2")
        Course = Console.ReadLine
        If Course = 1 Then
            regular = regular + 1
        Else
            Advanced = Advanced + 1
        End If

        Console.WriteLine("Press enter to continue, r for reports or x to quit")
        x = Console.ReadLine
        If x = "r" Then
            Console.WriteLine("total Persons= " & Person1 & vbCrLf & "total Venue1= " & Venue1 & vbCrLf & "total Venue2=" & Venue2 & vbCrLf & "Course: regular " & regular & vbCrLf & "Advanced " & Advanced)
        ElseIf x = "x" Then
            Exit Do
        Else
        End If
    Loop Until Person1 = 60
    If Person1 = 60 Then
        Console.WriteLine("Course is full.")
    End If

End Sub
End Module

如果您需要更多帮助或清晰,请与我们联系。