 |
|
ขอความช่วยเหลือค่ะ ต้องการ add ช่วงวันที่ของ start date กับ end date ใน sql |
|
 |
|
|
 |
 |
|
รบกวนดู Code หน่อยค่ะ คือต้องการ Add ช่วงวันที่เริ่มลา ถึง วันสิ้นสุดการลาค่ะ บันทึกใน table การลา เช่น
วันที่เริ่มลา 2017-02-16 สิ้นสุดการลา 2017-02-17
ผลลัพธ์ที่ต้องการ คือ
Employee ID Name LastName Position A BB Job Zone LeaveType StartDate EndDate TotalLeave Description
4801575 ประจงจิตต์ เดชเกลี้ยง ผู้ช่วยผู้จัดการแผนก Support ลาพักร้อน 2017-02-16 2017-02-17 2 พักผ่อน
4801575 ประจงจิตต์ เดชเกลี้ยง ผู้ช่วยผู้จัดการแผนก Support ลาพักร้อน 2017-02-17 2017-02-17 2 พักผ่อน
แต่จากการเขียน code ผลลัพธ์ที่ได้คือ
Employee ID Name LastName Position A BB Job Zone LeaveType StartDate EndDate TotalLeave Description
4801575 ประจงจิตต์ เดชเกลี้ยง ผู้ช่วยผู้จัดการแผนก Support ลาพักร้อน 2017-02-16 2017-02-17 2 พักผ่อน
4801575 ประจงจิตต์ เดชเกลี้ยง ผู้ช่วยผู้จัดการแผนก Support ลาพักร้อน 2017-02-17 2017-02-17 2 พักผ่อน
4801575 ประจงจิตต์ เดชเกลี้ยง ผู้ช่วยผู้จัดการแผนก Support ลาพักร้อน 2017-02-17 2017-02-17 2 พักผ่อน
คือ add เกินมา 1 วันค่ะ
Employee ID Name LastName Position A BB Job Zone LeaveType StartDate EndDate TotalLeave Description
4801575 ประจงจิตต์ เดชเกลี้ยง ผู้ช่วยผู้จัดการแผนก Support ลาพักร้อน 2017-02-17 2017-02-17 2 พักผ่อน
รบการช่วยดู Code ให้ด้วยค่ะ
Code (VB.NET)
Private Sub Btnabsent_Click(sender As Object, e As EventArgs) Handles Btnabsent.Click
Dim iCheck As String
Dim idate1 As String
idate1 = CStr(Format(Dtpstrdate.Value, "yyyy-MM-dd"))
Dim idate2 As String
idate2 = CStr(Format(DtpEndDate.Value, "yyyy-MM-dd"))
Dim datex As Date
Dim iloop As Boolean = False
datex = Dtpstrdate.Value
If confirm("คุณต้องการเพิ่มข้อมูล หรือไม่?") = vbNo Then Return
'For i As Integer = 0 To ts
For i As Integer = 0 To DateDiff(DateInterval.Day, Dtpstrdate.Value, DtpEndDate.Value)
sql = "select count(*) from tblLeave where [Job] = '" & txtjob2.Text & "'and StartDate = '" & datex.ToString("yyyy-MM-dd") & "'"
iCheck = cx.ExecuteScalar(sql)
' Debug.Print(datex.ToString("yyyy-MM-dd") & " " & iCheck)
If iCheck > 1 Then
fail("ไม่สามารถ Plan ลาได้เนื่องจากฝั่ง'" & txtjob2.Text & "' มีคนลาครบแล้ว ในวันที่ " & datex.ToString("dd/MM/yyyy"))
txtid2.Select()
iloop = True
Return
Else
sql = ""
sql = "insert into tblLeave values('" & txtid2.Text & "','" & txtname2.Text & "','" & txtlastname2.Text & "','" & txtposition2.Text & "','" & txtA2.Text & "','" & txtBB2.Text & "','" & txtjob2.Text & "','" & txtzone2.Text & "','" & cboleave.Text & "','" & datex.ToString("yyyy-MM-dd") & "','" & idate2.ToString & "','" & txttotalleave.Text & "','" & txtcom.Text & "')"
cx.Execute(sql)
iloop = False
End If
datex = datex.AddDays(1)
Next
If iloop Then
Return
End If
If cmd_excuteNonquery() = 0 Then
fail("เพิ่มข้อมูลไม่สำเร็จ")
Else
ok("เพิ่มข้อมูลเรียบร้อยแล้ว")
refresh_all_data_userid()
txtid2.Text = ""
txtname2.Text = ""
txtlastname2.Text = ""
txtposition2.Text = ""
txtA2.Text = ""
txtBB2.Text = ""
txtjob2.Text = ""
txtzone2.Text = ""
txtphone.Text = ""
cboleave.Text = ""
Dtpstrdate.Value = Now
DtpEndDate.Value = Now
txttotalleave.Text = ""
txtcom.Text = ""
txtid2.Select()
End If
End Sub
รบกวนด้วยน่ะค่ะ
Tag : .NET, Ms SQL Server 2008, VB.NET
|
|
 |
 |
 |
 |
Date :
2017-02-10 08:51:03 |
By :
nuch_fin |
View :
1007 |
Reply :
19 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

วันที่ลาจะเกิดจากการ ใช้ Date time picker ค่ะ แล้วต้องแก้ code ยังไงค่ะ
|
 |
 |
 |
 |
Date :
2017-02-10 11:00:34 |
By :
ืีืnuch_fin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แต่มัน add วันที่มาเกิน 1 วันอ่ะค่ะ
คือลา 16-17/02/2017
แต่่ผลลัพธ์ที่ได้คือ

จริงๆคือต้องการให้พนักงานมาคีย์ลาเองเลยค่ะ ถ้าคีย์แล้วพบว่าวันที่ลาเกินโควต้าของจุดงานตัวเอง ที่กำหนดไว้ระบบก็จะไม่ยอมให้ลาค่ะ
|
ประวัติการแก้ไข 2017-02-10 11:39:53
 |
 |
 |
 |
Date :
2017-02-10 11:36:27 |
By :
nuch_fin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณค่ะเดี่ยวจะไปออกแบบตารางใหม่ดูก่อนค่ะ 
|
 |
 |
 |
 |
Date :
2017-02-10 11:48:01 |
By :
nuch_fin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ table แล้วค่ะ
แต่มัน show ผลลัพธ์เหมือนเดิม คือมันเบิ้ลวันสุดท้ายมาอีกค่ะ

|
 |
 |
 |
 |
Date :
2017-02-10 13:45:33 |
By :
nuch_fin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@นุช, All
--- ผมเห็นวิธีคิดของพวกคุณ/ผสมผสานกับการเขียนโปรแกรม (โปรแกรมเมอร์/โปรแกรมมิ่ง) จนชินตา
--- เด็กอายุ 50 ปี ชักปืนยิง เด็กอายุ 17 นัดเดียว ตายคาที่ ใครถูกใครผิด กรรมเป็นเครื่องกำหนด (วันพรุ่งนี้เป็นวันพระใหญ่)
--- ใครถูกใครผิดผมไม่สนใจ (ผมคิดในใจ สติปัญญาเขลาทั้งคู่/รวมถึงทุกฯคนที่อยู่ในเหตุการณ์)
ผมถามพวกคุณกลับแค่นี้ว่า
--- เมียน้อยของผมเกิดวันที่ 29 เดือนกุมภาพันธ์ พ.ศ. 2550
------ ในปี พ.ศ. 2551 ผมอยากจัดงานวันเกิดให้หล่อนได้หรือไม่? (ครบรอบวันเกิด)
ปล. ภรรยาของผมอาทิตย์หนึ่งผมให้ไปทำงานแค่วันเดียว (เดือนละ 4 วัน)
---- คนที่สมควรจะโดนไล่ออกก็คือ คนที่ไปทำงานทุกวันและไร้ซึ่งความฝัน (ไม่ใช่คนที่ขายฝัน)
|
 |
 |
 |
 |
Date :
2017-02-11 00:00:15 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เล่าเรื่องจริงให้ฟังนะ
--- พ่อก็จังไรแม่ก็จังไร พยายามมิให้ลูกรู้จักคำวา "จังไร"
...
...
...
พ่อถามลูกว่า? : หิวข้าวไหมลูก
ลูก:...
แม่ถามลูกว่า? : ได้ยินที่พ่อเขาถามไหมลูก
ลูก...
...
...
...
มีต่อ...
...
...
ปล. ภรรยาของผมคือเมียของผม และผมเป็นคนที่ขายความฝัน
|
 |
 |
 |
 |
Date :
2017-02-11 00:44:10 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@ TOR_CHEMISTRY ยังใช้ Code เดิมอยู่ค่ะ
|
 |
 |
 |
 |
Date :
2017-02-11 06:02:58 |
By :
nuch_fin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@ คุณ Rookie ค่ะ
แกไขตามที่บอกแล้วแต่ผลลัพธ์ที่ได้คือ

ลา 11-12/02/2017 แต่มัน Show แค่วันที่ 11/02/2017 จำนวน 2 Recordค่ะ
|
 |
 |
 |
 |
Date :
2017-02-11 06:38:28 |
By :
nuch_fin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ประมาณนี้นะครับ
Code (VB.NET)
Do
Me.DateTimePicker1.Value.AddDays(1)
MessageBox.Show(Me.DateTimePicker1.Value)
Loop Until Me.DateTimePicker1.Value >= Me.DateTimePicker2.Value
|
 |
 |
 |
 |
Date :
2017-02-11 09:14:07 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@ คุณ TOR_CHEMISTRY คือเปลี่ยนจากใช้ for next เป็น Do loop หรือเปล่าค่ะ เพิ่งหัดเขียนไม่ค่อยเข้าใจเท่าไหร่ค่ะ
รบกวนด้วยน่ะค่ะ
|
 |
 |
 |
 |
Date :
2017-02-11 09:42:25 |
By :
nuch_fin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
@นุช โค๊ดเดิมของหนูมันผิดอยู่นิดเดียว ตรงวันที่เท่านั้น
Code (VB.NET)
Dim days As Byte = Dtpstrdate.Value.Subtract(dtpEndDate.Value).Days + 1
Dim startDate As DateTime = dtpStartDate.Value
Dim strfixedDate As String = String.Empty
Dim sql As String = String.Empty
For i As Integer = 0 To days - 1
'2017-01-31 (ระบุให้เป็นปี ค.ศ)
strfixedDate = startDate.Year.ToString("D4") & "-" & startDate.Month.ToString("D2") & "-" & startDate.Day.ToString("D2")
sql = "select count(*) from tblLeave where [Job] = '" & txtjob2.Text & "'and StartDate = '" & strfixedDate & "'"
'Execute your SQL
If iCheck > 1 Then
Else
sql = "insert into tblLeave values('" & strfixedDate & "')"
End If
startDate = startDate.AddDays(1)
Next
|
 |
 |
 |
 |
Date :
2017-02-12 08:26:49 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คำสั่ีง cmd_excuteNonquery คืออะไรเหรอครับ
If cmd_excuteNonquery() = 0 Then
fail("เพิ่มข้อมูลไม่สำเร็จ")
|
 |
 |
 |
 |
Date :
2017-02-14 09:23:22 |
By :
fonfire |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|