 |
|
[.NET]
C# ถามเรื่อง insert ข้อมูล แบบมีเงื่อนไขซ้ำค่ะ (asp.net) |
|
 |
|
|
 |
 |
|
ปัญหาก็คือจะต้องส่ง Format ให้ถูกน่ะครับ ใช้ BETWEEN ใน DateTime ก็จะต้องตรวจสอบว่าฟิวด์มันเป็น DateTime หรือไม่
|
 |
 |
 |
 |
Date :
2012-05-21 06:28:46 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะ
หมายถึงว่า
string Tin = DropDownList2.Text;
string Tout = DropDownList3.Text;
ต้องformat ตรงนี้ให้เป็น datetimeหรอคะ หรือยังไง
|
 |
 |
 |
 |
Date :
2012-05-21 08:51:47 |
By :
biw |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าฟิวด์เป็น DateTime มันสามารถ Compare เวลาได้ด้วยครับ เพียงแค่ส่ง Format ให้ถูกครับ
|
 |
 |
 |
 |
Date :
2012-05-21 20:54:50 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Compare 2ตัวนี้หรือเปล่าคะ DropDownList2.SelectedValue กับ DropDownList3.SelectedValue
|
 |
 |
 |
 |
Date :
2012-05-21 21:44:30 |
By :
biw |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อธิบายหน่อยได้มัย้คะ ไม่เข้าใจจริงๆ 
|
 |
 |
 |
 |
Date :
2012-05-22 09:19:57 |
By :
biw |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่ว่า แต่ก็มีปัญหาคือ
มีเวลาในฐานข้อมูลคือ 8.00 ถึง 12.00
ต้องการ จะ insert เวลา 12.00 ถึง 15.00 แต่ insertเข้าไปไม่ได้ค่ะ
ผมคิดว่าเป็นที่เวลาที่เราบันทึกเข้าไปเก็บด้วยนะครับ
ผมไม่แน่นะว่า แต่คิดว่าคุณน่าจะเก็บข้อมูลแบบนี้
timein >> 08:00:00 AM , timeout >> 12:00:00 PM
แต่ที่ผมทำคือจะแก้ค่าของเวลาก่อนบันทึกเข้าไป เป็นแบบนี้ครับ
timein >> 08:00:01 AM , timeout >> 12:00:00 PM *ตอนแสดงก็ค่อยแปลงให้สวยอีกที
ผมแถม Stored Procedure ที่เอาไว้เช็คการจองห้องซ้ำให้ด้วย คิดว่าน่าจะครอบคลุมเงื่อนไขมากกว่าครับ
01. set ANSI_NULLS ON
02. set QUOTED_IDENTIFIER ON
03. go
04. ALTER PROCEDURE [dbo].[spChkroomForAdd]
05. @Room varchar(10),
06. @Starttime datetime,
07. @Endtime datetime
08. AS
09. BEGIN
10. SET NOCOUNT ON;
11. SELECT room, starttime, endtime,reserve_by
12. FROM reservati0n
13.
14. WHERE (ROOM=@ROOM AND (CONVERT(VARCHAR(19),@Starttime,120) BETWEEN starttime AND endtime OR
15. CONVERT(VARCHAR(19),@Endtime,120) BETWEEN starttime AND endtime ))
16. OR (ROOM=@ROOM AND @Endtime > endtime AND @Starttime < starttime)
17. END
|
 |
 |
 |
 |
Date :
2012-05-22 09:51:08 |
By :
Nebula |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะ จะลองทำดูนะคะ
|
 |
 |
 |
 |
Date :
2012-05-22 10:32:33 |
By :
biw |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
งึม ๆ ถ้าเป็นอย่างนี้ก็อย่างที่พี่วินบอกนะครับ คือเก็บแบบ datetime แล้วโยน format ที่ถูกต้องไปให้มันตอนตรวจสอบ
เพราะจาก code แล้วมันผมว่ามันเอาทั้งวันที่ ทั้งเวลามาด้วยครับ
ถ้ายังไงขอดูตาราง dataschedule1 ได้มั้ยครับ ว่าเก็บอะไร เก็บยังไงบ้าง
ถ้าเป็นผมคงทำประมาณนี้
dataschedule1(xxPK, Day, timein, timeout, TeacherID, RoomID, SubjectID) >> จะได้ประมาณนี้
(1, Monday, 2012/05/22 08:00:01 AM, 2012/05/22 10:00:00 AM, 2, 7, 001) มีตาราง teacher , room , subject ไว้อ้างอิงอะไรก็ว่าไป
แล้วก็ค้นหาประมาณนี้
*dropdownlistDay >> ddlDay มี (mon,tue,...,fri)
ddltimein.SelectedValue , ddltimeout.SelectedValue >> dropdownlist ค่าเวลา 08:01 AM , 08:30 AM , ..... อะไรก็ว่าไป
Code
SELECT * FROM dataschedule1
WHERE (Day='ddlDay.SelectedValue' AND (CONVERT(VARCHAR(19),ddltimein.SelectedValue ,108) BETWEEN timein AND timeout OR
CONVERT(VARCHAR(19),ddltimeout.SelectedValue ,108) BETWEEN timein AND timeout ))
OR (Day=ddlDay.SelectedValue AND ddltimeout.SelectedValue > timeout AND ddltimein.SelectedValue < timein)
คิดว่าต้อง convert ddltimein.SelectedValue , ddltimeout.SelectedValue , timein , timeout ให้เป็นแบบ hh:mm:ss ทั้งหมดเลยครับเพราะเราเอาแค่เวลามาเปรียบเทียบร่วมกับ ddlDay แล้วค่อยควบห้องเข้าไปอีกทีเพราะโรงเรียนคงไม่ได้มีแค่ห้องเดียว
format hh:mm:ss ใช้ convert แบบนี้ครับ convert(varchar, getdate(), 108)
"http://www.technoreader.com/SQL-Server-Date-Time-Format.aspx"
ผมไม่ได้ลองนะว่า code ผมมัน OK รึเปล่า แต่คิดว่าน่าจะพอปรับ ๆ ให้ใช้ได้ครับ
ปล. ลองทำใน sql managment studio ดูครับ new query ขึ้นมา จะเร็วกว่าทำที่ฟอร์มจริง ๆ (มั้ง)
|
 |
 |
 |
 |
Date :
2012-05-22 11:57:28 |
By :
Nebula |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าเพิ่ม ห้องเรียน ลงไป
เช่น
ห้อง001 เวลา 8:00-12:00
แล้วจะinsert
ห้อง002 เวลา 8:00-12:00
มันก็ไม่ได้อ่ะค่ะ 
เหมือนมันล็อก 8:00-12:00 ไม่ให้insert
แบบนี้เราต้องแก้ไขที่ format เวลาเหรอคะ
|
 |
 |
 |
 |
Date :
2012-05-22 12:17:03 |
By :
biw |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ดีใจด้วยครับ 
|
 |
 |
 |
 |
Date :
2012-05-22 13:09:22 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันอยู่คู่พวกเราเสมอครับ ปัญหา datetime นี่แต่ก็สนุกดีครับ โฮะ ๆ ๆ 
|
 |
 |
 |
 |
Date :
2012-05-22 13:52:22 |
By :
Nebula |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|