VBA แฮงค์ ครับ
กระทู้เก่าบอร์ด อ.Yeadram

 3,967   12
URL.หัวข้อ / URL
VBA แฮงค์ ครับ

ขอสอบถามหน่อยครับ ผมใช้ access ทำ database โดย link กับ form ธรรมดานี่แหละคับ แต่พอผมใช้ ปุ่ทcommand หรือ ใช้ combo box เรียก code ใน vba มาใช้งาน มันก็จะขึ้น error แบบmodule not found ผมเลยลองเข้าไปในหน้าต่าง vba ดูปรากฎว่า หน้าต่างที่เป็น code ของ form นั้นๆ แฮงค์ครับ คือปิดแล้วเปิดใหม่ก็ แฮงค์ แล้วก็แฮงค์แต่ตัวหน้าต่าง code ทำให้เลยเรียก code มาใช้งานไม่ได้

จากนั้นผมก็เลย decompile ปรากฎว่าใช้ได้เหมือนเดิม สามารถทำงานทุกอย่างได้เป็นปกติ ก็นึกว่าจะหายแล้ว แต่พอเปิดโปรแกรมขึ้นมาใหม่ ลองกดปุ่มจาก form ก็เกิดอาการเหมือนเดิม เข้าไปดูใน หน้า code หน้าต่าง code ก็แฮงค์ เหมือนเดิม เหมือนกับว่า ผมต้อง decompile ทุกครั้งก่อนใช้งาน เลยอะครับ ไม่ทราบว่ามีวิธีแก้หรือเปล่า ขอบคุยครับ

ป.ล. ของผมเป็น access 2010

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

1 @R14960
ที่ผมเจอ decompile ก็หายนะครับ ขอทราบวิธี decompile ของคุณหน่อยครับ
2 @R14963
ผมใช้ run คำสั่งเนี่ยอะครับ

msaccess.exe /decompile "C:\Users\ChocolovE\Desktop\เรือ.accdb"
3 @R14964
รูปตามภาพครับ พอผมกด ปุ่ม command ที่เรียกใช้ code ใน VBA ก็ขึ้นแบบนี้ขึ้นมาครับ



จากนั้นผมก้อเข้าไปดูใน หน้า vba ก็เป็นดังภาพครับ

4 @R14966
อืม... อย่างแบบนี้ไม่ใช่ที่ผมเจอครับ ที่ผมเจอคือหากเปิดหน้าต่าง VBE หรือเปิดฟอร์มที่เรียกใช้ VBA เมื่อไรมันจะขึ้นหน้าต่าง Error ของวินโดว์ส บอกให้ Repair หรือ Close เหมือนโปรแกรมเสียทั้งหลาย แต่จะเลือกอะไร เปิดใหม่ก็ไม่หาย ผมก็ใช้ decompile เปิด ครั้งเดียว ครั้งต่อไปก็เรียกได้ปกติ
แต่เอาอย่างนี้ ผมแนะนำอย่างที่เค้าทำกันเป็นขั้นๆนะครับ ขั้นตอนไหนคุณยังไม่ได้ทำก็ลองทำดู
1. ลง MS Office 2010 Service Pack 1
http://support.microsoft.com/kb/2510690

2. ลง Hot fix 2553385
http://support.microsoft.com/kb/2553385

3. ทำ Decompile ที่ไฟล์เดิม
To decompile your database, follow these steps

3.1 From the Windows, Start, Run command line, type: msaccess.exe /decompile
where msaccess.exe includes the complete path. For example:
C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE /decompile

3.2 When Access opens, open the database you want to decompile (with trusted authority for Access 2003 or later)

3.3 Open up any module. Compile it via Debug, Compile.., then File, Save.

3.4 Go back to the database and Compact it
- For Access 2010, Database Tools, Compact and Repair Database.
- For Access 2007, Office Button, Manage, Compact and Repair Database.
- For Access 2003, 2002, 2000, and 97: Tools, Database Utilities, Compact and Repair Database
The database size should be reduced and the strange errors related to the VBA code should be gone

ลองดูนะครับ แต่ผมไม่เคยเจอปัญหาแบบคุณ ผมเลยไม่รู้ว่าจะได้ผลหรือเปล่า แต่ทุกขั้นตอนที่ผมเขียนนี้ผมเคยทำแล้ว

ปล. แต่หากไม่หายจริง ให้ลองสร้างไฟล์ MS Access ใหม่ แล้วลอง Import ทุกอย่างของไฟล์เก่าเข้ามาไฟล์ใหม่ดู
และสุดท้ายหากไม่หาย และจำเป็นต้องใช้จริงๆ ให้สร้าง Shortcut เรียกไฟล์ MS Access ขึ้นมา แล้วแก้ Shortcut ที่ช่อง Target: "C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\Users\ChocolovE\Desktop\เรือ.accdb"
/decompile
แล้วใช้ Shortcut ตัวนี้ในการเรียกไฟล์ไปก่อน แก้ขัด
5 @R14967
แก้ไข
Target: "C:\Program Files\Microsoft Office\Office14\MSACCESS.EXE" "C:\Users\ChocolovE\Desktop\เรือ.accdb" /decompile
6 @R14993
ขอบคุนมากครับ สรุปสุดท้ายกไม่ได้คับ เลยใช้ shortcut ไปพลางๆ T_T
7 @R15001
อืม... คิดไม่ออกแล้วครับ ว่าแต่เคยลองนำไฟล์ไปใช้เครื่องอื่นหรือเปล่าครับ จะได้แน่ใจว่าไม่ได้เป็นที่โปรแกรม MS Access เครื่องเราเครื่องเดียว
8 @R15006
มีคำสั่ง Application.Echo False หรือไม่ หรือโปรแกรมวนลูปไม่หลุดหรือไม่
9 @R15038
ไม่ได้ใส่เลยครับ ผมเพิ่งหัดทำ access ครั้งแรก ใน function ที่เรียก vb มีแค่ function อายุอย่างเดียวครับ นอกนั้น ก็แค่ เวลาเลือก combo box แล้วให้มีผลต่อ field แค่นั้นครับ ต้องไล่เช็คยังไงบ้างครับ รบกวนด้วยครับ
10 @R15042
1. คอมไพล์หรือยัง !
2. ใช้ event อะไรสำหรับคอมโบบ็อกซ์ในการเรียกโค้ดมาทำงาน
3. เอาโค้ดมาให้ดูหน่อย
11 @R15054
เย้ ผมเลี่ยงไปใช้ macro ได้แล้วครับ เหลือแค่ code นี้ที่ผมยังเลี่ยงไปใช้มาโครไม่ได้ คือ ตอน form onload อะครับ ผมใช้คำสั่งนี้

Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
End Sub

แค่นี้เองครับ มันก้อ แฮงค์แล้ว

คือพอ complie ก้อหาย แล้วพอปิดโปรแกรมไป มาเปิดใหม่ ก้อแฮงค์อีก คราวนี้ไม่มีขึ้นมาให้ complie แล้ว ผมก้อต้อง decomplieเอา ถึงจะใช้งานคำสั่งนี้ได้ครับ
12 @R15055
- ทำสำรองโปรแกรมไว้ก่อน แล้วใช้ตัวสำรองมาทดสอบโดยลบทุก VBA โค้ดและทุกแมโครออก และไม่เรียกใช้พวกนี้เลย ให้เหลือแต่โค้ดใน Form_Load แล้วดูว่าแฮงค์หรือไม่ ? เพราะโค้ดนี้ไม่น่าทำให้เกิดการแฮงค์เลย

- ในฟอร์มนี้มีคอลโทรลประเภท Bound Object Frame หรือ Image หรือไม่ ?

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