DooHoaangPhuuc > 28-08-18, 11:42 PM
doandinhtam > 29-08-18, 10:26 AM
(28-08-18, 10:03 PM)ongke0711 Đã viết: Code sửa đổi theo yêu cầu của bạn.
- Tôi thêm code để vòng lặp bỏ table hệ thống.
- Xoá nội dung Table trước khi Restore để tránh báo lỗi trùng dữ liệu khi lỡ bấm nhiều lần. Giải quyết luôn yêu cầu trên của bạn.
Mã PHP:Public Function Ketnoi1(DuongDanFile As String)
Dim TenTable As String, sSQL As String
Dim tbl As TableDef
Dim i As Integer
Set Ws = DBEngine.Workspaces(0)
'Mo ket noi Data co Pass'
Set db = Ws.OpenDatabase(DuongDanFile)
For Each tbl In db.TableDefs
If Not (tbl.Name Like "MSys*") Then 'bo qua Table he thong'
TenTable = tbl.Name
Debug.Print TenTable
CurrentDb.Execute "DELETE * FROM " & tbl.Name, dbFailOnError
Set rst = db.OpenRecordset(TenTable, dbOpenDynaset)
Set rstt = CurrentDb.OpenRecordset(TenTable, dbOpenDynaset)
rst.MoveFirst
Do Until rst.EOF
' Cap nhap vao table tam
rstt.AddNew
' Duyet tu cot
For i = 0 To rst.Fields.Count - 1
rstt.Fields(i) = rst.Fields(i)
Next
rstt.Update
rst.MoveNext
Loop
rst.Close
rstt.Close
End If
Next
Set db = Nothing
End Function
ongke0711 > 29-08-18, 10:56 AM
(29-08-18, 10:26 AM)doandinhtam Đã viết: Báo lỗi Run-time 3021: No current rescord bạn ơi.
Theo mình thấy thì khi có 1 table không có dữ liệu là nó báo lỗi và không tiếp tục add data các table sau.
Giờ làm sao để khi table nào đó trống không có dữ liệu thì không báo lỗi này nữa vậy bạn? thêm code gì ạ?
Public Function Ketnoi1(DuongDanFile As String)
Dim TenTable As String, sSQL As String
Dim tbl As TableDef
Dim i As Integer
Set Ws = DBEngine.Workspaces(0)
'Mo ket noi Data co Pass'
Set db = Ws.OpenDatabase(DuongDanFile)
For Each tbl In db.TableDefs
If Not (tbl.Name Like "MSys*") Then 'bo qua Table he thong'
TenTable = tbl.Name
Debug.Print TenTable
CurrentDb.Execute "DELETE * FROM " & tbl.Name, dbFailOnError
Set rst = db.OpenRecordset(TenTable, dbOpenDynaset)
Set rstt = CurrentDb.OpenRecordset(TenTable, dbOpenDynaset)
If rst.RecordCount <> 0 Then
rst.MoveFirst
Do Until rst.EOF
' Cap nhap vao table tam'
rstt.AddNew
' Duyet tu cot'
For i = 0 To rst.Fields.Count - 1
rstt.Fields(i) = rst.Fields(i)
Next
rstt.Update
rst.MoveNext
Loop
rst.Close
rstt.Close
End If
End If
Next
Set db = Nothing
End Function
doandinhtam > 29-08-18, 11:22 AM
(29-08-18, 10:56 AM)ongke0711 Đã viết:(29-08-18, 10:26 AM)doandinhtam Đã viết: Báo lỗi Run-time 3021: No current rescord bạn ơi.
Theo mình thấy thì khi có 1 table không có dữ liệu là nó báo lỗi và không tiếp tục add data các table sau.
Giờ làm sao để khi table nào đó trống không có dữ liệu thì không báo lỗi này nữa vậy bạn? thêm code gì ạ?
Bạn dùng code này. Đã bẫy lỗi table không code reocord.
Mã PHP:Public Function Ketnoi1(DuongDanFile As String)
Dim TenTable As String, sSQL As String
Dim tbl As TableDef
Dim i As Integer
Set Ws = DBEngine.Workspaces(0)
'Mo ket noi Data co Pass'
Set db = Ws.OpenDatabase(DuongDanFile)
For Each tbl In db.TableDefs
If Not (tbl.Name Like "MSys*") Then 'bo qua Table he thong'
TenTable = tbl.Name
Debug.Print TenTable
CurrentDb.Execute "DELETE * FROM " & tbl.Name, dbFailOnError
Set rst = db.OpenRecordset(TenTable, dbOpenDynaset)
Set rstt = CurrentDb.OpenRecordset(TenTable, dbOpenDynaset)
If rst.RecordCount <> 0 Then
rst.MoveFirst
Do Until rst.EOF
' Cap nhap vao table tam'
rstt.AddNew
' Duyet tu cot'
For i = 0 To rst.Fields.Count - 1
rstt.Fields(i) = rst.Fields(i)
Next
rstt.Update
rst.MoveNext
Loop
rst.Close
rstt.Close
End If
End If
Next
Set db = Nothing
End Function
doandinhtam > 29-08-18, 12:25 PM
ongke0711 > 29-08-18, 01:16 PM
(29-08-18, 11:22 AM)doandinhtam Đã viết: cho mình hỏi thêm có code compact & repairt khi mình thoát khỏi chương trình được không ạ?
CommandBars("Menu Bar"). _
Controls("Tools"). _
Controls("Database utilities"). _
Controls("Compact and repair database...").accDoDefaultAction
doandinhtam > 29-08-18, 03:10 PM
(29-08-18, 01:16 PM)ongke0711 Đã viết:Mình dùng 2013 thì làm sao bạn?(29-08-18, 11:22 AM)doandinhtam Đã viết: cho mình hỏi thêm có code compact & repairt khi mình thoát khỏi chương trình được không ạ?
Nếu bạn dùng Access 2003 thì dùng đoạn code này cho nút lệnh Compact:
Mã PHP:CommandBars("Menu Bar"). _
Controls("Tools"). _
Controls("Database utilities"). _
Controls("Compact and repair database...").accDoDefaultAction
ongke0711 > 29-08-18, 03:12 PM