-
Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
Xuân Thanh > 03-04-13, 04:19 PM
Hôm nay hướng dẫn câc bạn kỹ thuật dung DAO để nhập liệu từ một Database này vào một Database khác. Các bạn download file đính kèm về nghiên cứu. Chú ý cách chọn các DDL đi kèm theo(Trong cửa sổ VBA, vào menu Tools/References...). Tặng kèm cách xuất dũ liệu từ Database ra file Excel
File chưa dũ liệu là file Data.mdb, file dùng để cập nhật là file NhapLieu.mdb, file Danh sach.xls là file Excel để xuất dữ liệu
Chủ yếu nghiên cứu cái này
1/ Cập nhật dữ liệu từ Database Nhaplieu vào Database Data
Mã PHP:Private Sub cmdCapNhat_Click()
If Me.txtMaHang = "" Or Me.txtTenHang = "" Or Me.txtDVT = "" Then
MsgBox "Phai ghi du du lieu", , "Thong Bao"
Exit Sub
End If
Dim Data As Database
Dim rs As Recordset
Set Data = DBEngine.Workspaces(0).OpenDatabase(CurrentProject.Path & "\Data.mdb")
Set rs = Data.OpenRecordset("tblHangHoa", dbOpenTable)
rs.AddNew
rs.Fields(0) = Me.txtMaHang
rs.Fields(1) = Me.txtTenHang
rs.Fields(2) = Me.txtDVT
rs.Update
rs.Close
Set Data = Nothing
MsgBox "Da cap nhat xong", , "Thong Bao"
Me.txtMaHang = "": Me.txtTenHang = ""
Me.txtDVT = "": Me.txtMaHang.SetFocus
End Sub
2/ Xuất ra Excel
Mã PHP:Private Sub XuatEx_Click()
Dim Ex As Excel.Application
Dim Wb As Workbook
Dim Ws As Worksheet
Dim rs As Recordset
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(CurrentProject.Path & "\Danh sach.xls")
Set Ws = Wb.Worksheets("Danh Sach")
Set rs = CurrentDb.OpenRecordset("tblHangHoa", dbOpenTable)
Dim j As Integer
j = Ws.Range("A65000").End(xlUp).Row
Ws.Range("A" & j + 1).CopyFromRecordset rs
'hoac lam nhu sau
'Dim i As Integer, j As Integer
'If rs.RecordCount > 0 Then
'rs.MoveFirst
'Do Until rs.EOF
'j = Ws.Range("A65000").End(xlUp).Row
'Ws.Range("A" & j + 1) = rs.Fields(0)
'Ws.Range("B" & j + 1) = rs.Fields(1)
'Ws.Range("C" & j + 1) = rs.Fields(2)
'rs.MoveNext
'Loop
'End If
rs.Close: Ex.Visible = True
Set Ex = Nothing
End Sub
Tư ví dụ này, các bạn có thể chế biến ra nhiều cách khác nhau tùy theo nhu cầu sủ dụng
Chúc các bạn vui
Thân mến -
RE: Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
changkhoonline77 > 04-04-13, 10:59 PM
Mình có form tìm kiếm, dữ liệu tìm được hiện trên listbox. Theo code của bạn Xuân Thanh thì xuất ra excel toàn bộ record trong table. Mình chỉ muốn xuất ra excel những record trên list box được không bạn? -
RE: Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
Xuân Thanh > 05-04-13, 10:04 AM
(04-04-13, 10:59 PM)changkhoonline77 Đã viết: Mình có form tìm kiếm, dữ liệu tìm được hiện trên listbox. Theo code của bạn Xuân Thanh thì xuất ra excel toàn bộ record trong table. Mình chỉ muốn xuất ra excel những record trên list box được không bạn?
Dữ liệu hiển thị trên listbox có nguồn là một query thế nên hoàn toàn có thể xuât đươc. Thay câu
Set rs = CurrentDb.OpenRecordset("tblHangHoa", dbOpenTable) bằng câu
Set rs = CurrentDb.OpenRecordset("Select * from tblHangHoa Where MaHang = " & Me.MaHang)
Bạn chế biến cho phù hợp
Thân mến -
RE: Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
changkhoonline77 > 16-04-13, 05:51 PM
Không được bạn ơi
Vì form tìm kiếm của mình nhiều điều kiện nên không lấy câu lệnh "MaHang = " & Me.MaHang" được
Nút chuyển nằm trong Form "Search". Đây là file Access (accdb) của mình, bạn xem giúp mình nha
http://www.mediafire.com/?dwzb321mli73628 -
RE: Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
Xuân Thanh > 17-04-13, 11:41 AM
(16-04-13, 05:51 PM)changkhoonline77 Đã viết: Không được bạn ơi
Vì form tìm kiếm của mình nhiều điều kiện nên không lấy câu lệnh "MaHang = " & Me.MaHang" được
Nút chuyển nằm trong Form "Search". Đây là file Access (accdb) của mình, bạn xem giúp mình nha
http://www.mediafire.com/?dwzb321mli73628
Thì bạn thay nguyên cái Record Source của form Search vào câu lệnh mở rs là đưiợc thôi mà
Thân mến -
RE: Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
domfootwear > 17-04-13, 03:49 PM
(03-04-13, 04:19 PM)Xuân Thanh Đã viết: Hôm nay hướng dẫn câc bạn kỹ thuật dung DAO để nhập liệu từ một Database này vào một Database khác. Các bạn download file đính kèm về nghiên cứu. Chú ý cách chọn các DDL đi kèm theo(Trong cửa sổ VBA, vào menu Tools/References...). Tặng kèm cách xuất dũ liệu từ Database ra file Excel
Thường thì người ta dùng file excel dạng temp. để làm form dữ liệu, điều này sẽ giữ được file gốc để tránh người dùng chỉnh sửa và lưu lên chính file form.
File chưa dũ liệu là file Data.mdb, file dùng để cập nhật là file NhapLieu.mdb, file Danh sach.xls là file Excel để xuất dữ liệu
Chủ yếu nghiên cứu cái này
1/ Cập nhật dữ liệu từ Database Nhaplieu vào Database Data
Mã PHP:Private Sub cmdCapNhat_Click()
If Me.txtMaHang = "" Or Me.txtTenHang = "" Or Me.txtDVT = "" Then
MsgBox "Phai ghi du du lieu", , "Thong Bao"
Exit Sub
End If
Dim Data As Database
Dim rs As Recordset
Set Data = DBEngine.Workspaces(0).OpenDatabase(CurrentProject.Path & "\Data.mdb")
Set rs = Data.OpenRecordset("tblHangHoa", dbOpenTable)
rs.AddNew
rs.Fields(0) = Me.txtMaHang
rs.Fields(1) = Me.txtTenHang
rs.Fields(2) = Me.txtDVT
rs.Update
rs.Close
Set Data = Nothing
MsgBox "Da cap nhat xong", , "Thong Bao"
Me.txtMaHang = "": Me.txtTenHang = ""
Me.txtDVT = "": Me.txtMaHang.SetFocus
End Sub
2/ Xuất ra Excel
Mã PHP:Private Sub XuatEx_Click()
Dim Ex As Excel.Application
Dim Wb As Workbook
Dim Ws As Worksheet
Dim rs As Recordset
Set Ex = New Excel.Application
[color=#FF0000] Set Wb = Ex.Workbooks.Open(CurrentProject.Path & "\Danh sach.xls")[/color]
Set Ws = Wb.Worksheets("Danh Sach")
Set rs = CurrentDb.OpenRecordset("tblHangHoa", dbOpenTable)
Dim j As Integer
j = Ws.Range("A65000").End(xlUp).Row
Ws.Range("A" & j + 1).CopyFromRecordset rs
'hoac lam nhu sau
'Dim i As Integer, j As Integer
'If rs.RecordCount > 0 Then
'rs.MoveFirst
'Do Until rs.EOF
'j = Ws.Range("A65000").End(xlUp).Row
'Ws.Range("A" & j + 1) = rs.Fields(0)
'Ws.Range("B" & j + 1) = rs.Fields(1)
'Ws.Range("C" & j + 1) = rs.Fields(2)
'rs.MoveNext
'Loop
'End If
rs.Close: Ex.Visible = True
Set Ex = Nothing
End Sub
Tư ví dụ này, các bạn có thể chế biến ra nhiều cách khác nhau tùy theo nhu cầu sủ dụng
Chúc các bạn vui
Thân mến -
RE: Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
domfootwear > 17-04-13, 04:15 PM
(05-04-13, 10:04 AM)Xuân Thanh Đã viết:
(04-04-13, 10:59 PM)changkhoonline77 Đã viết: Mình có form tìm kiếm, dữ liệu tìm được hiện trên listbox. Theo code của bạn Xuân Thanh thì xuất ra excel toàn bộ record trong table. Mình chỉ muốn xuất ra excel những record trên list box được không bạn?
Dữ liệu hiển thị trên listbox có nguồn là một query thế nên hoàn toàn có thể xuât đươc. Thay câu
Set rs = CurrentDb.OpenRecordset("tblHangHoa", dbOpenTable) bằng câu
Set rs = CurrentDb.OpenRecordset("Select * from tblHangHoa Where MaHang = " & Me.MaHang)
Bạn chế biến cho phù hợp
Thân mến
Thường thì người ta dùng file excel dạng temp. để làm form dữ liệu, điều này sẽ giữ được file gốc để tránh người dùng chỉnh sửa và lưu lên chính file form. -
RE: Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
changkhoonline77 > 18-04-13, 01:56 PM
[/quote]
Thì bạn thay nguyên cái Record Source của form Search vào câu lệnh mở rs là đưiợc thôi mà
Thân mến
[/quote]
Record source của form mình là table. Code tìm kiếm mình làm bằng code chứ hong phải query
Bạn xem file mình vs giúp mình code với -
RE: Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
Xuân Thanh > 18-04-13, 04:26 PM
changkhoonline77 Đã viết:Record source của form mình là table. Code tìm kiếm mình làm bằng code chứ hong phải query
Bạn xem file mình vs giúp mình code với
Chuyển về Ac2003 đi, biếng làm 2007 lắm
Thân mến
(17-04-13, 04:15 PM)domfootwear Đã viết: Thường thì người ta dùng file excel dạng temp. để làm form dữ liệu, điều này sẽ giữ được file gốc để tránh người dùng chỉnh sửa và lưu lên chính file form.
Đúng là như thế. Ở đây chỉ mang tính hướng dẫn cơ bản thôi
Thân mến -
RE: Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
changkhoonline77 > 18-04-13, 06:29 PM
Mình chuyển qua 2003 rồi. Bạn xem giúp mình nha. Ở form "search" có nút command300 đó
http://www.mediafire.com/?sow4c78hoayloia