กระทู้เก่าบอร์ด อ.Yeadram
        
           3,530   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.0596s
    
      
		
ถ้าผมจะสุ่มตัวเลขแล้ว เอาตัวเลขที่สุ่มได้ไปเก็บไว้ที่ตาราง
และถ้าสุ่มครั้งต่อไปก็ให้ไปเช็คกับตัวเลขที่เก็บไว้ในตาราง
ถ้าซ้ำก็ให้สุ่มจนกว่าจะได้ตัวเลขที่ไม่ซ้ำกับในตาราง
จะต้องเขียนโค้ดอย่างไรครับอาจารย์
แล้วอีกอย่างครับผมอยากให้อาจารย์สอนเรื่องการใช้
for....next สำหรับมือใหม่ให้เข้าใจด้วยครับ
รบกวนด้วยครับท่านอาจารย์