• Kỹ thuật dùng DAO để nhập liệu và xuất dũ liệu
  • 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" 1).CopyFromRecordset rs
    'hoac lam nhu sau
        '
    Dim i As IntegerAs Integer
        
    'If rs.RecordCount > 0 Then
            '
    rs.MoveFirst
            
    'Do Until rs.EOF
                '
    Ws.Range("A65000").End(xlUp).Row
                
    'Ws.Range("A" & j + 1) = rs.Fields(0)
                '
    Ws.Range("B" 1) = rs.Fields(1)
                
    'Ws.Range("C" & j + 1) = rs.Fields(2)
                '
    rs.MoveNext
            
    'Loop
        '
    End If

        
        
    rs.CloseEx.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
    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" 1).CopyFromRecordset rs
    'hoac lam nhu sau
        '
    Dim i As IntegerAs Integer
        
    'If rs.RecordCount > 0 Then
            '
    rs.MoveFirst
            
    'Do Until rs.EOF
                '
    Ws.Range("A65000").End(xlUp).Row
                
    'Ws.Range("A" & j + 1) = rs.Fields(0)
                '
    Ws.Range("B" 1) = rs.Fields(1)
                
    'Ws.Range("C" & j + 1) = rs.Fields(2)
                '
    rs.MoveNext
            
    'Loop
        '
    End If

        
        
    rs.CloseEx.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
    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

    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