2

このスレッドのタイトルが意味をなすことを願っています。

以下のスクリーンショットをご覧ください。

ここに画像の説明を入力

上半分は、トレーニングにサインアップした 2 人のユーザーのデータベースを示しています。

デフォルトでは、45 シートのキャパシティがあります。

  • userB がサインアップした後、残りは 44 です。

  • その後、userA がサインアップし、現在 43 席が利用可能です。

ここまでは順調ですね。

しかし、そのスクリーンショットの下半分を見てください。画面には、利用可能な 43 席と 44 席が表示されていることに注意してください。これはユーザーにとって非常に混乱を招きます。利用可能な最小数を表示するにはどうすればよいでしょうか? つまり、サインアップするたびに、残りの座席を表す番号のみを表示します。上記の例では、43 になります。

次に別のユーザーがサインアップすると、この数は 1 減って 42 になります。これは、ユーザーがそのクラスにサインアップした場所とクラスの日付ごとに表示したい数です。

以下は私が使用しているコードです。

availableSeats の最小数である最新の数だけを表示するように微調整するにはどうすればよいですか?

<asp:SqlDataSource ID="sqlDataSourceloc" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
    SelectCommand="SELECT locationId, Location FROM tblLocations order by location asc"></asp:SqlDataSource>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
 SelectCommand="select DISTINCT l.LocationId,c.courseId, c.coursename, (case when isnull(t.availableSeats,30) = 0 then 'Class is full' 
                else  str(isnull(t.availableSeats,30)) end) availableSeats,d.dateid,d.trainingDates, d.trainingtime, c.CourseDescription,i.instructorName, l.location,l.seating_capacity 
                from tblLocations l
                Inner Join tblCourses c on l.locationId = c.locationId
                left join tblTrainings t on l.locationId = t.LocationId and c.courseId = t.courseId
                Inner Join tblTrainingDates d on c.dateid=d.dateid 
                Inner Join tblCourseInstructor ic on c.courseId = ic.CourseId  
                Inner Join tblInstructors i on ic.instructorId = i.instructorId" 
      FilterExpression="LocationId = '{0}'" >
<FilterParameters>
 <asp:ControlParameter ControlID="ddlLocation" Name="LocationId" 
  PropertyName="SelectedValue" Type="Int32" />
 </FilterParameters>
</asp:SqlDataSource>
4

2 に答える 2

1

新しいユーザーがコースにサインアップするときは、

UPDATE table_name
SET AvailableSeats = ...
WHERE TrainingID=... AND CourseId=...

を行うのではなくINSERT

一意の (DateId、LocationId、CourseId) セットの値を持つ行は 1 つだけである必要があります。

于 2013-06-17T14:19:23.140 に答える