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:
- Hỏi đăng nhập quá 3 lần thì thoát.
- Làm thế nào để chặn thông báo lỗi của Query !
- Giúp mình sort tren listbox vớii
- Convert font VNI sang UNI trong ACCESS!
- nhập liệu cho access
- Giải pháp nào cho compact CSDL lớn !
- Xin hướng dẫn giúp mình cách đánh số thứ tự trong Form Access.
- Nhờ các cao thủ giúp mình đoạn code lấy dữ liệu 1 table trong form
- nhờ các bạn giúp đỡ.
- Giúp đở về listbox và textbox . help !
-
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.
Du lịch Singapore là đã không còn là điểm đến xa lạ đối với những người yêu thích xê dịch. Tuy có diện tích bé nhỏ, nguồn tài nguyên ít ỏi nhưng “đảo quốc sư tử” đã biết biến những điều không thể...
Nên đi những địa điểm nào trong tour Du lịch Singapore của Dulichviet