กระทู้เก่าบอร์ด อ.Yeadram
3,307 23
URL.หัวข้อ /
URL
เปิดฟอร์ม ใช้เวลานาน
เรียน อาจารย์ทุกท่าน ช่วยพิจารณา หน่อยครับว่า เมื่อเวลาผมเปิด ฟอร์ม ตัวนี้ขึ้นมาจะเกิดปัญหาดังนี้
1. เปิดฟอร์ม ขึ้นมาจะใช้เวลาประมาณ 3-5 วินาที ซึ่งเทียบกับฟอร์มอื่นๆดูถือว่าช้ามาก
2. เวลากดปุ่มค้นหาต่างๆ เหมือนกับว่า มันวิ่งไปค้นหาทุก ฟิลล์ และทุกหน้า สังเกตุจาก หน้าฟอร์ม จะกระตุ๊กหรือกระพริบๆ เรื่อยๆ ทั้งๆที่ค้นหาข้อมูลพบแล้ว ก็ยังกระพริบ
3. ลองลบหน้า ข้อมูลที่อยู่ ข้อมูลบิดา-มารดา ภาพการออกเยี่ยบ้าน ผลการเรียน ตารางเรียน (เป็นไฟล์รูปภาพ ใช้การลิงห์) ทั้งหมดออก ให้เหลือ หน้าเดียวคือ ข้อมูลประวัติ ผลยังเหมือนเดิม
4.ไม่ทราบว่าจะแก้ตรงไหนครับ
5. ปุ่มค้นหาต่างๆ สร้างจาก Macro ครับ
1. เปิดฟอร์ม ขึ้นมาจะใช้เวลาประมาณ 3-5 วินาที ซึ่งเทียบกับฟอร์มอื่นๆดูถือว่าช้ามาก
2. เวลากดปุ่มค้นหาต่างๆ เหมือนกับว่า มันวิ่งไปค้นหาทุก ฟิลล์ และทุกหน้า สังเกตุจาก หน้าฟอร์ม จะกระตุ๊กหรือกระพริบๆ เรื่อยๆ ทั้งๆที่ค้นหาข้อมูลพบแล้ว ก็ยังกระพริบ
3. ลองลบหน้า ข้อมูลที่อยู่ ข้อมูลบิดา-มารดา ภาพการออกเยี่ยบ้าน ผลการเรียน ตารางเรียน (เป็นไฟล์รูปภาพ ใช้การลิงห์) ทั้งหมดออก ให้เหลือ หน้าเดียวคือ ข้อมูลประวัติ ผลยังเหมือนเดิม
4.ไม่ทราบว่าจะแก้ตรงไหนครับ
5. ปุ่มค้นหาต่างๆ สร้างจาก Macro ครับ
23 Reply in this Topic. Dispaly 2 pages and you are on page number 1
2 @R21101
อาจารย์ครับ ผมได้ดำเนินการตามที่บอกดังนี้
1. เอารูปออกจากฟอร์ม
ผล รันฟอร์มช้าเหมือนเดิม กดปุ่ม ค้นหา ก็กระพริบ เหมือนวิ่งค้นหาทุกฟิลด์เหมือนเดิม
2.คำสัั่งที่ใช้ในการค้าหา ใช้ macro ดังนี้ครับ
GoToControl
ชื่อตัวควบคุม [id_student]
FindRecord
สิ่งที่ค้นหา =[text79]
ตรงตาม เขตข้อมูลทั้งหมด
ตรงตามตัวพิมพ์เล็ก-ใหญ่ ไม่ใช่
ค้นหา ทั้งหมด
ค้นหาตามรูปแบบที่จัดไว้ ไม่ใช่
เฉพาะเขตข้อมูลปัจจุบัน ใช่
ค้นหาตั้นแต่ต้น ใช่
*** ซึ่ง เงื่อนไขต่างๆใน คำสั่ง Macro ผมก็ได้ลองสลับเปลี่ยนดูแล้ว ***** ผลก็ยังเหมือนเดิม
3. รูป ผมใช้ Image control ครับ **** แต่ก็ลองเอารูปออก โดยการลบ control รูปภาพทิ้ง ไม่ให้มีภาพ ตามข้อ 1. แล้ว ***** ผล เหมือนเดิม *****
4. เพิ่มเติม ลองไปลบความสัมพันธ์ของตารางทิ้งหมด *****ผลเหมือนเดิม*****
แต่ที่แปลกคือ เหมือนกับความพันธ์ของตารางที่จับคู่กันยังใช้ได้ เพราะไม่แจ้ง Error เลยครับ
5. ลองลบหน้า อีก 5 หน้าออก ให้เหลือแต่ประวัติข้อมูล *****ผล เหมือนเดิม*******
6.ลองสร้างฟอร์มขึ้นใหม่ โดยใช้ tab control (ที่สร้างหลายๆหน้า ไม่รู้ผมเรียกถูกไหม) ****ผล ใช้คำสั่ง ปุ่มค้นหา กระพริบเหมือนเดิม******
7. ในข้อ 6. ไม่ได้ใส่รูป และลองทำเฉพาะ แท็ป หน้าประวัติข้อมูล หน้าเดียวเท่านั้น ครับ
8.ผมคงจะลองสร้างฐานข้อมูลใหม่ลองดู แล้วทำเหมือนวิธีเดิม ว่าจะได้ผลยังไง
เพราะผมสงสัยว่า ฐานข้อมูลที่ผมลองทำ ไปใช้กับงานอื่นๆ มันไม่เป็น เป็นเฉพาะฐานข้อมูลนี้ครับ
**** ขอบคุณ อ.สันติสุข มากครับ *****
ปล. ผมว่าผมต้องทำอะไรผิดสักสักอย่าง เพราะมือใหม่ จะค่อยๆไปไล่ดูอีกทีครับ
1. เอารูปออกจากฟอร์ม
ผล รันฟอร์มช้าเหมือนเดิม กดปุ่ม ค้นหา ก็กระพริบ เหมือนวิ่งค้นหาทุกฟิลด์เหมือนเดิม
2.คำสัั่งที่ใช้ในการค้าหา ใช้ macro ดังนี้ครับ
GoToControl
ชื่อตัวควบคุม [id_student]
FindRecord
สิ่งที่ค้นหา =[text79]
ตรงตาม เขตข้อมูลทั้งหมด
ตรงตามตัวพิมพ์เล็ก-ใหญ่ ไม่ใช่
ค้นหา ทั้งหมด
ค้นหาตามรูปแบบที่จัดไว้ ไม่ใช่
เฉพาะเขตข้อมูลปัจจุบัน ใช่
ค้นหาตั้นแต่ต้น ใช่
*** ซึ่ง เงื่อนไขต่างๆใน คำสั่ง Macro ผมก็ได้ลองสลับเปลี่ยนดูแล้ว ***** ผลก็ยังเหมือนเดิม
3. รูป ผมใช้ Image control ครับ **** แต่ก็ลองเอารูปออก โดยการลบ control รูปภาพทิ้ง ไม่ให้มีภาพ ตามข้อ 1. แล้ว ***** ผล เหมือนเดิม *****
4. เพิ่มเติม ลองไปลบความสัมพันธ์ของตารางทิ้งหมด *****ผลเหมือนเดิม*****
แต่ที่แปลกคือ เหมือนกับความพันธ์ของตารางที่จับคู่กันยังใช้ได้ เพราะไม่แจ้ง Error เลยครับ
5. ลองลบหน้า อีก 5 หน้าออก ให้เหลือแต่ประวัติข้อมูล *****ผล เหมือนเดิม*******
6.ลองสร้างฟอร์มขึ้นใหม่ โดยใช้ tab control (ที่สร้างหลายๆหน้า ไม่รู้ผมเรียกถูกไหม) ****ผล ใช้คำสั่ง ปุ่มค้นหา กระพริบเหมือนเดิม******
7. ในข้อ 6. ไม่ได้ใส่รูป และลองทำเฉพาะ แท็ป หน้าประวัติข้อมูล หน้าเดียวเท่านั้น ครับ
8.ผมคงจะลองสร้างฐานข้อมูลใหม่ลองดู แล้วทำเหมือนวิธีเดิม ว่าจะได้ผลยังไง
เพราะผมสงสัยว่า ฐานข้อมูลที่ผมลองทำ ไปใช้กับงานอื่นๆ มันไม่เป็น เป็นเฉพาะฐานข้อมูลนี้ครับ
**** ขอบคุณ อ.สันติสุข มากครับ *****
ปล. ผมว่าผมต้องทำอะไรผิดสักสักอย่าง เพราะมือใหม่ จะค่อยๆไปไล่ดูอีกทีครับ
3 @R21102
สงสัยตรงจุดที่มันกระพริบนี่แหล่ะ
แต่ผมทดลองกับข้อมูลของผมซึ่งมีแสนกว่าเรคอร์ด ด้วยแมโครเดียวกับที่คุณบอก ก็หาได้รวดเร็วในเวลาไม่ถึง 1 วินทีครับ เลยคิดว่าฐานข้อมูลอยู่บนเครื่องของเราเองหรือมาจากไฟล์เซิฟเวอร์ ถ้าเป็นอย่างหลัง เราลิงค์เทเบิลจากฐานข้อมูลบนเซิฟเวอร์มายังไฟล์ฐานข้อมูลบนเครื่องเรา (ซึ่งเป็นวิธีที่ถูกต้อง) หรือเปิดใช้ฐานข้อมูลที่แชร์มาทั้งก้อนตรงๆเลย (เป็นวิธีที่ไม่ถูกต้อง) ยังไงก็ตามผมไม่เคยทำอย่างวิธีที่ผิดนะครับ ก็เลยไม่รู้ว่าวิธีที่ผิดจะก่อให้เกิดปัญหาอย่างที่พบหรือเปล่า
แต่ผมทดลองกับข้อมูลของผมซึ่งมีแสนกว่าเรคอร์ด ด้วยแมโครเดียวกับที่คุณบอก ก็หาได้รวดเร็วในเวลาไม่ถึง 1 วินทีครับ เลยคิดว่าฐานข้อมูลอยู่บนเครื่องของเราเองหรือมาจากไฟล์เซิฟเวอร์ ถ้าเป็นอย่างหลัง เราลิงค์เทเบิลจากฐานข้อมูลบนเซิฟเวอร์มายังไฟล์ฐานข้อมูลบนเครื่องเรา (ซึ่งเป็นวิธีที่ถูกต้อง) หรือเปิดใช้ฐานข้อมูลที่แชร์มาทั้งก้อนตรงๆเลย (เป็นวิธีที่ไม่ถูกต้อง) ยังไงก็ตามผมไม่เคยทำอย่างวิธีที่ผิดนะครับ ก็เลยไม่รู้ว่าวิธีที่ผิดจะก่อให้เกิดปัญหาอย่างที่พบหรือเปล่า
4 @R21103
ฐานข้อมูลอยู่บนเครื่องผมครับ และได้ทดลองตาม (R21101) ข้อ 8 แล้วปรากฎว่า เหมือนเดิม แต่เปิดเร็วขึ้นนิดหนึง แทบไม่เห็นความแตกต่าง
แต่การกระพริบ ยังเหมือนเดิมทุกประการ ผมเลยนำข้อมูล แต่ละหน้า คือ ประวัติ ข้อมูลที่อยู่ บิดา-มารดา ฯลฯ เอามาสร้างเป็นฟอร์มใหม่ ให้ทุกฟิลด์ อยู่บนหน้าเดียวกัน รวมทั้งรูปภาพด้วย
ปรากฎว่า
1.รวดเร็วเป็นปกติ
2.การค้นหาข้อมูล ไม่มีการกระพริบ ไม่รวดเร็วด้วย ข้อมูลประมาณ 3500 เรคคอร์ดครับ
3.ผมจึงสันนิฐานว่า "น่าจะเป็นกับการสร้างฟอร์ม โดยใช้ ปุ่ม คอลโทรมแท็บ ซึ่งสร้างหลายๆหน้าในฟอร์มเดียวกัน
ไม่ทราบว่าผมสันนิษฐานถูกไหม แต่ก็ดูจากการทดลองทำครับ อาจารย์
แต่การกระพริบ ยังเหมือนเดิมทุกประการ ผมเลยนำข้อมูล แต่ละหน้า คือ ประวัติ ข้อมูลที่อยู่ บิดา-มารดา ฯลฯ เอามาสร้างเป็นฟอร์มใหม่ ให้ทุกฟิลด์ อยู่บนหน้าเดียวกัน รวมทั้งรูปภาพด้วย
ปรากฎว่า
1.รวดเร็วเป็นปกติ
2.การค้นหาข้อมูล ไม่มีการกระพริบ ไม่รวดเร็วด้วย ข้อมูลประมาณ 3500 เรคคอร์ดครับ
3.ผมจึงสันนิฐานว่า "น่าจะเป็นกับการสร้างฟอร์ม โดยใช้ ปุ่ม คอลโทรมแท็บ ซึ่งสร้างหลายๆหน้าในฟอร์มเดียวกัน
ไม่ทราบว่าผมสันนิษฐานถูกไหม แต่ก็ดูจากการทดลองทำครับ อาจารย์
5 @R21104
ทีนี้หลังจากที่ นำฟิลด์ มารวมกันในฟอร์มเดียวแล้ว คำสั่งที่ใช้พิมพ์รายงานหน้าฟอร์มปัจจุบันกลับใช้ไม่ได้
DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = '" & class & "'", acWindowNormal
ไม่ทราบว่าจะแก้ไขยังไงครับ อาจารย์
DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = '" & class & "'", acWindowNormal
ไม่ทราบว่าจะแก้ไขยังไงครับ อาจารย์
6 @R21105
ไม่ได้นี่คือยังไงครับ มีข้อความอะไรฟ้องออกมาหรือไม่
7 @R21108
เป็นสีเหลือง ตรงคำว่า class คำที่ 2 ครับ
8 @R21109
ที่ถูกน่าจะเป็น DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = '" & class & "'" แต่ถึงจะมี , acWindowNormal ต่อท้าย ก็ไม่น่าทำให้เกิด error ที่ว่าได้
ให้ลองคอมไพล์ดูก่อนนะครับว่าติดปัญหาอะไรหรือไม่
ให้ลองคอมไพล์ดูก่อนนะครับว่าติดปัญหาอะไรหรือไม่
9 @R21110
อาจารย์ครับ ขอเรียนถามเพิ่มเติมครับ
ถ้าต้องการให้ไม่ให้แก้ไข รหัสนักเรียนตามรูป คือ 24773 โดย ผมไปล๊อคฟิลด์ที่ชื่อว่า id_student แต่เวลา กดที่ปุ่ม ค้นหารหัสนักเรียน มันไม่ยอมค้นหาให้เนื่องจากมันล็อค
สิ่งที่ผมต้องการคือ จะ เขียนโค๊ดง่ายๆ อย่างไรเมื่อ.....
1.ล๊อคเฉพาะฟิลด์ id_student เมื่อเปิดฟอร์มขึ้นมา อย่างอื่นแก้ไขได้
2.เมื่อกดปุ่ม "ค้นหา" (รหัสนักเรียน) ให้ไปทำการ แก้แก้ฟิลด์ id_student ให้สามารถค้นหาได้
3. เมื่อเจอแล้ว ให้ล๊อค ฟิลด์ id_student เหมือนเดิม (ทั้งนี้เพื่อป้องกันการแก้ไขครับ)
***** ไม่ทราบว่าจะเขียนโค๊ด สั้นๆ ง่ายๆ ยังไงครับ *****
ถ้าต้องการให้ไม่ให้แก้ไข รหัสนักเรียนตามรูป คือ 24773 โดย ผมไปล๊อคฟิลด์ที่ชื่อว่า id_student แต่เวลา กดที่ปุ่ม ค้นหารหัสนักเรียน มันไม่ยอมค้นหาให้เนื่องจากมันล็อค
สิ่งที่ผมต้องการคือ จะ เขียนโค๊ดง่ายๆ อย่างไรเมื่อ.....
1.ล๊อคเฉพาะฟิลด์ id_student เมื่อเปิดฟอร์มขึ้นมา อย่างอื่นแก้ไขได้
2.เมื่อกดปุ่ม "ค้นหา" (รหัสนักเรียน) ให้ไปทำการ แก้แก้ฟิลด์ id_student ให้สามารถค้นหาได้
3. เมื่อเจอแล้ว ให้ล๊อค ฟิลด์ id_student เหมือนเดิม (ทั้งนี้เพื่อป้องกันการแก้ไขครับ)
***** ไม่ทราบว่าจะเขียนโค๊ด สั้นๆ ง่ายๆ ยังไงครับ *****
10 @R21111
เข้าใจว่าที่คุณทำคงกำหนด Enabled property ให้ไปกำหนด Locked property เป็น Yes/True แทนครับ
11 @R21112
แต่ถ้าใช้โค๊ดนี้ ก็พิมพ์ได้ แต่ต้องไปกำหนดว่าจะเลือกพิมพ์ห้องไหนเวลาสั่งพิมพ์ครับ
DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = [Forms]![frm_student].[class]"
DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = [Forms]![frm_student].[class]"
12 @R21113
ฟิลด์ class ของคุณมี data type เป็น Text หรือ Number
13 @R21114
เป็น Text ครับ รบกวนเวลาอาจารย์มากเลย ต้องขอโทษน๊ะครับ
14 @R21115
ถ้าเป็น Text โค้ดเดิมก็น่าจะทำได้นะครับ ตอนจะเปิดรายงาน ที่ช่อง class มีข้อมูลอยู่แล้วหรือยัง
15 @R21116
ที่ผมตอบช้า เพราะ เวลาผม post ไป มันฟ้อง
Spamming is not permitted!
You have exceeded the number of posts permitted in the time span.
ตอนเปิดรายงานที่ช่อง class มีข้อมูลอยู่ครับ
Spamming is not permitted!
You have exceeded the number of posts permitted in the time span.
ตอนเปิดรายงานที่ช่อง class มีข้อมูลอยู่ครับ
16 @R21117
1. Compile หรือยัง
2. ช่อง Class บนฟอร์มมีค่าเป็นอะไร มีช่องว่างนำหน้าหรือต่อท้ายหรือไม่
3. ฟิลด์ Class ในเทเบิลที่จะค้นหา มีค่าเป็นอะไร มีช่องว่างนำหน้าหรือต่อท้ายหรือไม่
4. ให้ใช้โค้ดนี้นะ DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = '" & class & "'"
2. ช่อง Class บนฟอร์มมีค่าเป็นอะไร มีช่องว่างนำหน้าหรือต่อท้ายหรือไม่
3. ฟิลด์ Class ในเทเบิลที่จะค้นหา มีค่าเป็นอะไร มีช่องว่างนำหน้าหรือต่อท้ายหรือไม่
4. ให้ใช้โค้ดนี้นะ DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = '" & class & "'"
17 @R21118
เรียน อาจารย์ครับ
ข้อ 1. compile แล้วครับ
2. ช่อง class บนฟอร์ม มีค่าเป็น text เช่น ม.2/1
3. ฟิลด์ class ไม่มีช่องช่องนำหน้าหรือต่อท้าย ครับ
4. ใช้โค๊ด DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = '" & class & "'" ที่อาจารย์ให้มา
มันฟ้องว่า
compile error
Variable not defined
ครับ
ข้อ 1. compile แล้วครับ
2. ช่อง class บนฟอร์ม มีค่าเป็น text เช่น ม.2/1
3. ฟิลด์ class ไม่มีช่องช่องนำหน้าหรือต่อท้าย ครับ
4. ใช้โค๊ด DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = '" & class & "'" ที่อาจารย์ให้มา
มันฟ้องว่า
compile error
Variable not defined
ครับ
18 @R21119
DoCmd.OpenReport "พิมพ์รายชื่อตามห้อง", acViewPreview, , "[class] = '" & Me.class & "'"
19 @R21120
Me.class ก็ยังไม่ได้ครับ เป็นสีนำเงินที่ class เหมือนเดิม รบกวนอาจารย์มานานแล้วครับ ดึกด้วยเกรงใจครับ
หรือเป็นเพราะว่า ผมใช้วิธีการ copy ฟิลด์ทุกฟิลด์ ทุกหน้า ที่ผมทำบนฟอร์ม ก่อนหน้านี้ มาสร้างฟอร์มใหม่ ก็ไม่รู้
หรือเป็นเพราะว่า ผมใช้วิธีการ copy ฟิลด์ทุกฟิลด์ ทุกหน้า ที่ผมทำบนฟอร์ม ก่อนหน้านี้ มาสร้างฟอร์มใหม่ ก็ไม่รู้
20 @R21121
แน่ใจหรือเปล่าว่าเท็กซ์บ็อกซ์ที่คุณคิดว่าเป็น Class มันชื่อ Class จริงๆ หรือว่าชื่ออื่น ให้ดูใน Name property นะครับ ถ้ามันไม่ได้ชื่อ Class ก็เปลี่ยนให้เป็น Me.ชื่ออื่นนั้น
Time: 0.3007s
2. น่าจะขึ้นกับคำสั่งที่ใช้ค้นหา
4. ถ้าเป็นเพราะรูป และถ้าใช้ Bound Object Frame control เป็นตัวคอนโทรลในการแสดงภาพ ก็ต้องลองเปลี่ยนไปใช้ Image control แทน ลองค้นกระทู้เก่าจากหน้าโฮมเพจด้วยคำว่า รูป ดูครับ มีคุยกันเยอะแล้ว ส่วนอื่นๆที่จะปรับแต่งให้มีความเร็วดีขึ้น ก็ลองอ่าน http://www.thai-access.com/yeadram_view.php?topic_id=504