 |
|
ขอความช่วยเหลือ เรียกห้องออกมาโชว์เฉพาะห้องที่ยังไม่เคยถูกจอง ครับ |
|
 |
|
|
 |
 |
|
ตาราง

หน้าเวป

ผมมีสองตาราง จอยกันครับ คือตารางแรกเป็นตารางห้อง และตารางสองเป็นตารางจอง
โดยจะให้ห้องที่ออกมา คือห้องที่ไม่ได้ถูกจอง โดยเช็คจากวันที่เลือก คือเช็คอิน กับ เช็คเอาท์
นี่ Code ของผมครับ
Code (ASP)
Dim strcon As SqlConnection = New SqlConnection("Data Source=JACKIE-PC;Initial Catalog=rsfab;Integrated Security=True")
Dim s As SqlCommand = New SqlCommand("select DISTINCT Test_Home.A_Home as 'บ้านเลขที่', Test_Home.Detail as'รายละเอียด', Test_Home.Limited as'พักสูงสุด', Test_Home.Rate as'ราคาต่อคืน', Test.D_In as'วันเข้า', Test.D_Out as'วันออก' from Test_Home INNER JOIN Test ON Test.A_Home = Test_Home.A_Home WHERE (NOT (D_In BETWEEN '" + dain.ToString("yyyy-MM-dd") + "' AND '" + daout.ToString("yyyy-MM-dd") + "')) AND (NOT (D_Out BETWEEN '" + dain.ToString("yyyy-MM-dd") + "' AND '" + daout.ToString("yyyy-MM-dd") + "')) ORDER BY Test_Home.A_Home ", strcon)
Dim resda As SqlDataAdapter = New SqlDataAdapter
resda.SelectCommand = s
strcon.Open()
Dim resds As DataSet = New DataSet
resda.Fill(resds)
strcon.Close()
GridView1.DataSource = resds
GridView1.DataBind()
ปัญหา คือถ้าในเบสผมไม่มีข้อมูลอยู่มันก็ไม่รู้จะเช็คเงื่อนไข อย่างไร ห้องมันก็ไม่ออกมาโชว์ครับ
ส่วนปัญหาที่สองคือ ซึ่งในเบสตอน นี้มี ห้อง 1,2,3,4,5,6 ถ้าผมบันทึกรายการจองใหม่ ห้อง 1 ซ้ำเข้าไป แต่คนละวัน มันก็จะโชว์ห้อง1ด้วยอยู่ดี เพราะมันเข้าเงื่อนไข ผมควรทำอย่างไรดีครับ
Tag : ASP.NET, Ms SQL Server 2008, Web (ASP.NET), VB.NET
|
|
 |
 |
 |
 |
Date :
2012-05-20 16:50:50 |
By :
jjASP |
View :
1093 |
Reply :
4 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คือใน เบส ถ้ามีรายการจอง ห้องที่ hom00001 วันที่ 17/5 ถึง 19/5
และผมบันทึกรายการจองเข้าไปใหม่ เป็น hom00001 วันที่ 21/5 ถึง 23/5
ซึ่งขั้นตอนต่อไป ผม select ห้องว่างออกมาโดยเลือกวันที่ 21/5 ถึง 23/5 เหมือนกัน ซึ่งวันที่นี้ห้องที่1 มีรายการจองไปแล้วไม่ควรออกมาแต่มันออกมาโชว์ด้วย ควรปรับอย่างไรดีครับ
ซึ่ง ในโคดผม เงื่อนไขมันคือ เอาห้องที่ไม่ถูกเลือกวันที่ระหว่างนั้นออกมาโชว์ แต่ห้อง1 มันมี 2 อัน อันแรกมันก็เข้าเงื่อนไขเหมือนกันมันเลยออกมาโชว์ด้วยผมควรแก้ไขอย่างไรดีครับ
|
 |
 |
 |
 |
Date :
2012-05-20 16:58:10 |
By :
jjASP |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ของผมมีที่ทำเป็น Stored Procedure ไว้นะครับ
ไม่รู้ว่าพอจะช่วยได้มั้ยแต่วัตถุประสงค์เดียวกันครับ คือหาห้องที่ว่างออกมา
เดี๋ยววันนี้จะลองตามดูเรื่อย ๆ นะครับ
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[SPWeb_GetAvailableRoomList]
@Plant VARCHAR(5),
@StartTime DATETIME,
@EndTime DATETIME,
@UserLV INT
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM meetingroom_v2 WHERE roomlocation=@Plant AND roomstatus='A' AND roomlv<=@UserLV AND roomID NOT IN (
SELECT room FROM roomreservation_v2 WHERE location=@Plant AND
(starttime BETWEEN CONVERT(VARCHAR(19),@StartTime,120) AND CONVERT(VARCHAR(19),@EndTime,120) OR
endtime BETWEEN CONVERT(VARCHAR(19),@StartTime,120) AND CONVERT(VARCHAR(19),@EndTime,120)))
END
|
 |
 |
 |
 |
Date :
2012-05-21 10:04:23 |
By :
Nebula |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แจ่มครับ
|
 |
 |
 |
 |
Date :
2012-05-21 20:43:55 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|