(03-06-20, 05:00 PM)KheNgot Đã viết: Mục đích của em muốn đặt câu hỏi vậy để tập viết hàm ạ. Thú thật em biết thông tin chưa đầy đủ vì em chưa biết viết hàm sẽ phải sử dụng đến những trường nào (hay đối tượng nào ạ). Em cũng đang muốn tìm hiểu để viết cho gia đình 1 cái chương trình nhỏ để quản lý tài chính thôi ạ!
Viết hàm (Function) khác với viết thủ tục (Sub). Viết function thường sử dùng tham số trực tiếp, có sẳn - cứ điền vào là ra. Nên gặp trường hợp khó, quá phức tạp người ta sẽ chuyển function thành sub đưa vào 1 event xử lý. Khi đó, cách xử lý sẽ thoải máy hơn.
Trong trường hợp tính lãi của bạn. Nếu viết hàm thì rất phức tạp.
Function TienLai(ngaygoi as As Date, ngaytinhlai as Date, tiengoi as Currency, phuongthucgoi as Integer)
ngaygoi (ngày gởi), tiengoi (tiền gởi), phuongthucgoi (phương thức gởi-ví dụ, 1: 24 tháng, 2: 12 tháng, 3: không kỳ hạn) tất cả những tham số này bạn đều có thể có được. Bạn có thể đưa các tham số vào để tinh ra ngay kết quả. Nhưng, quá trình gởi không đơn giản như vậy, người ta có thể lãnh lãi (toàn bộ hay 1 phần), rút vốn (toàn bộ hay một phần) với thời điểm không xác định. Nói tóm lại không thể xử lý function trong trường hợp này mà phải dùng sub, tới đâu tính tới đó tùy theo trường hợp thậm chí chia ra từng tháng, từng giai đoạn quá trình lưu chuyển dòng tiền để tính.
Nếu muốn nghiên cứu hàm tôi sẽ chỉ bạn một cách. Đầu tiên tạo một module (nói cho có bài bản chứ cái này bạn biết rồi)
Mở giao diện code, nếu chưa thấy cửa sổ Immediate thì mở nó bằng cách Ctrl+G.
Thử tạo một hàm đơn giản bằng cách Insert/Procedure. Trong giao diện Add procedure chọn Function, trong ô Name đặt tên hàm là DienTichHinhVuong. Để tính diện tích hình vuông phải có tham số là cạnh, và diên tích của nó là cạnh x cạnh hoặc cạnh binh phương, tham số cạnh sẽ là số thực (kiểu Double)
Ta có:
Function DienTichHinhVuong(Canh As Double)
DienTichHinhVuong = Canh * Canh
End Function
Để kiểm tra lại ta vào cửa sổ Immediate gõ dấu ? + tên hàm sau đó điền tham số vào rồi enter, nếu đáp số đúng thì xem như thành công
Bây giờ thay nhân
[*] bằng bình phương [^].
Function DienTichHinhVuong(Canh As Double)
DienTichHinhVuong = Canh ^ 2
End Function
Giờ bạn có thể đưa các hàm này vào form, query, report để xử lý công việc. Xây dựng hàm có 2 vấn đề rất quan trọng. 1/Tham số phải đủ (dư thì không sao nhưng thiếu thì không được), kiểu dữ liệu của từng tham số phải chính xác. Ví dụ tính thành tiền mà dùng kiểu Integer, thì giá trị lên đến 40.000 là báo lỗi ngay vì Integer chỉ từ -32.768 tới 32.767.
Từ nhưng dự án nho nhỏ như thế này bạn mới có thể xây dựng những hàm phức tạp hơn. Chứ mới nghiên cứu mà đưa ra những hàm quá phức tạp thì có khi được anh em trợ giúp mà đọc một đống code rối bời bạn cũng không cảm giác đươc gì! Chúc bạn thành công. Nhắc bạn một chút. Đối tượng của hàm là tên hàm và tham số. Trường của table chỉ làm tham số cho hàm. Bạn hiểu ngược vấn đề