Hiển thị kết quả từ 1 đến 4 / 4
  1. #1
    Tham gia
    18-05-2007
    Bài viết
    6
    Like
    0
    Thanked 0 Times in 0 Posts

    Import từ Excel sang Visual Basic.

    Tôi muốn kết xuất một bản Excel có các trường:
    + ngày tháng
    + Mã Sản phẩm
    + Khách Hàng
    + Số lượng sản phẩm
    + Hạn giao hàng

    Xin một đoạn code trong Visual Basic để import dữ liệu từ Excel vào cơ sở dữ liệu của phần mềm.
    Phần mềm của tôi là phần mềm Quản Lý Sản Phẩm.
    Quote Quote

  2. #2
    Tham gia
    18-04-2005
    Bài viết
    288
    Like
    0
    Thanked 1 Time in 1 Post
    Quote Được gửi bởi FHH View Post
    Tôi muốn kết xuất một bản Excel có các trường:
    + ngày tháng
    + Mã Sản phẩm
    + Khách Hàng
    + Số lượng sản phẩm
    + Hạn giao hàng

    Xin một đoạn code trong Visual Basic để import dữ liệu từ Excel vào cơ sở dữ liệu của phần mềm.
    Phần mềm của tôi là phần mềm Quản Lý Sản Phẩm.
    Cách thực hiện:
    1. Tạo project VB mới.
    2. Tham chiếu (Reference) thư viện Excel (Microsoft Excel <ver> Object Library).
    3. Soạn code với thuật toán:
    - Tạo đối tượng Excel.Application.
    - Mở Workbook (file excel) của bạn.
    - Lấy sheet chứa dữ liệu.
    - Đặt biến I (Long) chạy từ dòng đầu tiên của sheet đến dòng dữ liệu cuối cùng của sheet. Tại mỗi bước dùng lệnh SQL Insert hoặc Recordset.AddNew để thêm dữ liệu vào bảng dữ liệu (Đưa giá trị tại Cells(I,"tên cột") vào Field tương ứng trong bảng. Lưu ý định dạng ngày tháng, nếu bạn dùng định dạng ngày trong Excel thì không sao, còn nếu dùng các định dạng ngày đặc biệt (khác với định dạng của hệ thống) thì phải xử lý lại (dùng hàm DateSerial của VB để tạo giá trị ngày từ giá trị chuỗi ngày lưu trong Excel). Lưu ý thêm về chiều dài của các trường dữ liệu, import từ Excel vào database rất hay gặp trường hợp chiều dài dữ liệu trong Excel lớn hơn kích thước định nghĩa của trường, gây ra lỗi khi cập nhật.

    - Đóng workbook, thoát Excel.

    Ví dụ (chỉ là mẫu vì bạn không đưa rõ nguồn dữ liệu):
    Giả sử bạn có file Excel: C:\data.xls với bảng dữ liệu nằm ở sheet đầu tiên, cấu trúc bảng dữ liệu: dòng đầu tiên là tiêu đề, dữ liệu nằm từ dòng thứ 2 trở xuống, kết thúc dữ liệu bằng dòng trống (cột đầu tiên rỗng). Các cột dữ liệu theo bảng tương ứng:
    + ngày tháng (cột A)
    + Mã Sản phẩm (cột B)
    + Khách Hàng (cột C)
    + Số lượng sản phẩm (cột D)
    + Hạn giao hàng (cột E)

    Giả sử tên bảng dữ liệu trong CSDL tên là: tblData
    Code:
    Private Sub Import()
       Dim mExcel As Excel.Application
       Dim mWorkBook As Excel.Workbook
       Dim mSheet As Excel.Worksheet
       Dim I As Long
       Dim mRs As ADODB.Recordset
       Set mExcel = New Excel.Application
       Set mWorkBook = mExcel.Workbooks.Open("C:\data.xls", , True)
       Set mSheet = mWorkBook.Worksheets(1)
       '--
       Set mRs = New ADODB.Recordset
       mRs.Open "tblData", mCnn, adOpenKeyset, adLockOptimistic
       I = 2
       While Len(mSheet.Cells(I, "A")) > 0
          mRs.AddNew
          mRs.Fields("NgayThang") = CDate(mSheet.Cells(I, "A"))
          mRs.Fields("MaSanPham") = mSheet.Cells(I, "B")
          mRs.Fields("KhachHang") = mSheet.Cells(I, "C")
          mRs.Fields("SoLuong") = Val(mSheet.Cells(I, "D"))
          mRs.Fields("HanGiaoHang") = Val(mSheet.Cells(I, "E"))
          mRs.Update
          '--
          I = I + 1
       Wend
       mWorkBook.Close False
       mExcel.Quit
       mRs.Close
       Set mRs = Nothing
    End Sub
    Chúc thành công,

  3. #3
    Tham gia
    18-05-2007
    Bài viết
    6
    Like
    0
    Thanked 0 Times in 0 Posts

    Hạnh phúc

    Cảm ơn Bạn rất nhiều . mình sẽ thử. mình rất mong sau này vẫn được các bạn giúp đỡ

  4. #4
    Tham gia
    25-08-2009
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts
    mình đã làm nhưng báo lỗi ở chỗ mCnn
    mình có module open_CSDL bạn có thể hướng dẫn mình cái mCnn là gì được ko

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •