0

我在 2 个不同的表上有 2 个字段名。

一个字段名称称为 SeatCapacity。此字段名称的值为 45,它位于名为 Locations 的表中

然后在名为 tblMain 的表上还有另一个名为 RemainingSeats 的字段。

tblMain 表包含注册的详细信息,例如注册者的 loginId、注册的课程、培训日期等。

此 RemainingSeats 字段名称应包含初始值 45,就像 SeatCapacity 一样。

每次一个人报名一个席位,RemainingSeats 都会减去 1。

例如,如果 RemainingSeats 是 45 并且我注册了一个座位,那么 RemainingSeats 现在应该只有 44。

这种情况一直持续到 RemainingSeats 为 0,在这种情况下,没有人可以再注册。

这是我现在的问题。

1、如何将初始值45赋给RemainingSeats?

SeatCapacity 应始终显示要注册的总座位数,而 RemainingSeats 应仅显示剩余座位数。

我尝试在 ssms 的设计模式下将 45 添加到 tblMain 作为默认值,但我看不到这个值。

2,当我尝试执行如下插入语句时:

 s = "INSERT INTO tblMain (CourseId, LocationId, dateId,RemainingSeats) VALUES "
        s += "(" & Request.QueryString("cosId") & ", " & Request.QueryString("locid") & ", " & Request.QueryString("iddate") & ",(RemainingSeats-1) )"

我收到以下错误:

在这种情况下,不允许使用名称“RemainingSeats”。有效表达式是常量、常量表达式和(在某些情况下)变量。不允许使用列名。

我该如何解决这些问题?

非常感谢提前

下面的代码应该加载训练详细信息,但现在它显示为空白,因为 tblMain 中不存在任何记录。

SelectCommand="select l.LocationId,c.courseId, c.coursename,tm.trainingMode,t.availableSeats,d.dateid,d.trainingDates, d.trainingtime, c.CourseDescription,i.instructorName, l.location,l.seating_capacity 
                        from tblCourses c,tblMain t,tblTrainingDates d, tblLocations l,tblInstructors i, tblCourseInstructor ic, tblTrainingMode tm
                        where c.courseId = ic.CourseId and i.instructorId = ic.instructorId and l.locationid = c.locationid
                        and c.dateid=d.dateid and t.locationId = l.locationId and tm.trainingModeId = c.trainingModeId" 
              FilterExpression="LocationId = '{0}'" >
        <FilterParameters>
4

2 回答 2

0

如果您有一个保留 SeatCapacity 的地方,那么为什么不从那里复制它。

我注意到您在 tblMain 中创建行之前知道 LocationID,并且在 Location 表中您有一个 SeatCapacity,因此 SQL 查询将是:

...请使用插入数据的参数...

INSERT INTO tblMain(CourceId, LocationId, dateId, RemainingSeats) 
(SELECT @CourceID
, @LocationID
, @DateID
, SeatCapacity FROM Locations WHERE ID=@LocationID);

在 VB.NET 添加参数将是:

Dim param AS New System.Sql.SqlClient.SqlParameter("@CourceID", Request.QueryString("cosId"))

... 等等

然后将参数添加到您的 SqlCommand 并执行查询

于 2013-06-01T21:33:34.557 回答
0

假设 Locations 表有一个名为的主键,locationID那么可以编写为 tblMain 表设置初始值的查询

s = "INSERT INTO tblMain (CourseId, LocationId, dateId,RemainingSeats) VALUES " +
    "(@cosID, @locID, @dat (SELECT TOP(1) SeatCapacity from Location WHERE LocationID = @locID))"

Dim cmd = new MySqlCommand(s, con)
cmd.Parameters.AddWithValue("@codID", Request.QueryString("cosId"))
cmd.Parameters.AddWithValue("@locID", Request.QueryString("locid")) 
cmd.Parameters.AddWithValue("@dat", Request.QueryString("iddate")) 

请注意,我不知道 CourseID 和 LocationId 的确切数据类型,如果它们是数字,那么您需要转换为从查询字符串中检索到的值的编号

现在更新操作非常简单。只是

s = "UPDATE tblMain SET RemainingSeats = RemainingSeats - 1 WHERE " 
    "CourseID = @cosID AND LocationID = @locId AND dateId = @dat"
....
于 2013-06-01T21:34:12.320 回答