Chủ đề: Sao lưu table từ file -> file?
-
11-05-2008, 06:29 PM #1Junior Member
- Ngày tham gia
- Dec 2015
- Bài viết
- 0
Sao lưu table từ file -> file?
Tôi đang làm việc (chạy VBA trong file Main.mdb), link đến dữ liệu chứa trong file Data.mdb (trong file này có tablbe với tên XNT). Có sẵn 1 file Backup.mdb trên HDD.
Để copy table XNT từ Data.mdb sang Backup.mdb có cùng tên table XNT với đoạn code ngắn nhất và thông minh nhất viết trong Main.mdb làm sao đây? Chú ý: Nếu table XNT đã có trong Backup.mdb thì phải hỏi người sử dụng trước khi copy đè lên dữ liệu cũ.View more random threads:
- Các hàm trong access
- Tạo Form đăng nhập
- chuyển report access sang excel
- Đặt password cho Front End bằng VB
- Giúp em tồn kho với cả nhà ơi!
- Checkbox và option button
- Tìm hàm tương tự với hàm days360 của excel
- giúp em sử dụng đoạn code này với!!!
- Cho mình hỏi Tạo msgbox xác nhận trước khi xoá bản ghi trên form
- Xóa dữ liệu ở 2 bảng cùng lúc
-
11-05-2008, 06:58 PM #2Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Sao lưu table từ file -> file?
Gửi bởi dangtuanson
Còn vấn đề bạn nêu ra thì không thể nào cho là ngắn nhất với không ngắn nhất. Dù gắn đến đâu thì nó cũng phải thực hiện tuần tự những lôgic bắt buộc.
Tất nhiên tôi cũng có một giải pháp có thể không hay lắm, nhưng hiện thời để nhường sân cho các cao thủ khác, tôi tạm thời chưa nêu giải pháp của mình.
Cao thủ đâu rồi, vào sân đi thôi. :341:
-
11-06-2008, 12:45 AM #3Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Sao lưu table từ file -> file?
Sub command2_click()
Msgbox("Dùng Win Explorer mà chép đè lên cả file.mdb cho rồi")
End sub
:441:
-
11-06-2008, 03:27 AM #4Junior Member
- Ngày tham gia
- Dec 2015
- Bài viết
- 0
Ðề: Sao lưu table từ file -> file?
Để xử lý việc hỏi người sử dụng trước khi copy đè lên dữ liệu cũ thì bạn cần thêm hàm kiểm tra sự tồn tại của 1 table trong tệp .MDB
Giải pháp của tôi như sau:
Đầu tiền bạn chep hàm kiểm tra sự tồn tại của một table trong một tệp .MDB này vào
Function fTonTaiBang(TenTep As String, TenBang As String) As Boolean
Dim db As Database, tb As TableDef
fTonTaiBang = False
If TenTep = "" Then 'Neu khong chi ra ten tep .MDB thi kiem tra tren tep hien thoi
Set db = CurrentDb
Else
Set db = OpenDatabase(TenTep)
End If
For Each tb In db.TableDefs
If tb.Name = TenBang Then
fTonTaiBang = True
Exit Function
End If
Next tb
End Function
Còn đây là thủ tục thực hiện yêu cầu của bạn:
Sub CopyTable(TblName As String, ToMDB As String) 'Copy bang TblName sang tep ToMDB
Dim st As String
If fTonTaiBang(ToMDB, TblName) Then
If MsgBox("Bang " & TblName & " da ton tai. Ban co muon ghi de khong?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
End If
st = "SELECT " & TblName & ".* INTO " & TblName & " IN '" & ToMDB & "' FROM " & TblName & ";"
DoCmd.SetWarnings False
DoCmd.RunSQL st
DoCmd.SetWarnings True
End Sub
-
11-06-2008, 04:01 AM #5Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Sao lưu table từ file -> file?
Gửi bởi dongnamnb
Theo tôi nên viết lại hàm kiểm tra sự tồn tại của 1 bảng xác định như sau:
Function fTonTaiBang2(TenBang As String, Optional TenTep) As Boolean
On Error Resume Next 'Nếu có lỗi thì bỏ qua và chạy tiếp
Dim db As DAO.Database, tb As DAO.Recordset
fTonTaiBang2 = False
'Kiểm tra sự tồn tại của File database TenTep (nếu có khai báo) Nếu không tìm thấy thì thoát ra khỏi Function - Không chạy tiếp
If Not IsMissing(TenTep) Then
If Len(Dir$(TenTep)) = 0 Then Exit Function
end If
'Nếu không khai báo tên file database TenTep
If IsMissing(TenTep) Then
Set db = CurrentDb
Else
Set db = OpenDatabase(TenTep)
End If
'Kiểm tra bằng cách gán biến Recorset tb
'Nếu Tenbang không tồn tại sẽ phát sinh lỗi (Err > 0)
'Lúc ấy đẳng thức Err = 0 sẽ có giá trị False
'Ngược lại sẽ có giá trị True
Set tb = db.openrecordset(TenBang)
'
fTonTaiBang2 = (Err = 0)
'
Set tb = Nothing
Set db = Nothing
'
End Function
Việc chạy vòng lặp For ... Next như Function fTonTaiBang sẽ phải mất nhiều thời gian hơn.
-
11-06-2008, 05:46 AM #6Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Sao lưu table từ file -> file?
Rất cảm ơn anh dongnamnb và anh Hồng Đức đã góp ý cho đề tài này.
-----------------------------------------------------------------------------------------
Sub CopyTable(TName As String, Fname as string)
if Dir$(Fname)="" then Exit sub
Docmd.Setwarning False
On Error Goto NoTab
DoCmd.TransferDatabase acLink, "Microsoft Access", Fname, acTable, Tname, "Son"
If Msgbox("Đã có dữ liệu, đồng ý copy không?",VbYesNo+256,"Chú ý")= VbNo then Exit sub
Docmd.DeleteObject acTable,"Son"
NoTab:
Docmd.Runsql "Select " & TName & ".* Into " & TName & " In " & Fname & "' From " & TName & ";"
End sub
-
11-06-2008, 05:46 PM #7Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Sao lưu table từ file -> file?
Gửi bởi dangtuanson
Nhân dịp ta bàn chuyện sao lưu, xin tham gia 1 kinh nghiệm nhỏ:
+ Với các File hoặc các bảng (table) được chép lưu ta nên đặt tên có kèm theo thời điểm sao lưu để tiện việc tìm kiếm và nhất là xử lý cho phục hồi lại khi cần.
Thí dụ:
+ Tên file dữ liệu được sao lưu có thể được định dạng bằng dòng code sau:
Format$(Now(),ddmmhhmm) & ".mdb"
Chuỗi định dạng "ddmmhhmm" có ý nghĩa là: dd (ngày) mm (tháng) hh (giờ) mm (phút). Hàm Now() cho ta giá trị thời điểm hiện tại tính đến giờ - phút - giây, khác với hàm Date() chỉ cho giá trị thời điểm hiện tại là ngày.
+ Tên table được sao lưu cũng được định dạng tương tự như vậy.
Dầu gội Pantene có bạc hà không? là một câu hỏi thường bắt gặp khi người tiêu áp dụng để ý đến việc chăm nom tóc của nhà Pantene. Hãy cùng NewwayMart tìm hiểu về SP này và xem liệu nó có thích hợp...
Khám phá Dầu gội Pantene có bạc hà không?