กระทู้เก่าบอร์ด อ.Yeadram
2,139 5
URL.หัวข้อ /
URL
***กระชับข้อมูล บันทึกเป็นชื่อใหม่***
access 2003 สังให้กระชับข้อมูลเมื่อปิด
แต่ไม่อยากให้บันทึกเป็นชื่อไฟล์ใหม่ เช่น ฐานข้อมูล
อยากให้บันทึกซ้ำในชื่อไฟล์เดิม
ต้องแก้ตรงไหนครับ
ขอบคุณมาก
แต่ไม่อยากให้บันทึกเป็นชื่อไฟล์ใหม่ เช่น ฐานข้อมูล
อยากให้บันทึกซ้ำในชื่อไฟล์เดิม
ต้องแก้ตรงไหนครับ
ขอบคุณมาก
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R20223
ขอบคุณมากครับ
เข้าใจว่า ฐานข้อมูล ถูกนำไปใช้กับโปรแกรมสต็อค ทำให้ไม่สามารถบันทึกชื่อเดิมได้ ทั้งที่ปิดโปรแกรมหมดแล้ว
ช่วยไม่ได้แล้ว ทุกครั้งที่ต้องการกระชับข้อมูล ต้องคอยเปลี่ยนชื่อไฟล์เอง
เข้าใจว่า ฐานข้อมูล ถูกนำไปใช้กับโปรแกรมสต็อค ทำให้ไม่สามารถบันทึกชื่อเดิมได้ ทั้งที่ปิดโปรแกรมหมดแล้ว
ช่วยไม่ได้แล้ว ทุกครั้งที่ต้องการกระชับข้อมูล ต้องคอยเปลี่ยนชื่อไฟล์เอง
3 @R20226
ผมใช้ Access2003 อยู่ครับ ทำเป็น Front Program และ Back DataBase
และกำหนด Compact on close ใน Tools / Options ... / General เพื่อสั่งให้ทำงานเมื่อปิดไฟล์ทั้งสองไฟล์
ถ้าไฟล์ Database ถูกใช้งานอยู่โดยมีการเปิดโปรแกรมที่เครื่องอื่น เมื่่อ Compact จะให้บันทึกเป็นชื่อใหม่ครับ
ต้องปิด 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
...
ก็ให้เราไล่ดูว่าชื่อเครื่องไหนที่ยังใช้งานอยู่โดยที่เราไม่รู้ครับ
แต่ถ้าต้องการตรวจสอบว่ามีเครื่องไหนที่ใช้ฐานข้อมูลเดียวกับเราบ้าง จะได้รู้ว่าเครื่องไหนใช้งานไฟล์อยู่ทำให้ไม่สามารถ 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;"
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;"
Time: 2.8591s
หรือไม่ก็ ถ้ายังไม่ได้เป็นฐานข้อมูลอะไร แล้วเลือก Tools / Database Utilities / Compcat and Repair Database ... มันถึงจะถามว่าจะทำกับไฟล์อะไร แล้วเก็บเป็นชื่ออะไร