Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > C# ถามเรื่อง insert ข้อมูล แบบมีเงื่อนไขซ้ำค่ะ (asp.net)



 

C# ถามเรื่อง insert ข้อมูล แบบมีเงื่อนไขซ้ำค่ะ (asp.net)

 



Topic : 078665

Guest




มี เวลา 8.00 ถึง 12.00 ในฐานข้อมูล

Code (C#)
string Tin =  DropDownList2.Text;
string Tout = DropDownList3.Text;
 "SELECT COUNT(*) FROM schedule where timein between ('" + Tin + "') and ('" +Tout + "') or timeout between ('" +Tin + "') and ('" +Tout+"') ";


ต้องการจะตรวจจับเวลาซ้ำ
ผลของคำสั่ง ได้ผลคือ
insert ข้อมูล 8.00 ถึง 11.00 ไม่ผ่าน
insert ข้อมูล 9.00 ถึง 10.30 ผ่าน (ทั้งที่มันซ้ำ)

ต้องแก้ไขยังไงบ้างคะ เพื่อจะให้ตรวจจับ เวลา 9.00 ถึง 10.30 ไม่ให้ insertเข้าไป



Tag : .NET, Ms SQL Server 2005, Web (ASP.NET), C#, VS 2010 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-05-20 16:44:16 By : biw View : 1661 Reply : 15
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ปัญหาก็คือจะต้องส่ง Format ให้ถูกน่ะครับ ใช้ BETWEEN ใน DateTime ก็จะต้องตรวจสอบว่าฟิวด์มันเป็น DateTime หรือไม่






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-21 06:28:46 By : mr.win
 


 

No. 2

Guest


ขอบคุณค่ะ

หมายถึงว่า

string Tin = DropDownList2.Text;
string Tout = DropDownList3.Text;

ต้องformat ตรงนี้ให้เป็น datetimeหรอคะ หรือยังไง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-21 08:51:47 By : biw
 

 

No. 3

Guest


แก้ไขได้แล้วค่ะ

แก้ที่คำสั่ง ตอนselect เป็น

Code
string sql1 = "SELECT COUNT(*) FROM dataschedule1 where timein < '" + DropDownList2.SelectedValue + "' and timeout > '" + DropDownList3.SelectedValue + "' or timein between '" + DropDownList2.SelectedValue + "' and('" + DropDownList3.SelectedValue + "') or timeout between '" + DropDownList2.SelectedValue + "' and('" + DropDownList3.SelectedValue + "') ";


แต่ก็มีปัญหาคือ
มีเวลาในฐานข้อมูลคือ 8.00 ถึง 12.00

ต้องการ จะ insert เวลา 12.00 ถึง 15.00 แต่ insertเข้าไปไม่ได้ค่ะ

ต้องแก้ไขยังไงบ้างคะ ขอบคุณค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-21 15:23:45 By : biw
 


 

No. 4



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ถ้าฟิวด์เป็น DateTime มันสามารถ Compare เวลาได้ด้วยครับ เพียงแค่ส่ง Format ให้ถูกครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-21 20:54:50 By : mr.win
 


 

No. 5

Guest


Compare 2ตัวนี้หรือเปล่าคะ DropDownList2.SelectedValue กับ DropDownList3.SelectedValue
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-21 21:44:30 By : biw
 


 

No. 6

Guest


อธิบายหน่อยได้มัย้คะ ไม่เข้าใจจริงๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-22 09:19:57 By : biw
 


 

No. 7

Guest


ที่ว่า แต่ก็มีปัญหาคือ
มีเวลาในฐานข้อมูลคือ 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 ที่เอาไว้เช็คการจองห้องซ้ำให้ด้วย คิดว่าน่าจะครอบคลุมเงื่อนไขมากกว่าครับ

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[spChkroomForAdd]
	@Room				varchar(10),
	@Starttime			datetime,
	@Endtime			datetime
AS
BEGIN
	SET NOCOUNT ON;
SELECT      room, starttime, endtime,reserve_by
FROM         reservati0n

WHERE (ROOM=@ROOM AND (CONVERT(VARCHAR(19),@Starttime,120) BETWEEN starttime AND endtime OR
      CONVERT(VARCHAR(19),@Endtime,120) BETWEEN starttime AND endtime ))
	  OR (ROOM=@ROOM AND @Endtime > endtime AND @Starttime < starttime)
END

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-22 09:51:08 By : Nebula
 


 

No. 8

Guest


ขอบคุณค่ะ จะลองทำดูนะคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-22 10:32:33 By : biw
 


 

No. 9

Guest


ได้แล้วค่ะ

ระบบที่่ทำ เป็นระบบจัดตารางสอน

มันมีการเก็บค่า วันด้วย (จันทร์-ศุกร์)

ได้insert ข้อมูล
วันจัน เวลา 8:30 - 12:30

แต่พอ
จะ insert ข้อมูล
วันอังคาร เวลา 8:30 - 12:30
มันinsertเข้าไปไม่ได้

ตอนนี้เขียนแบบนี้อยู่ค่ะ แต่มันก็ยังinsertไม่ได้

Code (C#)
sql = "SELECT COUNT(*) FROM dataschedule1  where date ='" + textBox1.Text+ "' and '" + DropDownList2.SelectedValue + "' between timein and timeout or '" + DropDownList3.SelectedValue + "' between timein and timeout and '" + DropDownList3.SelectedValue + "'))";



พอจะมีวิธีแก้ไขบ้างมั้ยคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-22 10:47:48 By : biw
 


 

No. 10

Guest


งึม ๆ ถ้าเป็นอย่างนี้ก็อย่างที่พี่วินบอกนะครับ คือเก็บแบบ 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
 


 

No. 11

Guest


ในตาราง dataschedule1 เก็บข้อมูลคือ

id (int)
day (varchar(50))
timein (time(7))
timeout (time(7))
room (varchar(50))
subject (varchar(50))
section (varchar(50))
teacher (varchar(50))
semester (varchar(50))


นี่คือหน้าpageที่ insertค่ะ

page insert
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-22 12:09:32 By : biw
 


 

No. 12

Guest


ถ้าเพิ่ม ห้องเรียน ลงไป

เช่น

ห้อง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
 


 

No. 13

Guest


ได้แล้วค่ะ
ขอบคุณมากค่ะ พี่วิน กับ คุณ Nebula

ใช้

Code
string sql1 = "SELECT * FROM dataschedule1 WHERE (room = '" + TextBox3.Text + "' and date ='" + DropDownList1.SelectedValue + "' AND (CONVERT(VARCHAR(19),'" + DropDownList2.SelectedValue + "',108) BETWEEN timein AND timeout OR CONVERT(VARCHAR(19),'" + DropDownList3.SelectedValue + "' ,108) BETWEEN timein AND timeout )) OR (room = '" + TextBox3.Text + "' and date = '" + DropDownList1.SelectedValue + "' AND '" + DropDownList3.SelectedValue + "' > timeout AND '" + DropDownList2.SelectedValue + "' < timein)";




ขอบคุณมากๆเลยนะคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-22 13:02:10 By : biw
 


 

No. 14



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ดีใจด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-22 13:09:22 By : mr.win
 


 

No. 15

Guest


มันอยู่คู่พวกเราเสมอครับ ปัญหา datetime นี่แต่ก็สนุกดีครับ โฮะ ๆ ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-22 13:52:22 By : Nebula
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# ถามเรื่อง insert ข้อมูล แบบมีเงื่อนไขซ้ำค่ะ (asp.net)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่