สอบถามวิธีการ นำข้อมูลที่ Filter ได้แล้ว ไปใส่ใน table ครับ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

06 ม.ค. 61 , 16:01:51
อ่าน 2055 ครั้ง

tomkungz

  • สมาชิกไท.Access
  • กระทู้: 24

    • ดูรายละเอียด

สวัสดีครับ ผมเพิ่งสมัครสมาชิกวันนี้เนื่องจากติดปัญหาครับ

ผมเขียนไม่ค่อยเก่งขออธิบายกว้างๆ ก่อนนะครับ
คือผมมีข้อมูลอยู่ใน SQL และต้องการนำข้อมูลนั้นมาคิวรี่ แล้วปรับแต่งข้อมูลจากนั้นก็ทำรีพอร์ทครับ
ข้อมุลผมีตามนี้นะครับ
1. ผมมี ตาราง ที่แสดงข้อมูลเวลาเข้างานของพนักงานทั้งหมด ใช้วิธี Link Table จาก sql มาแสดงใน access เรียบร้อยแล้ว
2. ต่อผมทำ from เพื่อ จะ filter เอาเฉพาะช่วงวันที่ และกลุ่มคนที่ต้องการ และแสดงข้อมูลใน from แบบ DataSheet ได้ข้อมูลที่ต้องการแล้ว

ทีนี้ติดปัญหาตรงนี้ครับ ผมจะเอาข้อมูลที่ Filter แล้ว ไปใส่ใน ตารางใหม่ เพื่อจะสร้างเลขที่เอกสารครั้งนี้ เช่นการ filter เอาเฉพาะ เดือน ธันวาคม ของแผนกบัญชี ผมก็จะนำข้อมูลที่ filter ได้นี้ไปสร้างเป็นเอกสารเลขที่ 1 ที่มีข้อมุล filter ของ เดือนธันวาคม แผนกบัญชี

และหลังจากนี้เมื่อผมนำข้อมูลที่ filter ไปใส่ในตารางใหม่ได้แล้วผมก็จะทำการแก้ไขข้อมูลเช่น + รายได้พิเศษ และบันทึกอีกครั้ง ก่อนออกรายงานครับ

เล่ายาวมาก ที่ผมต้องการทราบคือทำยังไงจะเอาข้อมุลที่ Filter แล้ว ไปใส่ในตารางใหม่ และรันเลขที่เอกสารได้ครับ

หากผมให้ข้อมูลไม่ครบ รบกวนแจ้งได้เลยนะครับ
ผมแนบรูปตัวอย่างข้อมูลที่ กรองแล้วครับ


 


08 ม.ค. 61 , 14:49:44
ตอบกลับ #2

สันติสุข

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

09 ม.ค. 61 , 16:00:42
ตอบกลับ #3

tomkungz

  • สมาชิกไท.Access
  • กระทู้: 24

    • ดูรายละเอียด

Append Query คืออะไรอะครับเด๋วผมลองหา google ดูก่อน เบื้องต้นครับ
แต่ส่วนเรื่องคิวรี่รายได้พิเศษพร้อมสุตร ผมทำมาแล้วครับ แต่ประเด็นคือ เค้าจะต้องตัดได้ว่าไม่ให้ แม้ว่าสูตรจะคำนวณว่าให้น่ะครับ เลยต้องเอาไปลง table ก่อนแล้วดึงมาเปิดในฟอร์มเพื่อแก้
ติดยังไงจะมาถามต่อนะครับ
หรือถ้ามีตัวอย่างให้ดูรบกวนขอด้วยนะครับ

 

09 ม.ค. 61 , 16:18:55
ตอบกลับ #4

tomkungz

  • สมาชิกไท.Access
  • กระทู้: 24

    • ดูรายละเอียด

ลองดูแล้วครับ ใช่เลยแบบนี้ เด๋วลองศึกษาก่อนว่าสามารถตั้งเงื่อนไขใน form แล้วสั่งรัน query ได้มั้ย ถ้าได้ก็จบเลย ขอบคุณมากครับ

 

09 ม.ค. 61 , 16:53:19
ตอบกลับ #5

สันติสุข

การอ้างคอนโทรลบนฟอร์ม (เท็กซ์บ็อกซ์, คอมโบบ็อกซ์ ฯลฯ) ภายในคิวรี่ ก็ให้เขียนในรูปแบบ Forms![ชื่อฟอร์ม]![ชื่อคอนโทรล] ครับ เช่น between Forms![fm]![txt1] and Forms![fm]![txt2]
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

11 ม.ค. 61 , 16:10:23
ตอบกลับ #6

tomkungz

  • สมาชิกไท.Access
  • กระทู้: 24

    • ดูรายละเอียด

ถ้าเราต้องการ สร้าง form แล้วใส่เงื่อนไขตรง combobox จากนั้นโยนค่าเข้าไปที่ append query สามารถทำได้หรือไม่ครับ ลองดูแล้ว งง นิดหน่อยครับ สั่งรัน ได้แต่ โยนเงื่อนไขไม่ได้

 

11 ม.ค. 61 , 16:43:57
ตอบกลับ #7

สันติสุข

ตามที่ผมตอบไปใน #5 ใช้ไม่ได้หรือ
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

11 ม.ค. 61 , 17:40:53
ตอบกลับ #8

tomkungz

  • สมาชิกไท.Access
  • กระทู้: 24

    • ดูรายละเอียด

อ๋อ ตอนแรกผมอ่านไม่เข้าใจ ลองทำแล้วใช้ได้ครับ ขอบคุณครับ
ตอนนี้ติดปัญหา พอ insert แล้ว insert ซ้ำ ข้อมูลจะเบิ้ล เราควรให้คิวรี่เช็คข้อมูลในตารางก่อนหรือป่าวครับ

 

11 ม.ค. 61 , 19:50:24
ตอบกลับ #9

สันติสุข

1 เราใช้น้อยที่สุดกี่ฟิลด์ ฟิลด์อะไรบ้าง ในการเปรียบเทียบกับตารางใหม่ เพื่อสามารถบอกได้ว่าข้อมูลชุดนี้ซ้ำแล้ว
2 คลิกดูคิวรี่ใน SQL View แล้วก็อปปี้คำสั่ง SQL statement ทั้งหมดมาให้ดูด้วย
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

12 ม.ค. 61 , 09:00:52
ตอบกลับ #10

tomkungz

  • สมาชิกไท.Access
  • กระทู้: 24

    • ดูรายละเอียด

ตอบข้อ 1. จำนวนที่ผมใช้ ขึ้นอยุ่กับการกรองวันที่และแผนกครับ ถ้าน้อยสุดน่าจะ 1 วัน แต่จำนวนอาจจะ 1 ถึง 7 row ตามจำนวนพนักงานในแผนกนั้น
ตอบข้อ 2. SQL view ตามนี้ครับ
โค๊ด: [Select]
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

GROUP BY 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, Year([date]), Month([date]), Day([date])

HAVING (((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]));

 

12 ม.ค. 61 , 12:04:30
ตอบกลับ #11

สันติสุข

1. หมายถึง คุณรู้ได้ยังไงว่าซ้ำ (เบิ้ล) ดูจากฟิลด์อะไรบ้าง กี่ฟิลด์ หรือถ้าพูดทางศัพท์เทคนิคก็คือ Primary Key และ Unique Key มีฟิลด์อะไรบ้าง ไม่ใช่จำนวนข้อมูล
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

12 ม.ค. 61 , 13:09:42
ตอบกลับ #12

tomkungz

  • สมาชิกไท.Access
  • กระทู้: 24

    • ดูรายละเอียด

ถ้า user เลือกวันที่ เดิม เช่น 1 - 7 มกราคม ไปแล้ว 1 ครั้ง แล้วก็มาปรับอีก โดยเลือกช่วงวันที่เดิม จากนั้นกด คิวรี่ วันที่ 1-7 ก็จะมี อย่างละ 2 ครับ
« แก้ไขครั้งสุดท้าย: 12 ม.ค. 61 , 13:18:56 โดย tomkungz »

 

13 ม.ค. 61 , 15:57:23
ตอบกลับ #13

tomkungz

  • สมาชิกไท.Access
  • กระทู้: 24

    • ดูรายละเอียด

ฟิวที่น่าจะจับว่าซ้ำกันคือ
รหัสพนักงาน วันที่ เวลาเข้า เวลาออก

 

15 ม.ค. 61 , 23:48:59
ตอบกลับ #14

สันติสุข

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

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) ไปแล้ว
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

16 ม.ค. 61 , 11:04:30
ตอบกลับ #15

tomkungz

  • สมาชิกไท.Access
  • กระทู้: 24

    • ดูรายละเอียด

1.พอดีตรง sql เนี่ย ระบบ ใส่ไว้ให้เองผมแก้ไม่ถูก 555+ เด๋วลองปรับดูครับ

2. แปลว่าถ้าผม append มาปรับแก้ จำนวนอะไรเสร็จแล้ว ผมต้อง append อีกรอบเพื่อเอาข้อมูลที่ถูกต้องไปเก็บรวมกันไว้ในตารางใหม่ ใช่มั้ยครับ ในตารางนี้ก็ลบทุกครั้งที่ query ไป

 


บอร์ดเรียนรู้ Access สำหรับคนไทย