กระทู้เก่าบอร์ด อ.Yeadram
1,243 9
URL.หัวข้อ /
URL
แบ่งข้อมูลตามเปอร์เซ็นต์
หากเราต้องการวนลูปในตารางโดยใช้ Record set สมมติเช่น
ตาราง A มีข้อมูล
ID BRANCH USER
001 BKK A < ตรงนี้อยากให้โปรแกรมมันใส่ข้อมูลให้เอง
002 NON B
003 BKK A
004 BKK C
005 NON E
006 BKK C
007 RAY D
008 RAY F
009 RAY F
010 RAY F
011 BKK C
ตาราง B มีข้อมูล
USER BRANCH PERCENT
A BKK 40
B NON 50
C BKK 60
D RAY 25
E NON 50
F RAY 75
ผมจะวนลูปในตารางอย่างไรให้สามารถแบ่งข้่อมูลตามเปอร์เซ็นต์ประมาณรูปแบบ
ดังตัวอย่างข้างต้นนี้ครับโดยตาราง B เป็นตารางตั้งต้นข้อมูล ส่วนตาราง A เป็นตารางที่ต้องการให้เติมข้อมูลลงใน feild USER ครับ
ตาราง A มีข้อมูล
ID BRANCH USER
001 BKK A < ตรงนี้อยากให้โปรแกรมมันใส่ข้อมูลให้เอง
002 NON B
003 BKK A
004 BKK C
005 NON E
006 BKK C
007 RAY D
008 RAY F
009 RAY F
010 RAY F
011 BKK C
ตาราง B มีข้อมูล
USER BRANCH PERCENT
A BKK 40
B NON 50
C BKK 60
D RAY 25
E NON 50
F RAY 75
ผมจะวนลูปในตารางอย่างไรให้สามารถแบ่งข้่อมูลตามเปอร์เซ็นต์ประมาณรูปแบบ
ดังตัวอย่างข้างต้นนี้ครับโดยตาราง B เป็นตารางตั้งต้นข้อมูล ส่วนตาราง A เป็นตารางที่ต้องการให้เติมข้อมูลลงใน feild USER ครับ
9 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R16143
ไม่มีใครให้แนวทางได้เลยเหรอครับ ... T_T
2 @R16154
T_T
3 @R16160
คำถามผมไม่รู้เรื่องอ่ะครับ เลยตอบไม่ได้ อะไรมาจากไหน แนวคิด สูตร วิธีคิด คืออะไร เปอร์เซ็นต์ร้อยละมาจากไหน ID คิดยังไงทำไมเรียงแบบนี้
คำถามคุณไม่ธรรมดาเลยครับ หากด้วยข้อมูลแค่นี้ผมว่าไม่มีใครตอบได้มั้งครับ เอ๊ะหรือว่ามี ช่วยแนะนำคุณ ManUZA หน่อยนะครับ ยอมรับเลยว่าอ่อนมากเรื่องตัวเลข
คำถามคุณไม่ธรรมดาเลยครับ หากด้วยข้อมูลแค่นี้ผมว่าไม่มีใครตอบได้มั้งครับ เอ๊ะหรือว่ามี ช่วยแนะนำคุณ ManUZA หน่อยนะครับ ยอมรับเลยว่าอ่อนมากเรื่องตัวเลข
4 @R16163
เปอร์เซ็นต์ร้อยละก็กำหนดขึ้นมาเองแหละครับไม่มีอะไร วิธีคำนวณหาเปอร์เซ็นต์ก็คำนวณตามตาราง B ที่ผมกำหนดมา
สมมติเช่น
ตาราง B มีข้อมูล (ตัดเฉพาะ BRANCH BKK มาเพื่อให้เห็นภาพ)
USER BRANCH PERCENT
A BKK 40
C BKK 60
ทีนี้เรามาดูตาราง A ต่อ
ตาราง A มีข้อมูล
ID BRANCH USER
001 BKK A
003 BKK A
004 BKK C
006 BKK C
011 BKK C
ตรงช่อง USER ปกติจะไม่มีข้อมูล
ดังนั้นหากเรา Group เฉพาะ BRANCH ที่เป็น BKK มาก็จะไ้ด้จำนวนทั้งสิ้น 5 Record ดังนั้นหากคิดเป็นเปอร์เซ็นต์ก็จะได้เท่ากับ
A : (5/100)*40 = 2 Record
C : (5/100)*60 = 3 Record
ซึ่งจำนวน Record ที่ต้องเพิ่มเข้าไปในช่อง USER ผมสามารถหาออกมาได้แล้ว
แต่จะใส่ข้อมูลเข้าไปยังได้ซึ่งสิ่งสำคัญคือต้องให้ BRANCH ตรงกันทั้งสองตารางกับจำนวนข้อมูลที่เพิ่มเข้าไปต้องตรงตามเปอร์เ้ซ็นต์
ซึ่งผมติดตรงที่ว่าหากใช้วิธีวนลูปในตาราง B เพื่อตรวจสอบ BRANCH ที่ตรงกัน
จะทำอย่างให้โปรแกรมรู้ว่า A ได้จำนวนครบตามเปอร์เซ็นต์แล้วให้ข้าม Recordset ไปยัง C ต่อ ประมาณนี้ครับ
ผมอธิบายยากไปหรือเปล่าครับ ...
สมมติเช่น
ตาราง B มีข้อมูล (ตัดเฉพาะ BRANCH BKK มาเพื่อให้เห็นภาพ)
USER BRANCH PERCENT
A BKK 40
C BKK 60
ทีนี้เรามาดูตาราง A ต่อ
ตาราง A มีข้อมูล
ID BRANCH USER
001 BKK A
003 BKK A
004 BKK C
006 BKK C
011 BKK C
ตรงช่อง USER ปกติจะไม่มีข้อมูล
ดังนั้นหากเรา Group เฉพาะ BRANCH ที่เป็น BKK มาก็จะไ้ด้จำนวนทั้งสิ้น 5 Record ดังนั้นหากคิดเป็นเปอร์เซ็นต์ก็จะได้เท่ากับ
A : (5/100)*40 = 2 Record
C : (5/100)*60 = 3 Record
ซึ่งจำนวน Record ที่ต้องเพิ่มเข้าไปในช่อง USER ผมสามารถหาออกมาได้แล้ว
แต่จะใส่ข้อมูลเข้าไปยังได้ซึ่งสิ่งสำคัญคือต้องให้ BRANCH ตรงกันทั้งสองตารางกับจำนวนข้อมูลที่เพิ่มเข้าไปต้องตรงตามเปอร์เ้ซ็นต์
ซึ่งผมติดตรงที่ว่าหากใช้วิธีวนลูปในตาราง B เพื่อตรวจสอบ BRANCH ที่ตรงกัน
จะทำอย่างให้โปรแกรมรู้ว่า A ได้จำนวนครบตามเปอร์เซ็นต์แล้วให้ข้าม Recordset ไปยัง C ต่อ ประมาณนี้ครับ
ผมอธิบายยากไปหรือเปล่าครับ ...
5 @R16166
ทำไปเพื่ออะไรครับ พอไม่รู้ว่าจะไปใช้อย่างไร เลยไม่รู้ว่าจะให้คำตอบที่ถูกต้องหรือเปล่า
6 @R16169
แค่ต้องการแบ่งงานให้ USER ตามผลงานของแต่ละคน แค่นั้นครับ
โดยงานที่ได้รับเปอร์เซ็นต์งานมากน้อยก็ขึ้นอยู่กับผลงานของแต่ละคน
ซึ่งผมจะเป็นคนกำหนดเอง โดยเงื่อนไขให้แบ่งการกระจายงานตาม BRANCH ที่ USER แต่ละคนรับผิดชอบงานและจำนวนงานก็ตามเปอร์เซ็นต์
ของแต่ละ USER ครับ
โดยงานที่ได้รับเปอร์เซ็นต์งานมากน้อยก็ขึ้นอยู่กับผลงานของแต่ละคน
ซึ่งผมจะเป็นคนกำหนดเอง โดยเงื่อนไขให้แบ่งการกระจายงานตาม BRANCH ที่ USER แต่ละคนรับผิดชอบงานและจำนวนงานก็ตามเปอร์เซ็นต์
ของแต่ละ USER ครับ
7 @R16173
ผมว่าด้วยแนวคิดแบบนี้มันมีจุดอ่อนทำให้อาจเกิดข้อมูลผิดพลาดได้เยอะนะครับ แต่ผมก็ไม่รู้จะแนะนำยังไง ไม่เคยมีแนวคิดแบบนี้ซะด้วย เอางี้ครับ ลองๆ ดูก่อนแล้วกันว่าใช้ได้ไหม ผมอ้างอิงจากตารางของที่คุณโพสถามครั้งแรกเลยนะครับ
1. ลองสร้างปุ่มใหม่บนฟอร์ม ใส่โค๊ดบนปุ่ม On Click ตามนี้ครับ
ชื่อทั้งหมดผมอ้างจากชื่อตัวอย่างของคุณในนี้นะครับ ปรับใช้ดูครับ
1. ลองสร้างปุ่มใหม่บนฟอร์ม ใส่โค๊ดบนปุ่ม On Click ตามนี้ครับ
Dim db As DAO.Database
Dim rs As DAO.Recordset, rs2 As DAO.Recordset
Dim iMAX As Long, iSame As String
Set db = CurrentDb
Set rs = db.OpenRecordset("B", dbOpenDynaset)
iSame = 1
db.Execute "UPDATE A SET USER=''", dbFailOnError
rs.MoveFirst
Do Until rs.EOF
iMAX = DCount("BRANCH", "A", "BRANCH = '" & rs!BRANCH & "'")
Set rs2 = db.OpenRecordset("SELECT BRANCH, USER FROM A WHERE BRANCH = '" & rs!BRANCH & "'")
rs2.MoveFirst
Do Until rs2.EOF
If rs2!BRANCH = rs!BRANCH And iSame <= CInt((iMAX / 100) * rs!PERCENT) And rs2!User & "" = "" Then
rs2.Edit
rs2!User = rs!User
rs2.Update
iSame = iSame + 1
End If
rs2.MoveNext
Loop
rs.MoveNext
iSame = 1
Loop
rs.Close: Set rs = Nothing
rs2.Close: Set rs2 = Nothing
ชื่อทั้งหมดผมอ้างจากชื่อตัวอย่างของคุณในนี้นะครับ ปรับใช้ดูครับ
8 @R16180
ขอบคุณ คุณ TTT ครับ ผมทำได้แล้วครับ
ปล : แนวทางการเขียนโค้ดคล้ายกันกับของผมเลยครับ
ปล : แนวทางการเขียนโค้ดคล้ายกันกับของผมเลยครับ
9 @R16181
คนเขียนโปรแกรม สามารถเขียนได้หมดตามที่ต้องการ และมักไม่ค่อยมีข้อจำกัดเท่าไหร่ แต่ปัญหาอยู่ที่ว่า จะสื่อสารอย่างไรให้คนเขียนโปรแกรมเค้าเข้าใจถึงสิ่งที่ต้องการ ซึ่งแต่ละคนก็มีวิธีเขียนที่แตกต่างกัน แต่ได้ผลลัพธ์ (Output) ตามที่ต้องการได้ ดังนั้น ควรบอกให้ทราบถึงผลลัพธ์ที่ต้องการให้ชัดเจน (ถ้าทำเป็นผลลัพธ์สมมุติออกมาให้ดูได้ยิ่งดี) แล้วค่อยบอกถึง Input ที่เรามีอยู่ขณะนี้ว่ามีอะไรอยู่บ้าง ซึ่งคนเขียนโปรแกรมก็จะทราบทันทีว่า ยังขาดข้อมูลอะไรบ้างหรือเปล่าเพื่อให้ได้ผลลัพธ์ตามที่ต้องการ
Time: 0.2548s