กระทู้เก่าบอร์ด อ.Yeadram
3,181 13
URL.หัวข้อ /
URL
รันเลขที่นั่งเรียงตามอักษรชื่อตัว
จะเขียนโปรแกรมลงทะเบียนรับประกาศนียบัตร โดยผมมีตารางรายชื่อนามสกุลของนักเรียนชื่อตาราง TblSt และต้องการจะให้เมื่อสั่งรันคิวรี่ในฟอร์ม แล้วรายชื่อเรียงตามลำดับอักษรในฟอร์มพอปรากฎรายชื่อทุกคนแล้ว จะมีปุ่ม control ให้กด เพื่อให้
จัดเรียงลำดับเลขอัตโนมัติ ในฟิลด์ Id ตามลำดับแถวที่นั่งเช่น คนที่ 1 ถึง 20 แถวที่ 1 รูปแบบตัวเลขเป็น A001 , A002 เรียงตามลำดับ ไปถึง A020 แล้วคนที่ 21 ก็ขึ้นต้น B001 ไปเรื่อยๆ จน B020 อย่างนี้ครับ คำถามคือ จะต้องเขียนโค๊ด ที่ปุ่่ม Control อย่างไรครับให้มีรหัสที่นั่งขึ้นอัตโนมัติในฟอร์ม กรุณาด้วยครับไม่เป็นเลย
ครับ ขอบคุณครับ
จัดเรียงลำดับเลขอัตโนมัติ ในฟิลด์ Id ตามลำดับแถวที่นั่งเช่น คนที่ 1 ถึง 20 แถวที่ 1 รูปแบบตัวเลขเป็น A001 , A002 เรียงตามลำดับ ไปถึง A020 แล้วคนที่ 21 ก็ขึ้นต้น B001 ไปเรื่อยๆ จน B020 อย่างนี้ครับ คำถามคือ จะต้องเขียนโค๊ด ที่ปุ่่ม Control อย่างไรครับให้มีรหัสที่นั่งขึ้นอัตโนมัติในฟอร์ม กรุณาด้วยครับไม่เป็นเลย
ครับ ขอบคุณครับ
13 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R07343
อาจารย์ครับทำตามแล้วครับ แต่พอกด f5 ขึ้น debug ที่ข้อความนี้อ่ะครับ
rs.Open sq, conn, 1
แหะๆ แต่ก็ดีใจครับผมคงจะได้คำตอบในไม่ช้า แก้ไขให้ด้วยครับหรือผมผิดพลาดประการใดแจ้งด้วยครับ
rs.Open sq, conn, 1
แหะๆ แต่ก็ดีใจครับผมคงจะได้คำตอบในไม่ช้า แก้ไขให้ด้วยครับหรือผมผิดพลาดประการใดแจ้งด้วยครับ
3 @R07357
- มันฟ้องว่าอะไร
- statement (ค่าของตัวแปร sq) คุณได้ปรับเปลี่ยนหรือยัง เปลี่ยนเป็นอย่างไร
- statement (ค่าของตัวแปร sq) คุณได้ปรับเปลี่ยนหรือยัง เปลี่ยนเป็นอย่างไร
4 @R07366
อาจารย์ครัุบ มันฟ้องว่า compile error: user-defined no defined เนี่ยครับ งง ตรงบรรทัดที่ผมแจ้งไป rs.open sq, conn,1 หมายความว่าผมผิดอะไรครับ คือตอนนี้ก็สร้างตารางใหม่ สร้างโมดูล แล้วก็เปลี่ยนตรงบรรทัดที่ให้เปลี่ยนฟิลดืชื่อนักเรียนแล้วครับ แต่ยัง ไม่ผ่านช่วยด้วยครับต้องใช้งานขอบคุณครับอาจารย์
5 @R07367
1 เปิดโมดูลขึ้นมา
2 ไปที่เมนู Tools>references.. มันจะเปิด Dialog ขึ้นมา
3 มีรายการที่ถูกติ๊ก และไม่ถูกติ๊ก
3.1 ให้ดูเฉพาะรายการที่ถูกติ๊ก ดูว่า มีรายการใดบ้างที่นำหน้ารายการว่า MISSING: ให้ติ๊กออก
3.2 ให้ดูเฉพาะรายการที่ถูกติ๊ก มีรายการใดหรือเปล่าที่นำหน้าว่า Microsoft ActiveX Data Object ........
ถ้ามีให้ลองบอกมาว่า เป็นเลขอะไรในนั้น (ควรจะเป็นเลข 2.8 หรือสูงกว่า)
ถ้าไม่มีรายการต้องเลื่อนลงไปหาติ๊กมาครับ
ข้อ 3.1 และ 3.2 ถ้าอ่านไม่เข้าใจหรือทำไม่เป็น ให้จับภาพหน้าจอ เอา Dialog ในข้อ 2 มาดูครับ
2 ไปที่เมนู Tools>references.. มันจะเปิด Dialog ขึ้นมา
3 มีรายการที่ถูกติ๊ก และไม่ถูกติ๊ก
3.1 ให้ดูเฉพาะรายการที่ถูกติ๊ก ดูว่า มีรายการใดบ้างที่นำหน้ารายการว่า MISSING: ให้ติ๊กออก
3.2 ให้ดูเฉพาะรายการที่ถูกติ๊ก มีรายการใดหรือเปล่าที่นำหน้าว่า Microsoft ActiveX Data Object ........
ถ้ามีให้ลองบอกมาว่า เป็นเลขอะไรในนั้น (ควรจะเป็นเลข 2.8 หรือสูงกว่า)
ถ้าไม่มีรายการต้องเลื่อนลงไปหาติ๊กมาครับ
ข้อ 3.1 และ 3.2 ถ้าอ่านไม่เข้าใจหรือทำไม่เป็น ให้จับภาพหน้าจอ เอา Dialog ในข้อ 2 มาดูครับ
6 @R07370
ยังไงก็ไม่ได้ครับผมติ๊กถูกแล้ว กด f5 แล้วก็เหมือนเดิมเลยเดี๋ยวผมส่งเมลล์ไปให้อาจารย์ดีกว่าครับ หัวข้อ รันเลขที่นั่งใหม่ครับ ผมผิดตรงใหนบอกด้วยครับ
ผมติ๊กแล้วก็ไม่ได้ครับ
ผมติ๊กแล้วก็ไม่ได้ครับ
7 @R07418
ในรูปไม่เห็นมีตัวไหนถูกติ๊กเลยครับ
1. ถ้าติ๊กแล้ว แล้วกด F5 ใหม่อีกครับ ถ้ายังติดอีก มันจะต้องแจ้ง Error ซึ่งต้องเป็น error ตัวใหม่ (ถ้ายังเป็น error ตัวเก่า แสดงว่า ยังไม่ได้ทำอะไรกับมันเลย) เอา error ตัวใหม่มาแจ้งครับ ว่า error อะไร
2. ก่อนที่คุณจะบอกว่า "ก็เหมือนเดิมเลย" ตอนนั้นมีตัวใด Missing อยู่หรือเปล่าครับ
1. ถ้าติ๊กแล้ว แล้วกด F5 ใหม่อีกครับ ถ้ายังติดอีก มันจะต้องแจ้ง Error ซึ่งต้องเป็น error ตัวใหม่ (ถ้ายังเป็น error ตัวเก่า แสดงว่า ยังไม่ได้ทำอะไรกับมันเลย) เอา error ตัวใหม่มาแจ้งครับ ว่า error อะไร
2. ก่อนที่คุณจะบอกว่า "ก็เหมือนเดิมเลย" ตอนนั้นมีตัวใด Missing อยู่หรือเปล่าครับ
8 @R07421
ผมกด F5อีกครั้งขั้น error
ดูให้ด้วยครับขอบคุณครับอาจารย์
ดูให้ด้วยครับขอบคุณครับอาจารย์
9 @R07422
อีกรูปครับรูปที่ติ๊กครับ
ถูกหรือเปล่าครับ
ถูกหรือเปล่าครับ
10 @R07423
ภาพแรก ดูเหมือนแจ้งมาแล้ว ดังนั้นไม่ได้อะไรเพิ่มเติมมากนัก
ภาพสอง คุณติ๊กถูกต้องหมดแล้วครับ กด OK ออกแล้ว แล้วก็กด F5 ใน โพรซีเยอร์นั้น ก็น่าจะไม่มีปัญหาอะไร คุณเองก็คงทำถูกทุกขั้นตอน ดังนั้น ปัญหาต่อไป อาจต้องไปตรวจดูในสายอักขระ ว่าคุณเขียนชื่อออบเจคต่างๆ (เช่นชื่อฟิลด์ ชื่อตาราง) ได้ถูกต้องหรือเปล่า เขียนถึงสิ่งที่มีอยู่หรือเปล่า
ตอนแรกตั้งใจว่าจะแอบดูจากรูปที่ส่งมา ก็เห็นไม่ครบถ้วน ดังนั้นตั้งใจจะไปโหลดไฟล์ตัวอย่างจาก gmail ตามที่บอกมาว่า "ส่งมาแล้ว"
ผลก็คือ ใน gmail มันไม่มีไฟล์แนบครับ
ถ้าคุณใช้วิธีเขียนจดหมายร่าง + แนบไฟล์ไม่เป็น ขอแนะนำให้ใช้เมล์ส่วนตัวของคุณครับ ส่งไฟล์และแนบไฟล์มาหา gmail ของเรา ดูเหมือนจะง่ายขึ้นมาหน่อย
ภาพสอง คุณติ๊กถูกต้องหมดแล้วครับ กด OK ออกแล้ว แล้วก็กด F5 ใน โพรซีเยอร์นั้น ก็น่าจะไม่มีปัญหาอะไร คุณเองก็คงทำถูกทุกขั้นตอน ดังนั้น ปัญหาต่อไป อาจต้องไปตรวจดูในสายอักขระ ว่าคุณเขียนชื่อออบเจคต่างๆ (เช่นชื่อฟิลด์ ชื่อตาราง) ได้ถูกต้องหรือเปล่า เขียนถึงสิ่งที่มีอยู่หรือเปล่า
ตอนแรกตั้งใจว่าจะแอบดูจากรูปที่ส่งมา ก็เห็นไม่ครบถ้วน ดังนั้นตั้งใจจะไปโหลดไฟล์ตัวอย่างจาก gmail ตามที่บอกมาว่า "ส่งมาแล้ว"
ผลก็คือ ใน gmail มันไม่มีไฟล์แนบครับ
ถ้าคุณใช้วิธีเขียนจดหมายร่าง + แนบไฟล์ไม่เป็น ขอแนะนำให้ใช้เมล์ส่วนตัวของคุณครับ ส่งไฟล์และแนบไฟล์มาหา gmail ของเรา ดูเหมือนจะง่ายขึ้นมาหน่อย
11 @R07425
ขอแจมนิดแล้วกัน ... ผมคิดว่าน่าจะผิดตรงนี้นะ ให้แก้เป็น Dim rs As New ADODB.Recordset
12 @R07426
เย๊ ทำไ้ด้แล้วครับอาจารย์ตรงใจผมเลยครับ สุดๆ ผมต้องใช้คำว่าขอกราบขอบคุณ อ. ทั้งสองท่านครับครูของผมเลย แม้ผมจะไม่รู้ว่าโค๊ดที่เขียนน่ะไว้ทำไรบ้้าง ใงผมฝากเนื้อฝากตัวครับ
13 @R07428
ขอบคุณอาจารย์สันติสุขครับ เพิ่งเห็นเหมือนกันว่าผมเขียนตก อิอิ
ทั้ง Rs ทั้ง Conn เลยนะนั่น ไม่ได้ประกาศ class เป็น New เหอๆ
ทั้ง Rs ทั้ง Conn เลยนะนั่น ไม่ได้ประกาศ class เป็น New เหอๆ
Time: 0.3568s
มีสองฟิลด์(seat , text, 4)(id, ชนิดข้อมูลเหมือน id ของนักเรียน)
- สร้างโมดูลใหม่ 1 ตัว วางโค้ด
sub runSeat()
dim sq as string
dim rs as adodb.recordset
dim conn as adodb.connection
dim i, j as integer
set conn=currentproject.connection
sq = "select id from TblSt order by [ฟิลด์ชื่อนักเรียน]"
rs.open sq, conn, 1
i=1
j=65
do while not rs.eof
if i mod 20 =0 then
i=1
j=j+1
end if
sq= "insert into table1 values('" & chr(j) & format(i,"000") & "', '" & rs(0) & "')"
conn.execute sq
i=i+1
rs.movenext
loop
rs.close
set rs=nothing
set conn=nothing
msgbox "Done!"
end sub
- วางเม้าส์พ้อยเตอร์ไว้ในบริเวณโค้ด แล้วกดปุ่ม F5
- เมื่อได้รับ ข้อความว่า Done! ก็ถือว่างานเสร็จแล้ว
- ลบโมดูลนี้ทิ้งได้เลย ไม่จำเป็นต้องใช้อีก
- เปิดตาราง table1 ดูผลงาน จะได้เลขที่นั่งของรหัสนักเรียนแต่ละคน เอาไปใช้ได้เลยครับ (ทำคิวรี่เชื่อมกับตารางที่ต้องการ แล้วออกรายงานได้)