กระทู้เก่าบอร์ด อ.Yeadram
1,595 9
URL.หัวข้อ /
URL
Form ที่ใช้ Source data ประเภท Crosstab query
ผมมีปัญหาบ่อยๆกับฟอร์มที่ใช้ source data ประเภท crosstab query ครับโดยมักเกิด Error และปิดตัวเองตลอดจนถึงขั้นไม่สามารถเปิดไฟล์ดังกล่าวได้อีก หลังจากที่เปลี่ยนจาก Design view เป็น Form view ครับกลัวมากว่าถ้าไม่มีการ backup ไว้ก่อนทำการแก้ไขเปลี่ยนแปลง จะทำให้ไฟล์เสียจนไม่สามารถกู้คืนได้ครับ อยากทราบว่าไครเคยเจอบ้าง และมีแนวทางแก้ไขหรือไม่หากต้องทำงานกับ Form ที่ต้องใช้ข้อมูลจาก crosstab query บ่อยๆครับ
9 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R18287
-ผลลัพท์ของ query มีไม่ถึง 10 คอลัมน์ครับ
-พื้นที่ในฮาร์ดดิสก์เหลือไม่ต่ำกว่า 100 GB
-ทำ compact and repair ทุกครั้งที่มีการเปลี่ยนแปลงการออกแบบ และ compile ทุกครั้งที่เขียน code เพิ่มหรือเปลี่ยนแปลง code
-ปัจจุบันเป็น service pack 3 ครับ
ที่น่าสังเกตุคือมักมีปัญหากับฟอร์มที่ใช้ data source ที่เป็น crosstab query เท่านั้นครับ และจะเกิดเฉพาะเวลาที่เปลี่ยนจาก design view เป็น form view เท่านั้นหากขั้นตอนนี้สามารถผ่านไปได้โดยไม่ error ก่อนก็สามารถใช้งานได้ปกติครับ ผมแก้ปัญหาด้วยการ backup อย่างเดียวเลยครับ ทุกครั้งที่ต้องแก้ไขฟอร์มดังกล่าวที่มุมมอง design แล้วจะกลับมาที่ form view ต้องคอยลุ้นทุกทีเลยครับ ลักษณะของฟอร์มที่ออกแบบคือ สร้าง textbox ขึ้นมา โดยเขียน condition ที่ control source แทน control source เดิมที่ผูกมากับ form โดย =iif(IsError([control source])=TRUE,"",[control source]) ซึ่ง control source มาจาก crosstab query หลังๆมานี้ผมตัด =TRUE ออกฟังค์ชั่นดังกล่าวก็ยังทำงานได้ปกติ และไม่ error เหมือนเมื่อก่อนแล้วครับ เลยคิดว่าผมอาจใช้ฟังค์ชั่นผิดวิธีครับแต่ก็รับประกันไม่ได้ว่ามันอาจเกิดจากสาเหตุอื่นก็ได้ครับ
-พื้นที่ในฮาร์ดดิสก์เหลือไม่ต่ำกว่า 100 GB
-ทำ compact and repair ทุกครั้งที่มีการเปลี่ยนแปลงการออกแบบ และ compile ทุกครั้งที่เขียน code เพิ่มหรือเปลี่ยนแปลง code
-ปัจจุบันเป็น service pack 3 ครับ
ที่น่าสังเกตุคือมักมีปัญหากับฟอร์มที่ใช้ data source ที่เป็น crosstab query เท่านั้นครับ และจะเกิดเฉพาะเวลาที่เปลี่ยนจาก design view เป็น form view เท่านั้นหากขั้นตอนนี้สามารถผ่านไปได้โดยไม่ error ก่อนก็สามารถใช้งานได้ปกติครับ ผมแก้ปัญหาด้วยการ backup อย่างเดียวเลยครับ ทุกครั้งที่ต้องแก้ไขฟอร์มดังกล่าวที่มุมมอง design แล้วจะกลับมาที่ form view ต้องคอยลุ้นทุกทีเลยครับ ลักษณะของฟอร์มที่ออกแบบคือ สร้าง textbox ขึ้นมา โดยเขียน condition ที่ control source แทน control source เดิมที่ผูกมากับ form โดย =iif(IsError([control source])=TRUE,"",[control source]) ซึ่ง control source มาจาก crosstab query หลังๆมานี้ผมตัด =TRUE ออกฟังค์ชั่นดังกล่าวก็ยังทำงานได้ปกติ และไม่ error เหมือนเมื่อก่อนแล้วครับ เลยคิดว่าผมอาจใช้ฟังค์ชั่นผิดวิธีครับแต่ก็รับประกันไม่ได้ว่ามันอาจเกิดจากสาเหตุอื่นก็ได้ครับ
3 @R18288
IsError( ) ที่เป็น built-in function ของ VBA นี่เหรอครับ ? หรือคือฟังก์ชั่นอะไร แล้วทำไมต้องใช้
4 @R18289
ใช่ครับที่ต้องใช้เพราะบางครั้งข้อมูลที่ได้จากการ query ด้วย crosstab มีไม่ครบตามจำนวนของ textbox ที่สร้างขึ้นบน form ทำให้ textbox โชว์ error #name ครับ
5 @R18290
เราสามารถกำหนดจำนวนคอลัมน์ใน crosstab query ได้นะครับ แม้ว่าผลจริงๆของคิวรี่ในตอนนั้นจะไม่มีคอลัมน์ที่ว่านั้นออกมาเลย แต่เมื่อเราดูจากผลคิวรี่โดยรวมแล้ว จะมีคอลัมน์นั้นแสดงออกมาเป็น NULL ให้ด้วย ซึ่งเราก็ไม่ต้องใช้ IsError( ) มาทดสอบอีกแล้ว ลองดูใน http://thai-access.com/yeadram_view.php?topic_id=1459
6 @R18291
ขอบคุณมากครับอาจารย์ เส้นผมบังภูเขาครับ บางครั้งเรามักมองหาแต่สูตรฟังค์ชั่น หรือ code เทพๆเพื่อแก้ปัญหา แต่ลืมพลิกแพลงใช้เทคนิคง่ายๆจริงๆครับ
7 @R18295
โพสกระทู้ยังไงอะครับ มันบอกว่าผมพิมพ์ normal word ผิด ผมจะตั้งกระทุ้ถามอะ
8 @R18296
พิมพ์คำว่า "ไทยแอ็คเซส"
9 @R18297
Time: 0.3490s
- พื้นที่ในฮาร์ดดิสก์เหลือน้อยหรือเปล่า
- ทำ decompile, compact and repair, compile
- ติดตั้ง service pack ตัวล่าสุด