Complie ไม่ได้ ต้องตรวจสอบบริเวณใดบ้างครับ
กระทู้เก่าบอร์ด อ.Yeadram

 4,609   8
URL.หัวข้อ / URL
Complie ไม่ได้ ต้องตรวจสอบบริเวณใดบ้างครับ

ข้อผิดพลาดนี้มักจะเกี่ยวข้องกับการคอมไพล์ฐานข้อมูลขนาดใหญ่ไปเก็บไว้ในแฟ้ม MDE  เนื่องจากเมธอดที่ใช้ในการคอมไพล์ฐานข้อมูลนั้นจะมีการสร้างการอ้างอิง TableID เป็นจำนวนมากสำหรับแต่ละตาราง  ซึ่งกลไกจัดการฐานข้อมูล Microsoft Jet รุ่น 4.0 จะสร้างการอ้างอิง TableID ที่เปิดไว้ได้สูงสุดเพียง 2048 การอ้างอิงในแต่ละครั้ง  ?ังนั้นการส่งออก ฐานข้อมูลเป็น MDE จึงอาจมีจำนวนมากเกินไป ถ้าฐานข้อมูลมีวัตถุจำนวนมาก (ตาราง แมโคร ฟอร์ม รายงาน และอื่นๆ)
ไม่มีเมธอดที่ถูกต้องเพื่อการประมาณจำนวน TableIDs ซึ่ง Jet database engine จะใช้ ในขั้นตอนการคอมไพล์ฐานข้อมูลเป็น MDE อย่างไรก็ตามแต่ละโมดูล VBA และแต่ละฟอร์มจะใช้ TableID เดียว ด้วยเหตุนี้หากฐานข้อมูลมีอยู่ 500 ฟอร์ม และคุณสมบัติ HasModule ของแต่ละฟอร์มถูกตั้งค่าเป็น ใช่ จำนวนมากถึง 1,000 TableID จะถูกใช้ ข้อความที่แจ้งขึ้นมาครับ

หากทำ .mde ผ่านจะให้มาเป็นชื่อ db1.mdb ไม่ได้เป็นรูปไอคอนแบบมีกุญแจแปะไว้ พอเรียกใช้ก็จะบอกว่า could not find file d:\.....mdb ครับ
พอจะมองถึงปัญหาออกไหมครับ แต่หากทดลองแค่มี tableเดียวconverse ไฟล์เป็น 2000 เสร็จ คอมไพลน์เสร็จ ได้เป็น .mde ได้เรียกใช้ได้ไม่มีปัญหา

8 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R00642
พอปิด มีข้อความขึ้นฟ้องอีกว่า Unrecognized database format d:\***.ldb อีกครับกด OK ทีนี้ก็หายแว้บไปเลย...พอมองเห็นความขาดอะไรไปได้ไหมครับ
ขอบคุณครับ
2 @R00646
อ่านแล้วงงครับ ไม่แน่ใจว่าคำถามคือ สร้าง .mde ไม่ได้ใช่ไหม ? หากใช่ อย่างแรกคือให้ก๊อปปี้ต้นฉบับ .mdb เก็บไว้ก่อนเลย ต่อไปทำการ decompile โดยเข้าสู่ command windows แล้วสั่ง

cd C:\Program Files\Microsoft Office\Office10     อาจเป็นโฟลเดอร์อื่นตามแต่ละเวอชั่น

MSACCESS "C:\...........\ชื่อไฟล์.mdb" /DECOMPILE

แล้วออกจาก Access กลับมาสู่ command prompt   แล้วออกจาก command windows

เข้าไปคอมไพล์ .mdb ตัวนี้ ว่าผ่านหรือไม่ ถ้าไม่ผ่านติดตรงไหนก็แก้ไขให้ถูกต้องเสียก่อน

เสร็จแล้วจึงสร้าง .mde อีกที

ถ้ายังไม่ได้ ก็ต้องพยายามลองสร้าง .mdb เปล่าๆขึ้นมา แล้วลอง import จาก .mdb ตัวที่สำรองเก็บไว้จากขั้นแรกสุด แล้วก็ลองคอมไฟล์ และสร้าง .mde อีกที

ระบบคุณใหญ่ขนาดมีการใช้ TableID เกินกว่าที่ Access รองรับได้หรือครับ ผมว่าไม่น่าจะถึงขนาดนั้นนะครับ ?!?

ส่วนไฟล์ .ldb (เข้าใจว่าน่าจะย่อมาจาก locking database) เป็นไฟล์ที่เก็บข้อมูลว่าใครใช้อะไรอยู่บ้างในไฟล์ที่กำลังเปิดอยู่ เมื่อเลิกใช้ไฟล์ .mdb/.mde แล้ว ไฟล์ .ldb จะถูกลบไปเอง แต่ถ้าเกิดปัญหาอะไรที่ทำให้ .ldb ค้างอยู่ เราก็ลบเองได้ครับ
3 @R00652
ขอบคุณครับ จะสร้าง mde ครับผมผมจะทดลองทำตามคำแนะนำตามที่ท่านได้ให้คำตอบไว้ ได้ผลประการใดจะกลับมารายงานครับ
4 @R01682
ปัญหาเดียวกัน ทำแบบ อ.สันติ บอก ผ่านได้แบบ งงๆ ครับ

1.ก่อนทำแบบ อ.บอก ผมก็ตรวจสอบแล้วว่า มัน DEBUG ผ่านหมด
กระชับ ซ่อมแซม ก็ทำแล้ว นำเข้า DB ตัวใหม่ก็ทำแล้ว
มาบางอ้อที่กระทู้นี้ แล้วมันเกิดจากอะไร ล่ะครับ

2.มีวิธีที่ง่ายกว่าการ KEY ผ่านคำสั่ง DOS ไหมครับ
5 @R01683
อีกประเด็น ตอนที่ DECOMPLIE เสร็จ จะปิด ACCESS
มันแจ้งว่า ต้องการ SAVE การเปลี่ยนแปลง ของ FORM
ดังนี้หรือไม่   FORM A
                  FORM B
                   .........
ทั้งนี้ผมแน่ใจว่าไม่ได้แก้ไข FORM ดังกล่าว
ดังนั้น DECOMPLIE มันต้องทำอะไรบางอย่าง
กับ FORM ดังกล่าว โดยอัตโนมัติหรือเปล่าครับ
6 @R01684
2.มีวิธีที่ง่ายกว่าการ KEY ผ่านคำสั่ง DOS ไหมครับ
ผมใช้ ACCESS XP มีวิธีดังนี้ครับ
2.1 เปิดมุมมองออกแบบของ form อะไรก็ได้
2.2 เมนู>มุมมอง>รหัส>Compile
7 @R01686
- การ Decompile ต้องสั่งจาก command line เท่านั้นครับ เพราะเป็น Undocumented Command ที่ Microsoft ไม่อยากเปิดเผย (แต่ก็มีคนรู้จักมันเต็มไปหมด   งงกับ Microsoft จริงๆ)

- Decompile ไม่ใช่การ Compile   เมื่อ Decompile แล้ว ควรกลับมา Compile อีกครั้ง ขั้นตอนนี้ผมลืมบอกไป

- ทำไมต้อง Decompile   สรุปคือ Access มันยังไม่เสถียรพอหน่ะคับ

- Decompile แล้วถามให้ Save Form   อันนี้ผมไม่เคยเจอครับ มันไม่น่าเกิดขึ้น
8 @R01687
อ้างถึง >>>Decompile แล้วถามให้ Save Form   อันนี้ผมไม่เคยเจอครับ มันไม่น่าเกิดขึ้น


สำหรับข้อนี้ ผม งงเองครับ

ขอบคุณครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2918s