507
« เมื่อ: 15 ม.ค. 61 , 23:48:59 »
ขอโทษที่ตอบช้าครับ
1). SQL ที่ให้มา ไม่จำเป็นต้องทำ Group นะครับ เพราะไม่ได้ใช้ประโยชน์อะไรจากการ Group ไปใช้งานเลย ดังนั้น SQL ก็ลดรูปลงมาแค่นี้ก็พอ
INSERT INTO tbEmployeeOT ( Emp_docNum, Emp_ID, Emp_TitleName, Emp_Name, Emp_Surname, Emp_Branch, Emp_Dep, Emp_Div, Emp_Position, Emp_RangLevel, Emp_Level, Emp_Date, Emp_TypeWork, Emp_Timein, Emp_Timeout, Emp_DedugPay )
SELECT dbo_ViewTimeOTMonthly.Period, dbo_ViewTimeOTMonthly.Employee3, dbo_ViewTimeOTMonthly.TitleEng, dbo_ViewTimeOTMonthly.Name1, dbo_ViewTimeOTMonthly.Lastname1, dbo_ViewTimeOTMonthly.Branch, dbo_ViewTimeOTMonthly.department, dbo_ViewTimeOTMonthly.divition, dbo_ViewTimeOTMonthly.Positionn, dbo_ViewTimeOTMonthly.RangLevel, dbo_ViewTimeOTMonthly.Level, dbo_ViewTimeOTMonthly.Date, dbo_ViewTimeOTMonthly.TypeDay, dbo_ViewTimeOTMonthly.InTime, dbo_ViewTimeOTMonthly.OutTime, dbo_ViewTimeOTMonthly.disOT
FROM dbo_ViewTimeOTMonthly
WHERE (((Year([date]))>=[Forms]![FormSelect]![cbbYearS] And (Year([date]))<=[Forms]![FormSelect]![cbbYearE]) AND ((Month([date]))>=[Forms]![FormSelect]![cbbmonthS] And (Month([date]))<=[Forms]![FormSelect]![cbbMonthE]) AND ((Day([date]))>=[Forms]![FormSelect]![cbbDateS] And (Day([date]))<=[Forms]![FormSelect]![cbbDateE]));
2). ผมว่าเอาแบบง่ายๆในการจัดการกับข้อมูลซ้ำก็คือสร้าง Delete Query ที่มีเงื่อนไข (ส่วนของ WHERE clause) เหมือนกับ Append Query ไปเลย แล้วสร้าง Macro ขึ้นมา 1 ตัวซึ่งในนั้นประกอบไปด้วยคำสั่ง 3 คำสั่งตามลำดับต่อไปนี้คือ
- SetWarnings ให้มีค่าพารามิเตอร์เป็น No ... เราทำคำสั่งนี้เพื่อไม่ให้ Delete Query และ Append Query มาถามว่าต้องการทำงานคิวรี่หรือไม่ แต่ถ้าเราต้องการ บรรทัดคำสั่งนี้ก็ให้ตัดทิ้งไป
- OpenQuery ให้พารามิเตอร์ของชื่อคิวรี่เป็นชื่อของ Delete Query ที่ได้สร้างไป
- OpenQuery ให้พารามิเตอร์ของชื่อคิวรี่เป็นชื่อของ Append Query ที่ได้แก่ไขตามที่บอกในข้อ 1) ไปแล้ว