แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - สันติสุข

หน้า: 1 ... 26 27 28 [29]
505
แก้ไข : คำตอบ #16 แกไขย่อหน้าสุดท้ายเป็น

Detele Query จะมีคำสั่งเป็น DELETE * FROM tbEmployeeOT WHERE <เงื่อนไขซึ่งเหมือนกับใน Append Query>

506
1. เอา SQL statement ที่ผมแก้ให้ ใส่เข้าไปแทนที่ของเดิมที่มีอยู่แล้วใน SQL View แล้วก็กด Save ครับ

2. สิ่งที่แนะนำคือ แทนที่จะรันแต่ Append Query เพียงอย่างเดียว ซึ่งก่อให้เกิดปัญหาคือถ้าทำ Append Query ที่ใช้เงื่อนไขเดียวกับที่มีก่อนหน้าซ้ำอีกครั้ง ข้อมูลใน tbEmployeeOT ก็จะเบิ้ล ก็เลยจะให้รัน Macro แทน ซึ่ง Macro ตัวนี้จะรัน Delete Query เพื่อลบสิ่งที่กำลังจะถูกเพิ่มเข้าไปใน tbEmployeeOT เสียก่อน แล้ว Macro ก็จะรัน Append Query ตัวเดิมต่อไป

Detele Query จะมีคำสั่งเป็น DELETE * FROM tbEmployeeOT WHERE ...ซึ่งมีเงื่อนไขเดียวกันกับใน Append Query... . SQL คุณบอกก่อนหน้านี้ว่า "พอ insert แล้ว insert ซ้ำ ข้อมูลจะเบิ้ล" ดังนั้นวิธีที่ผมแนะนำก็คือ ถ้าเผลอไปกด insert อีกรอบ ลบของที่บันทึกไปแล้ว

507
ขอโทษที่ตอบช้าครับ

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) ไปแล้ว

508
1. หมายถึง คุณรู้ได้ยังไงว่าซ้ำ (เบิ้ล) ดูจากฟิลด์อะไรบ้าง กี่ฟิลด์ หรือถ้าพูดทางศัพท์เทคนิคก็คือ Primary Key และ Unique Key มีฟิลด์อะไรบ้าง ไม่ใช่จำนวนข้อมูล

509
1 เราใช้น้อยที่สุดกี่ฟิลด์ ฟิลด์อะไรบ้าง ในการเปรียบเทียบกับตารางใหม่ เพื่อสามารถบอกได้ว่าข้อมูลชุดนี้ซ้ำแล้ว
2 คลิกดูคิวรี่ใน SQL View แล้วก็อปปี้คำสั่ง SQL statement ทั้งหมดมาให้ดูด้วย

510
ตามที่ผมตอบไปใน #5 ใช้ไม่ได้หรือ

511
การอ้างคอนโทรลบนฟอร์ม (เท็กซ์บ็อกซ์, คอมโบบ็อกซ์ ฯลฯ) ภายในคิวรี่ ก็ให้เขียนในรูปแบบ Forms![ชื่อฟอร์ม]![ชื่อคอนโทรล] ครับ เช่น between Forms![fm]![txt1] and Forms![fm]![txt2]

512
ไม่อย่างนั้นก็จะต้องเปิดไปมาระหว่างบอร์ดใหม่กับเก่าอยู่เรื่อยๆ เพราะบอร์ดเก่าก็อาจมีคนโพสถามในกระทู้ที่เคยมีอยู่ก่อนหน้าแล้วก็เป็นได้

513
สร้าง Append Query น่าจะตรงกับที่ต้องการมากกว่านะครับ โดยใน Append Query เราสามารถใส่เงื่อนไขในการเลือกฟิลด์ต่างๆเช่นเดียวกับฟอร์ม คือเดือนธันวา+แผนกบัญชี แล้วเลือกได้ว่าจะเอาฟิลด์อะไร ไปลงในฟิลด์อะไร ในเทเบิลอะไร(เพียงเทเบิลเดียว) หรือจะบวกรายได้พิเศษที่เป็นค่าคงที่หรือมาจากสูตรด้วยก็ได้ ก็สามารถทำไปพร้อมกันใน Query นี้ได้เช่นกัน

หน้า: 1 ... 26 27 28 [29]