ต้องการสร้างปุ่มโดยการเขียนโค๊ด ให้เขียนตัวเลขเป็นชุดๆละ 40 คน



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

16 มี.ค. 63 , 21:39:54
อ่าน 250 ครั้ง

pirin

สมมติว่า มีฟิลด์ อยู่ 2 ฟิลด์ ชื่อ  number_sob  (เลขประจำตัวสอบ)  และ  room_sob  (ห้องสอบ)
เลขประจำตัวสอบ จะเรียงจากน้อยไปหามากเช่น   21001  21002  ไปเรื่อยๆ เช่นถึง  21900     
- ต้องการสร้างปุ่ม โดยการเขียนโค๊ด  ให้ใส่หมายเลขห้องสอบ  40 คนแรก (เลขประจำตัวสอบจากน้อยไปหามาก 40 หมายเลขแรก) เป็นห้องสอบที่ 1 (ใส่เลข 1 ในฟิลด์ room_sob)  ต่อไป คนที่ 41-80  ให้ เขียนเลข 2 ในฟิลด์  room_sob   คนที่ 81-120  ให้ เขียนเลข 3 ในฟิลด์  room_sob  ทำเช่นนี้ไปเรื่อยๆ ครับ
-  สรุปคือ 40 คนแรก ให้เขียนเลข  1 ในฟิลด์  room_sob  , 40  คนต่อไป  ให้เขียนเลข  2 ในฟิลด์  room_sob ,  40  คนต่อไป  ให้เขียนเลข  3 ในฟิลด์  room_sob , ทำแบบนี้ไปเรื่อยๆ

 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

16 มี.ค. 63 , 22:53:10
ตอบกลับ #1

สันติสุข

สมมุติเทเบิลชื่อ T และ data type ของฟิลด์ห้องสอบเป็น Numeric

Dim SQL as String

SQL = "update T as T0 set room_sob = int(dcount(""*"", ""T"", ""number_sob < "" & T0.number_sob)/40)+1"
CurrentDB.Execute SQL, dbFailOnError
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, SakDa

16 มี.ค. 63 , 23:22:37
ตอบกลับ #2

pirin

อาจารย์ครับ มันฟ้องแบบนี้ครับ




 

17 มี.ค. 63 , 02:02:11
ตอบกลับ #3

สันติสุข

ถ้า data type ของฟิลด์ห้องสอบเป็น Text ให้เปลี่ยนเป็น

SQL = "update T as T0 set room_sob = cstr(int(dcount(""*"", ""T"", ""number_sob < "" & T0.number_sob)/40)+1)"
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, apirak

17 มี.ค. 63 , 22:07:54
ตอบกลับ #4

pirin

รบกวน อ.สันติสุข อีกครั้งครับ  ยังขึ้นเหมือนเดิม  (data type ของฟิลด์ห้องสอบเป็น Text)
data type ของฟิลด์ number_sob ก็เป็น Text และเป็น คีย์หลักด้วยครับ



« แก้ไขครั้งสุดท้าย: 17 มี.ค. 63 , 22:20:04 โดย pirin »

 

17 มี.ค. 63 , 22:35:45
ตอบกลับ #5

สันติสุข

ลองใหม่ครับ อันนี้สำหรับทั้ง room_sob และ number_sob มี data type เป็น Text ทั้งคู่ครับ

โค๊ด: [Select]
SQL = "update M4_sobgen_sci T0 set room_sob = cstr(int(dcount('*', 'M4_sobgen_sci', 'number_sob < ''' & T0.number_sob & '''')/40)+1)"

ให้ก็อปปี้ไปเลยนะครับ ไม่งั้นเดี๋ยวจะสับสน เพราะ '' ภายในไม่ใช่ double quote เหมือนที่ให้ไปก่อนหน้า แต่เป็น single quote ครับ  ส่วน " ครอบหน้าและหลัง ยังเป็น double quote
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin

17 มี.ค. 63 , 22:46:30
ตอบกลับ #6

pirin

ได้แล้วครับ   ขอบคุณ อ.สันติสุขมาก ครับ

 

23 มี.ค. 63 , 12:14:08
ตอบกลับ #7

SakDa

โพสต์นี้เกือบจะเป็นเลขที่สำหรับห้องได้แล้วครับ อ.สันติสุข แวะมาอีกครั้งครับ
ใช้ตารางและชนิดของฟิลด์ตามโพสต์นี้ แต่ขอเป็น ขึ้นห้องใหม่รันเลข 1 จนถึง x ของคนสุดท้ายห้องนั้น...
ทำเลขที่ได้สบายเลยครับ ตอนนี้ใช้วิธี คัดลอกจาก Excel มาวางในตาราง

 

23 มี.ค. 63 , 21:40:52
ตอบกลับ #8

สันติสุข

สมมุติฟิลด์เลขลำดับที่ชื่อ R และมี data type เป็น Integer หรือ Long นะครับ

SQL = "update M4_sobgen_sci T0 set R = dcount('*', 'M4_sobgen_sci', 'room_sob = ''' & T0.room_sob & ''' and number_sob < ''' & T0.number_sob & '''')"
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, SakDa

02 เม.ย. 63 , 19:39:40
ตอบกลับ #9

FaisonSiu

คงต้องประยุกต์ใช้หน่อยละ เพื่อไม่ให้เป็นการลำบาก อ.

 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, TIM_cb


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