กระทู้เก่าบอร์ด อ.Yeadram
3,350 2
URL.หัวข้อ /
URL
ขอโค๊ดการสุ่มตัวเลข
อยากได้โค๊ดสำหรับสุ่มคัดเลือกตัวแทนจากกลุ่มตัวอย่าง โดยสุ่มจากรหัสประจำตัว สมมติ 5 หลักแล้วสามารถเลือกได้ว่าจะสุ่มออกมากี่คน
2 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R09217
ถ้าการสุ่ม คือ
Randomize
x = CInt((4) * Rnd() + 1)
แล้วการเก็บข้อมูลในตารางคือ
docmd.runsql "Insert into table1(field1) values(" & x & ");"
และการตรวจสอบค่าซ้ำในตารางคือ
if dcount("field1","table1", "[field1] = " & x) >0 then ...... ข้อมูลซ้ำ
แล้วการสั่งให้โปรแกรมกระทำซ้ำๆ คือลูป เราควรจะเลือกการใช้ลูปให้เหมาะกับงาน อย่างงานนี้ มันไม่เหมาะกับ for--next เพราะ for -- next นั้น เราจำเป็นต้องรู้จำนวนรอบ คือเป็นลูปแบบ "จำนวนรอบ" คงที่
จะสั่งให้มันวน 10 รอบ หรือ 20 รอบ ก็แล้วแต่เราจะสั่ง และมันจะหยุดทำงานเมื่อครบจำนวนรอบ
แต่งานของคุณมันระบุจำนวนรอบไม่ได้ เพราะฉะนั้นเราต้องใช้ ลูป แบบ dinamic อื่นๆ ที่ไม่มีการระบุจำนวนรอบ แต่เป็นการใช้เงื่อนไขเพื่อให้มันหยุดทำงาน ลูปแบบนี้มีหลายชนิด เช่น
do while --- loop
do---loop until
do until---loop
ต้องเลือกใช้ให้เหมาะครับ
งานของคุณต้องการ วนรอบกี่รอบก็ได้ ขอแค่ถ้าเจอ "เลขไม่ซ้ำ" ก็ค่อยให้หยุดทำงาน ซึ่งกว่าจะเจอ "เลขไม่ซ้ำ" มันก็อาจจะเป็นไปได้ว่า กระทำเพียงแค่ครั้งเดียว หรือกระทำสองรอบ หรือกระทำไป 100รอบ เป็นไปได้ทั้งนั้น เพราะฉะนั้นจึงไม่รู้จำนวนรอบที่แน่นอน
Randomize
x = CInt((4) * Rnd() + 1)
แล้วการเก็บข้อมูลในตารางคือ
docmd.runsql "Insert into table1(field1) values(" & x & ");"
และการตรวจสอบค่าซ้ำในตารางคือ
if dcount("field1","table1", "[field1] = " & x) >0 then ...... ข้อมูลซ้ำ
แล้วการสั่งให้โปรแกรมกระทำซ้ำๆ คือลูป เราควรจะเลือกการใช้ลูปให้เหมาะกับงาน อย่างงานนี้ มันไม่เหมาะกับ for--next เพราะ for -- next นั้น เราจำเป็นต้องรู้จำนวนรอบ คือเป็นลูปแบบ "จำนวนรอบ" คงที่
จะสั่งให้มันวน 10 รอบ หรือ 20 รอบ ก็แล้วแต่เราจะสั่ง และมันจะหยุดทำงานเมื่อครบจำนวนรอบ
แต่งานของคุณมันระบุจำนวนรอบไม่ได้ เพราะฉะนั้นเราต้องใช้ ลูป แบบ dinamic อื่นๆ ที่ไม่มีการระบุจำนวนรอบ แต่เป็นการใช้เงื่อนไขเพื่อให้มันหยุดทำงาน ลูปแบบนี้มีหลายชนิด เช่น
do while --- loop
do---loop until
do until---loop
ต้องเลือกใช้ให้เหมาะครับ
งานของคุณต้องการ วนรอบกี่รอบก็ได้ ขอแค่ถ้าเจอ "เลขไม่ซ้ำ" ก็ค่อยให้หยุดทำงาน ซึ่งกว่าจะเจอ "เลขไม่ซ้ำ" มันก็อาจจะเป็นไปได้ว่า กระทำเพียงแค่ครั้งเดียว หรือกระทำสองรอบ หรือกระทำไป 100รอบ เป็นไปได้ทั้งนั้น เพราะฉะนั้นจึงไม่รู้จำนวนรอบที่แน่นอน
dim x as long
do
Randomize
x = CInt((25) * Rnd() + 1)
loop until dcount("field1","table1", "[field1] = " & x) =0
docmd.runsql "Insert into table1(field1) values(" & x & ");"
Time: 0.3000s
ถ้าผมจะสุ่มตัวเลขแล้ว เอาตัวเลขที่สุ่มได้ไปเก็บไว้ที่ตาราง
และถ้าสุ่มครั้งต่อไปก็ให้ไปเช็คกับตัวเลขที่เก็บไว้ในตาราง
ถ้าซ้ำก็ให้สุ่มจนกว่าจะได้ตัวเลขที่ไม่ซ้ำกับในตาราง
จะต้องเขียนโค้ดอย่างไรครับอาจารย์
แล้วอีกอย่างครับผมอยากให้อาจารย์สอนเรื่องการใช้
for....next สำหรับมือใหม่ให้เข้าใจด้วยครับ
รบกวนด้วยครับท่านอาจารย์