ขอโค๊ดการสุ่มตัวเลข
กระทู้เก่าบอร์ด อ.Yeadram

 3,350   2
URL.หัวข้อ / URL
ขอโค๊ดการสุ่มตัวเลข

อยากได้โค๊ดสำหรับสุ่มคัดเลือกตัวแทนจากกลุ่มตัวอย่าง โดยสุ่มจากรหัสประจำตัว สมมติ 5 หลักแล้วสามารถเลือกได้ว่าจะสุ่มออกมากี่คน

2 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R09210
สวัสดีครับอาจารย์
ถ้าผมจะสุ่มตัวเลขแล้ว เอาตัวเลขที่สุ่มได้ไปเก็บไว้ที่ตาราง
และถ้าสุ่มครั้งต่อไปก็ให้ไปเช็คกับตัวเลขที่เก็บไว้ในตาราง
ถ้าซ้ำก็ให้สุ่มจนกว่าจะได้ตัวเลขที่ไม่ซ้ำกับในตาราง
จะต้องเขียนโค้ดอย่างไรครับอาจารย์

แล้วอีกอย่างครับผมอยากให้อาจารย์สอนเรื่องการใช้
for....next สำหรับมือใหม่ให้เข้าใจด้วยครับ

รบกวนด้วยครับท่านอาจารย์
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รอบ เป็นไปได้ทั้งนั้น เพราะฉะนั้นจึงไม่รู้จำนวนรอบที่แน่นอน

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 & ");"
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3000s