" />
  • Thứ Năm, 20/03/2008 09:47 (GMT+7)

    Import dữ liệu Excel vào Access

    Câu hỏi :

    Tôi có chương trình Access dùng để nhập và lưu thông tin học sinh gồm các trường (Stt, MaHS, Ban, Lop, HoTen, ....Namvaotruong...) trong đó Stt được sinh tự động, MaHS là ghép của Stt, Ban, Namvaotruong tự động sinh ra sau khi nhập xong "Namvaotruong". Tôi muốn thêm chức năng import thông tin học sinh từ một file Excel có cùng định dạng - dữ liệu import nối tiếp với dữ liệu có sẵn chứ không chồng lên - và sau khi import một loạt thì MaHS cũng tự động sinh ra. Xin hướng dẫn.

     



    Trả lời :

    Trước hết chúng tôi xin tóm tắt lại 1 số thuật ngữ liên quan đến câu hỏi của bạn. Một database là tập các bảng dữ liệu (Table), mỗi table chứa nhiều record dữ liệu, mỗi record dữ liệu gồm nhiều field dữ liệu cụ thể. Thí dụ trong câu hỏi của bạn, bạn có thể dùng Access để tạo 1 file database có tên là DulieuTruong, database này sẽ chứa nhiều bảng dữ liệu mà trường cần quản lý, trong đó có bảng Hocsinh chứa thông tin của tất cả học sinh trong trường, bảng học sinh có nhiều field như MaHS, Ban, Lop, Hoten, Namvaotruong,... Để các chức năng xử lý database hoạt động tốt, bạn nên định nghĩa khóa chính (primary key) cho từng bảng dữ liệu. Khóa chính của bảng dữ liệu là tập từ 1 tới nhiều field dữ liệu mà nội dung của chúng được dùng để nhận dạng duy nhất 1 record trong bảng. Thí dụ bảng Hocsinh của bạn nên có khóa chính kết hợp với field MaHS. Để mỗi học sinh trong trường trong nhiều năm có MaHS khác nhau, bạn có thể dùng nhiều thông tin dạng phân cấp để tạo ra giá trị của field MaHS, thí dụ bạn có thể kết hợp Namvaotruong, Ban, số thứ tự học sinh trong danh sách các học sinh ban tương ứng vào trường cùng năm tương ứng. Thường việc nhập liệu cho các học sinh có thể được thực hiện nhiều lần, trong trường hợp này, bạn có thể tạo 1 table khác (thí dụ tên là Sothutu), mỗi record của bảng này có thể có 3 field Ban, Namvaotruong, Sothutu. Công dụng của bảng Sothutu là lưu giữ chỉ số thứ tự đã được dùng lần cuối để nhận dạng học sinh trong 1 ban và vào trường cùng 1 năm. Mỗi lần cần gán số thứ tự cho 1 học sinh mới, ta sẽ đọc nội dung field Sothutu của record tương ứng của ban/namvaotruong. Sau khi dùng tới chỉ số nào thì lưu giá trị ấy lại bảng Sothutu. Với cách giải quyết trên, bạn không cần lưu đồng thời 2 field Sothutu và MaHS trong record quản lý học sinh vì như vậy là dư thừa dữ liệu, vừa tốn chỗ, vừa dễ làm mất tính nhất quán của dữ liệu.

     Một worksheet Excel là 1 table database, mỗi hàng dữ liệu trong worksheet Excel là 1 record của table database tương ứng. Do đó việc copy worksheet Excel vào table database là hoạt động copy table sang table khác. Bạn có thể xem phần trả lời câu hỏi ngay trên để biết chi tiết và cụ thể về mã nguồn copy table này sang table khác. Bạn cũng có thể liên hệ với TGVT để copy Project VB 6.0 quản lý tiện ích sao chép dữ liệu có tên là VBTableCopy.

    Chuyên mục: Lập trình