trungminh > 03-10-16, 10:05 AM
ongke0711 > 03-10-16, 03:40 PM
trungminh > 03-10-16, 03:48 PM
(03-10-16, 03:40 PM)ongke0711 Đã viết: CSDL này của bạn là đã có sẳn cần xử lý hay dự định thiết kế như vậy? Nếu là dự định thì nên chọn giải pháp khác (Linked table) cho khỏi mất công nối ghép.
maidinhdan > 03-10-16, 04:10 PM
(03-10-16, 10:05 AM)trungminh Đã viết: Mình muốn append dữ liệu giữa 2 mdb có cùng cấu trúc thì viết code như thế nào. (nhiều người vào nhiều máy bây giờ muốn nối số liệu thành 1 table) muốn nối từ file đích vào file nguồn nhé
Xin mọi người giúp với
(ví dụ a.mdb có table b1, b.mdb cũng có table b1 mình muốn appen a.mdb table b1 vào b1 của b.mdb)
Option Compare Database
'Khai bao
Public Ws As DAO.Workspace
Public db As DAO.Database
Public rst As DAO.Recordset
Public rstt As DAO.Recordset
'---------------------------------------------------------------------------------------
' Procedure/ Ten thu tuc : Ketnoi1
' Author/ Nguoi khoi tao : maidinhdan@gmail.com
' Tao tren may tinh User : DANAspireV5
' Date/ Ngay tao : 9/29/2016-22:54
' Purpose/Mo ta : Ket noi bang DAO, Ket noi theo kieu sao chep tu file nguon sang file dich - Sao chep toan bo
' Da Test voi Data 500Mb ( ung voi 1 trieu record) toc do truy xuat khoang 3phut, nen thuc te ap dung Ketnoi2 se hay hon tốc độ kết nối khoảng 5s với nhiều User truy cầp cùng 1 lúc
'---------------------------------------------------------------------------------------
Public Function Ketnoi1(TenTable As String, Duongdanfile As String)
Set Ws = DBEngine.Workspaces(0)
'Mo ket noi Data co Pass
Set db = Ws.OpenDatabase(Duongdanfile)
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
Set db = Nothing
End Function
Set db = Ws.OpenDatabase(Duongdanfile, False, False, "MS Access;PWD=123")
Ketnoi1 "TênTable","D:\a.mdb"
trungminh > 03-10-16, 07:23 PM
(03-10-16, 04:10 PM)maidinhdan Đã viết:(03-10-16, 10:05 AM)trungminh Đã viết: Mình muốn append dữ liệu giữa 2 mdb có cùng cấu trúc thì viết code như thế nào. (nhiều người vào nhiều máy bây giờ muốn nối số liệu thành 1 table) muốn nối từ file đích vào file nguồn nhé
Xin mọi người giúp với
(ví dụ a.mdb có table b1, b.mdb cũng có table b1 mình muốn appen a.mdb table b1 vào b1 của b.mdb)
Bạn rất may mắn là tôi đang viết ứng dụng liên quan đến chủ đề này,
Tôi xin tặng bạn 1 hàm để bạn dùng.
Bước 1. Tạo Modules mới và chép hàm này vào, lưu với tên gì tùy bạn.
Mã PHP:Option Compare Database
'Khai bao
Public Ws As DAO.Workspace
Public db As DAO.Database
Public rst As DAO.Recordset
Public rstt As DAO.Recordset
'---------------------------------------------------------------------------------------
' Procedure/ Ten thu tuc : Ketnoi1
' Author/ Nguoi khoi tao : maidinhdan@gmail.com
' Tao tren may tinh User : DANAspireV5
' Date/ Ngay tao : 9/29/2016-22:54
' Purpose/Mo ta : Ket noi bang DAO, Ket noi theo kieu sao chep tu file nguon sang file dich - Sao chep toan bo
' Da Test voi Data 500Mb ( ung voi 1 trieu record) toc do truy xuat khoang 3phut, nen thuc te ap dung Ketnoi2 se hay hon tốc độ kết nối khoảng 5s với nhiều User truy cầp cùng 1 lúc
'---------------------------------------------------------------------------------------
Public Function Ketnoi1(TenTable As String, Duongdanfile As String)
Set Ws = DBEngine.Workspaces(0)
'Mo ket noi Data co Pass
Set db = Ws.OpenDatabase(Duongdanfile)
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
Set db = Nothing
End Function
Ghi chú: Nếu file nguồn có pass thì thay cả cái cái dòng đó bằng: ( giả sử pass là 123)
Mã PHP:Set db = Ws.OpenDatabase(Duongdanfile, False, False, "MS Access;PWD=123")
Bước 2: Gọi hạm để sử dụng.
Tạo 1 nút Click và gọi nó ra
Cú pháp gọi:Mã PHP:Ketnoi1 "TênTable","D:\a.mdb"
+ Duongdanfile là file Nguồn nhé: "D:\a.mdb"
+ Nhớ là TênTable cả hai file phải giống nhau, kể cả cấu trúc các cột cũng phải giống:
Thân mến!
maidinhdan > 03-10-16, 08:38 PM
(03-10-16, 07:23 PM)trungminh Đã viết:(03-10-16, 04:10 PM)maidinhdan Đã viết: Bước 2: Gọi hạm để sử dụng.
Tạo 1 nút Click và gọi nó ra
Cú pháp gọi:Mã PHP:Ketnoi1 "TênTable","D:\a.mdb"
+ Duongdanfile là file Nguồn nhé: "D:\a.mdb"
+ Nhớ là TênTable cả hai file phải giống nhau, kể cả cấu trúc các cột cũng phải giống:
Thân mến!
Bạn ơi đường dẫn file nguồn mình muốn nó không mặc định mà linh hoạt hơn thì làm thế nào
mình đưa file bạn sửa cho mình đường dẫn theo textbox
Link: http://www.mediafire.com/file/4y0j4drmmu...UPDATE.rar
Ketnoi1 "b1", Me.Text11
= Ketnoi1("Tên table cần import", "Tên đường dẫn file cần import vào")
trungminh > 03-10-16, 10:13 PM
(03-10-16, 08:38 PM)maidinhdan Đã viết:(03-10-16, 07:23 PM)trungminh Đã viết:(03-10-16, 04:10 PM)maidinhdan Đã viết: Bước 2: Gọi hạm để sử dụng.
Tạo 1 nút Click và gọi nó ra
Cú pháp gọi:Mã PHP:Ketnoi1 "TênTable","D:\a.mdb"
+ Duongdanfile là file Nguồn nhé: "D:\a.mdb"
+ Nhớ là TênTable cả hai file phải giống nhau, kể cả cấu trúc các cột cũng phải giống:
Thân mến!
Bạn ơi đường dẫn file nguồn mình muốn nó không mặc định mà linh hoạt hơn thì làm thế nào
mình đưa file bạn sửa cho mình đường dẫn theo textbox
Link: http://www.mediafire.com/file/4y0j4drmmu...UPDATE.rar
Bạn hỏi như vậy là bạn không rõ cách hoạt động của code này rồi, Code này chính là code linh động đó sư huynh.
Theo bài bạn thì sửa lại thành:Mã PHP:Ketnoi1 "b1", Me.Text11
Chỉ có vậy:
Nói túm lại hàm này phát biểu gồm 2 phần:
Mã PHP:= Ketnoi1("Tên table cần import", "Tên đường dẫn file cần import vào")
Hy vọng bấy nhiu bạn sẽ hiểu cách dùng nó.
jeck09nt > 04-10-16, 12:19 PM
maidinhdan > 04-10-16, 09:26 PM
(04-10-16, 12:19 PM)jeck09nt Đã viết: Gửi Maidinhdan,
Nếu theo bản Demo của bạn Trungminh thì khi click chuột bao nhiêu lần thì sẽ import mấy nhiêu dữ liệu.
Giờ mình muốn :
- Nếu bảng đích rỗng thì import tất cả dữ liệu từ bảng nguồn
- Nếu bảng đích đã có dữ liệu thì chỉ import thêm những dữ liệu nào có "ngày khám" là khác nhau hoặc import theo các lựa chọn theo các trường của bảng "B1" của file đích.
Nhờ Maidinhdan hướng dẫn giúp !
Xin cám ơn.
Set rst = db.OpenRecordset(TenTable, dbOpenDynaset)
Set rstt = CurrentDb.OpenRecordset(TenTable, dbOpenDynaset)
INSERT INTO B2 ( STT, NGAYKHAM, HOVATEN, TUOI, GIOI, NGHENGHIEP )
SELECT B1.STT, B1.NGAYKHAM, B1.HOVATEN, B1.TUOI, B1.GIOI, B1.NGHENGHIEP
FROM B1
WHERE (((B1.STT) Not In (Select STT from B2)));
DoCmd.SetWarnings False
DoCmd.OpenQuery "qrB2"
Dim sql As String
sql = "DELETE * from " & TenTable
DoCmd.RunSQL sql
DoCmd.SetWarnings True
Public Function Ketnoi1(TenTable As String, Duongdanfile As String)
Set Ws = DBEngine.Workspaces(0)
'Mo ket noi Data co Pass
Set db = Ws.OpenDatabase(Duongdanfile)
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
Set db = Nothing
DoCmd.SetWarnings False
DoCmd.OpenQuery "qrB2"
Dim sql As String
sql = "DELETE * from " & TenTable
DoCmd.RunSQL sql
DoCmd.SetWarnings True
End Function
Minh Tiên > 05-10-16, 11:11 AM