***กระชับข้อมูล บันทึกเป็นชื่อใหม่***
กระทู้เก่าบอร์ด อ.Yeadram

 2,139   5
URL.หัวข้อ / URL
***กระชับข้อมูล บันทึกเป็นชื่อใหม่***

access 2003 สังให้กระชับข้อมูลเมื่อปิด
แต่ไม่อยากให้บันทึกเป็นชื่อไฟล์ใหม่ เช่น ฐานข้อมูล
อยากให้บันทึกซ้ำในชื่อไฟล์เดิม
ต้องแก้ตรงไหนครับ
ขอบคุณมาก

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

1 @R20210
ปกติถ้าเลือกตัวเลือก Compact on close ใน Tools / Options ... / General แล้วเป็นไฟล์ที่เรากำลังเปิดอยู่ หลังจากปิดแล้วมันก็จะ compact เป็นไฟล์เดิมให้เลย แต่ถ้าเราเปิดไฟล์ Front End ที่ลิงค์เทเบิลไปยังฐานข้อมูล การ compact จะทำกับตัว Front End เท่านั้น ไม่ได้ทำกับ Back End เลย   คุณต้องไปทำการ Compact and Repair ตัว Back End เอาเองครับ

หรือไม่ก็ ถ้ายังไม่ได้เป็นฐานข้อมูลอะไร แล้วเลือก Tools / Database Utilities / Compcat and Repair Database ... มันถึงจะถามว่าจะทำกับไฟล์อะไร แล้วเก็บเป็นชื่ออะไร
2 @R20223
ขอบคุณมากครับ
เข้าใจว่า ฐานข้อมูล ถูกนำไปใช้กับโปรแกรมสต็อค ทำให้ไม่สามารถบันทึกชื่อเดิมได้ ทั้งที่ปิดโปรแกรมหมดแล้ว
ช่วยไม่ได้แล้ว ทุกครั้งที่ต้องการกระชับข้อมูล ต้องคอยเปลี่ยนชื่อไฟล์เอง
3 @R20226
ผมใช้ Access2003 อยู่ครับ ทำเป็น Front Program และ Back DataBase
และกำหนด Compact on close ใน Tools / Options ... / General เพื่อสั่งให้ทำงานเมื่อปิดไฟล์ทั้งสองไฟล์
ถ้าไฟล์ Database ถูกใช้งานอยู่โดยมีการเปิดโปรแกรมที่เครื่องอื่น   เมื่่อ Compact จะให้บันทึกเป็นชื่อใหม่ครับ
ต้องปิด Front Program ทุกตัวครับ แล้วเมื่อเปิดปิด Back Database จะบันทึกในชื่อเดิมครับ
4 @R20230
อื่ม คือถ้าอยากจะ Compact แล้ว Backup เป็นไฟล์ใหม่สำรองผมเคยโพสไว้ที่นี่ครับ กดเบาๆ

แต่ถ้าต้องการตรวจสอบว่ามีเครื่องไหนที่ใช้ฐานข้อมูลเดียวกับเราบ้าง จะได้รู้ว่าเครื่องไหนใช้งานไฟล์อยู่ทำให้ไม่สามารถ Compact ได้

- ให้เปิดไฟล์ฐานข้อมูลนั้นขึ้นมา เข้าไปที่หน้าต่างของ Micorosoft Visual Basic for Applications เมนู Tools > References ทำเครื่องหมายถูกที่หัวข้อ Microsoft ActiveX Data Objects x.x Library (หากไม่ได้กำหนด)

- ใส่โค๊ดลงใน Module ดังนี้:
'----------------Code Start----------------
Sub ShowUserRosterMultipleUsers()
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim i, j As Long

    Set cn = CurrentProject.Connection

    Set rs = cn.OpenSchema(adSchemaProviderSpecific, _
    , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")

    Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
    "", rs.Fields(2).Name, rs.Fields(3).Name

    While Not rs.EOF
        Debug.Print rs.Fields(0), rs.Fields(1), _
        rs.Fields(2), rs.Fields(3)
        rs.MoveNext
    Wend
End Sub
'-----------------Code End-----------------

- กด CTRL + G เพื่อเปิดหน้าต่าง Immediate

- พิมพ์บรรทัดต่อไปนี้ในหน้าต่าง Immediate คำว่า ShowUserRosterMultipleUsers และกด ENTER:

ที่หน้าต่าง Immediate คือ หากมีการเข้าถึงฐานข้อมูลทั้งเครื่องที่ชื่อ Computer1 และ เครื่อง Computer2 ก็จะแสดงดังนี้:

COMPUTER_NAME    LOGIN_NAME     CONNECTED     SUSPECT_STATE
Computer1        Admin           True           Null
Computer2        Admin           True           Null
...

ก็ให้เราไล่ดูว่าชื่อเครื่องไหนที่ยังใช้งานอยู่โดยที่เราไม่รู้ครับ
5 @R20231
แต่หากเป็นกรณี ไฟล์ฐานข้อมูลเป็น Back End ให้ใช้การเปิดไฟล์ MS Access ไฟล์ใหม่ขึ้นมาก็ได้ แล้วเปลี่ยนบรรทัด

    Set cn = CurrentProject.Connection
เป็น
    Set cn = New ADODB.Connection
    cn.Open "Provider = Microsoft.ACE.OLEDB.12.0; " & "Data Source = ชื่อพาธ\ชื่อไฟล์; " & "Persist Security Info=false;"
กรณีไฟล์มี Password
    cn.Open "Provider = Microsoft.ACE.OLEDB.12.0; " & "Data Source = ชื่อพาธ\ชื่อไฟล์; Jet OLEDB:Database Password=รหัส; " & "Persist Security Info=false;"
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 2.8591s