RE: Tự động lấy mã số học sinh và đánh số thứ tự theo loại lớp học
tranthanhan1962 > 04-07-15, 05:42 PM
Chào bạn Lai! Mình trước đây cũng là giáo viên, cũng đã làm công tác quản lý học sinh, cũng có thời gian làm quản lý cán bộ…Nên mình hiểu được sự trăn trở của bạn. Dùng Access làm một phần mềm lý là việc trong tầm tay. Mình cũng hiểu được sự khó khăn của những bạn mới đến với access. Chắc chắn bạn cũng là cao thủ trong excel. Điều này vừa thuận lợi lại vừa khó khăn. Thuận lợi là gì bạn có hiểu biết một cách thấu đáo về các hàm và có khả năng tuyệt vời trong việc xử lý việc lồng ghép các hàm trong access sau này. Và chắc chắc một điều bạn cũng nắm một số vấn đề trong cách xử lý macro và mã VBA. Nhưng đó cũng là một khó khăn lớn, một bức tường lửa mà bạn phải vượt qua được nó mới đến được với access hoặc các công cụ lập trình sau này.
Bản thân mình cũng vậy cũng đã nếm phải những khó khăn như vậy. Lúc đó mình đang là giáo viên của một trung tâm tin học mình dạy bằng B (hồi đó bằng B phải học một trong ba môn hoặc là pascal, hoặc là foxpro hoặc là access bây giờ lâu quá mình cũng không biết còn vậy nữa không) mình phụ trách access. Nói thật vào đầu thập niên 90, lúc còn thiếu giáo viên tin học, cái kiểu cứ đi học hay đi tập huấn xong rồi về giảng dạy thì chỉ có kinh nghiệm cứ bài bản có là bao nhiêu. Một lần đứa cháu học đại học về tìm mình thấy mình đang dạy nó đứng ngoài đợi. Sau nó phán một câu, mình cũng không nhớ rõ lắm hình như là: Cậu dạy access kiểu excel hay là cậu dạy access giống dạy exel. Mình hỏi tại sao? Thì nó nói excel là công cụ xử lý số còn access là lập trình hướng đối tượng, hai cái này khác nhau. Chỉ có vậy, mà phải qua một thời gian mình mới hiểu rõ bản chất của sự khác biệt này.
Ở excel khi có yêu cầu bạn làm báo cáo thì bạn tạo khung báo cáo ra trước rồi vận dụng các function để xử lý. Nêu có yêu cầu tuy tìm, cập nhật thì thiết kế thêm bảng phụ tìm kiếm thông qua các hàm lookup, index, match…Rồi sử dụng các tool data như Sort, Filter để xử lý dữ liệu.
Ở access không như vậy. Không phải là bạn không được dùng phương pháp thiết kế report trước rồi phân tích ngược để tạo table. Nhưng cách làm này sẽ gây cho bạn rất nhiều khó khăn rất nhiều cho việc phát triển chương trình của mình sau này. Chương trình của bạn sẽ bị bó không phát triển được, thậm chí bạn phải bỏ hết để viết lại từ đầu.
Chính vì access là lập trình hướng đối tượng nên table của access khác tất nhiều với table trên table trên exel là một bảng số liệu 2 chiều mà mình muốn báo cáo. Còn table trên access là những bảng nền cơ sở chứa các đối tượng có quan hệ mà từ đó đủ điều kiện để thực hiện các bản báo cáo trên trên report giống như excel. Chính cái này làm cho access phát triển được trong công tác quản lý dữ liệu.
Tôi có thể hình dung một ít về công việc của bạn nên có một số gợi ý phân tích như sau:
Lớp đối tượng cao nhất của bạn là trường. Bạn có thể tạo một table trường tất nhiên table nay chỉ có một record là tên trường.
Lớp đối tượng ngành là con của trường
Ba lớp đối tượng kế tiếp là con của ngành là lớp học, môn học và giáo viên (lớp giáo viên có thể là con của lớp ngành hay là lớp tự do cũng được tuỳ theo yêu cầu).
Lớp đối tượng học sinh là con của lớp học.
Lớp đối tượng điểm môn học vừa là con của học sinh vừa là con của môn học.
Lớp khen thưởng – kỷ luật là con của học sinh.
Mỗi lớp là 1 table. Tất nhiên mỗi table bạn xử lý các đối tượng field để quản lý
Ví dụ: table trường chứa các field tên trường, địa chỉ, số điện thoại…
Table lớp chứa mã lớp, năm học, giáo viên chủ nhiệm…
Table học sinh có mã học sinh, họ tên, năm sinh, lớp…
Table điểm môn học có mã học sinh, mã môn học, ngày thi, điểm thi 1, điểm thi 2…(ở đây nói thêm về vấn đề thiết kế thừa, nhiều bạn thiết kế thêm trong table này field lớp học. Nhưng có đối tượng học sinh là biết đối tượng lớp học nên thừa)
Từ nền này nếu có yêu cầu gì phát sinh là có thể phát triển các table hay các field rất dễ dàng. Ví dụ yêu cầu báo cáo gia đình của học sinh thì thiết kế thêm table quan hệ gia đình con của table học sinh có các field tên cha, tên mẹ, năm sinh cha mẹ v.v
Hoặc yêu cầu báo cáo chiều cao, cân nặng của học sinh thì cứ thêm vào table học sinh các field tương ứng.
Nếu xử lý xong việc này một cách hợp lý và hoàn chỉnh. Phần còn lại đối với bạn, một người có kinh nghiệm với excel nhiều năm là quá dễ dàng.
Trong điều kiện sử dụng phần mềm không có bản quyền, mình đề nghị bạn nên xử dụng access 2003. Lý do là nó ổn định khó bị lỗi, Các bảng access version cao hơn do các bản cr@ck không hoàn chỉnh hoặc bị lỗi, đặc biệt là do vấn đề quản lý bản quyền đám mây. Cách chống cr@ck ngày xưa của các công ty phần mềm là “phát hiện là khoá” nên khi bị khoá bạn biết ngay và cài đặt lại. Còn cách chống cr@ck bây giờ là “phát hiện là phá”, nên lúc lỗi này lúc lỗi kia vừa đau đầu mà vừa không biết đâu mà lần.
Chúc bạn xử lý như ý với công việc của mình.
Mình định post bài này lên như thấy bạn post lên thông báo này cho biết có lỗi trong quan hệ giữa 2 table. Mình đề nghị bạn tạo một csdl mới, nhớ tạo maintable trước rồi lấy field primary key của maintable dán vào subtable rồi bỏ primary key để tạo relationship nếu vẫn còn báo lỗi cài lại office. Dùng các phần mềm như Your Uninstaller, Clean Uninstaller, IOBit Uninstaller…để dọn sạch regitry. Nếu không được nữa thì phải đành cài lại win lại thôi bạn ạ. Vì có thể nó bị lỗi tập tin trong system 32 rồi bạn ạ