ต้องการ update ชื่อพนักงาน ข้อมูลเข้าอีกตารางตามจำนวนที่กำหนด โดยเรียบลำดับ



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

29 ก.ค. 63 , 21:03:19
อ่าน 87 ครั้ง

assetthai

รบกวนสอบถามครับ ผมมีพนักงาน 5 คน  มีลูกค้าจำนวน 100 คน แต่ละคนจะมอบหมายงานให้ดูแลลูกค้าจำนวนไม่เท่ากัน โดย กำหนดจำนวน ตามรูปภาพ
ผมจะทำเป็นปุ่ม เมื่อกดแล้ว ให้ชื่อพนักงานเข้าไป update กับฟิวส์ Employee_Assign ข้อมูลเดิม ตามจำนวนของพนักงานที่ได้กำหนดไว้ซึ่งแต่ละคนจะไม่เท่ากัน โดยมีเงื่อนไขว่า จะต้องเรียงลำดับจากตารางลำดับที่1-100 (ตารางผมทำเป็น Qry เรียงลำดับไว้แล้ว)ชื่อพนักงาจะเข้าไปวนจนครบจำนวนของแต่ละพนักงานแต่ละคน ถ้าพนักงานคนใดเมื่อครบแล้วให้หยุดเท่ากับจำนวนที่ได้กำหนดไว้ ส่วนพนักงานที่ยังไม่ครบ ไล่ลำดับต่อไปเรื่อยๆ ตามจำนวนของแต่ละคน (โดยไม่ให้ชื่อพนักงานถูกเรียงต่อกัน ยกเว้นลำดับท้ายๆ ที่อาจจะมีพนักงานคนใดคนนึงได้รับจำนวนมากกว่าคนอื่น)  ขอบคุณล่วงหน้าครับ
« แก้ไขครั้งสุดท้าย: 29 ก.ค. 63 , 21:30:19 โดย assetthai »

 

30 ก.ค. 63 , 14:09:10
ตอบกลับ #1

assetthai

ขอบคุณครับ เดี๋ยวผมรออาจารย์ท่านอื่นด้วยครับ

 

30 ก.ค. 63 , 15:05:16
ตอบกลับ #2

PNR

ลองดูตัวอย่างนี้นะครับน่าจะได้ข้อมูลแบบที่คุณต้องการนะ

ผมใช้การตรวจสอบโดยการนับจำนวนครั้งของการ Append ข้อมูลลงไปในตาราง customer
โดยเช็คว่าถ้า Employee ไหน asign = 0 แล้วก็ให้ลบออกไป ไม่นำไป Append ต่อครับ

โค้ดของคิวรี่ในการเช็คจำนวนการAppend ข้อมูล
โค๊ด: [Select]
SELECT tbl_Job.Employee_Name, Count(tbl_Customer.Employee_Name) AS CountCTM, tbl_Job.assign, Nz([assign],0)-Nz([CountCTM],0) AS Remaining
FROM tbl_Job LEFT JOIN tbl_Customer ON tbl_Job.Employee_Name = tbl_Customer.Employee_Name
GROUP BY tbl_Job.Employee_Name, tbl_Job.assign;

โดยจะต้องมีฟอร์มที่มีปุ่มกดให้โค้ดทำงานโดยมีโค้ดประมาณนี้ครับ
โค๊ด: [Select]
Private Sub Command0_Click()
Dim rst As DAO.Recordset
Dim IntAssign As Integer
Dim sql As String
Dim I As Long
    Set rst = CurrentDb.OpenRecordset("tbl_Job", dbOpenDynaset)
 
 
rst.MoveFirst
Do Until rst.EOF
IntAssign = rst!Assign
For I = 1 To IntAssign
If IntAssign = rst!Assign Then
sql = "INSERT INTO tbl_Customer ( Employee_Name, Cust_Name ) SELECT QryCheckRemaining.Employee_Name, 'XXXX' AS Expr1 FROM QryCheckRemaining WHERE (((QryCheckRemaining.Remaining)>0));"
DoCmd.SetWarnings False
           DoCmd.RunSQL sql
End If
    Next
  rst.MoveNext
  Loop
  DoCmd.SetWarnings True
    rst.Close
    Set rst = Nothing
End Sub

« แก้ไขครั้งสุดท้าย: 30 ก.ค. 63 , 15:27:16 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: assetthai

30 ก.ค. 63 , 15:59:14
ตอบกลับ #3

assetthai

ขอบคุณมากๆ ครับ ได้ตามจุดประสงค์ ขอบคุณครับ :love: :love: :love:

 


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