-
RE: Modify dữ liệu ở Subform
tuanta1986 > 17-09-20, 12:10 AM
E đã làm lại file: https://drive.google.com/file/d/1uyr4_Fb...sp=sharing
Ở phần F_SoLieu_KhoaNoi e đã làm thử 1 nút "tìm kiếm", với event Onclick nhúng macro FindRecord vào. Ở mục Find What của macro, làm cách nào để chọn đúng dữ liệu đang hiển thị trong field [Ngay].
Mục đích e muốn ở F_SoLieu_KhoaNoi, e thay đổi ngày xong ấn "tìm kiếm", nó sẽ tìm kiếm ra record theo ngày mà e vừa nhập vào đó để thuận tiện cho việc chỉnh sửa -
RE: Modify dữ liệu ở Subform
ongke0711 > 17-09-20, 02:24 PM
(17-09-20, 12:10 AM)tuanta1986 Đã viết: Ở phần F_SoLieu_KhoaNoi e đã làm thử 1 nút "tìm kiếm", với event Onclick nhúng macro FindRecord vào. Ở mục Find What của macro, làm cách nào để chọn đúng dữ liệu đang hiển thị trong field [Ngay].
Mục đích e muốn ở F_SoLieu_KhoaNoi, e thay đổi ngày xong ấn "tìm kiếm", nó sẽ tìm kiếm ra record theo ngày mà e vừa nhập vào đó để thuận tiện cho việc chỉnh sửa
Access là CSDL quan hệ nên giữa các Bảng (Table) có quan hệ với nhau thông qua Field (trường/cột) làm khoá chính của bảng. Thường trường khoá chính của Bảng là mã định danh để phân biệt giữa các dòng dữ liệu (record) với nhau. Trường khoá này phải nhất quán, không dấu tiếng Việt, không khoảng cách, số lượng ký tự thống nhất và ít. Đây là một số kiến thức cơ bản khi thiết kế Bảng.
Trở lại bảng "T_DSKhoaPhong" của bạn.
- Bạn dùng luôn cái tên khoa (diễn giải) để làm khoá chính (Primary Key) là hết sức sai cơ bản.
- Bạn dùng hết 255 ký tự Field Size để lưu cái tên khoa phòng -> lãng phí bộ nhớ, làm Table sẽ cồng kênh lên.
- Bạn dùng nguyên tên có dấu tiếng Việt để làm trường khoá, bạn có dám chắc bạn gõ cùng một từ "Khoa Nội" là cái từ này luôn giống nhau không? Không nhé.
+ Unicode dựng sẳn : chiếm 8 ký tự
+ Unicode tổ hợp : chiếm 9 ký tự
+ VNI : chiếm 9 ký tự
=> Khi người dùng gõ từ "Khoa Nội" để tìm kiếm thì chưa chắc Access trả về kết quả cho bạn, chưa kể người dùng có thể gõ dư khoảng trắng thì nó đã trở thành cái mã khác rồi. Đó là lý do phải dùng mã đinh dạnh.
Ví dụ:
MaKhoa | TenKhoa
-------------------------------------------
KH001 | Khoa nội 1
KH002 | Khoa nội 2
...
Table và Query cơ bản bạn chưa rành mà đi vô thiết kế Form thì còn phát sinh vấn đề dài dài vì không biết cách Table và Query hoạt động như thế nào, phản ứng như thế nào trên Form.
Nói về cái Form "F_SoLieu_KhoaNoi":
Bạn đã phân tích ra được cách thức Form hoạt động chưa?
Bạn đang dùng Single Form để hiển thị, để nhập liệu từng dòng dữ liệu trong table T-SoLieu, vậy khi bạn bấm nút [Tìm Kiếm] -> Bạn muốn cái Form nó xử lý như thế nào?
- Form đang có dữ liệu thì nó sẽ xoá trắng rồi tìm kiếm hay sao?
- Tìm theo [ngày] trên Form: vậy có rất nhiều dòng dữ liệu cùng ngày thì Form sẽ lấy dòng nào để hiển thị cho bạn?
- Cũng trên Form này, nếu người dùng chọn Ngày để tìm kiếm -> dữ liệu của Record hiện thời sẽ bị thay đổi, bạn tính tới chưa?
- Đang nhập liệu dở dang, chưa bấm Lưu thì người dùng bấm nút Tìm kiếm -> sẽ xử lý ra sao?
...
Tóm lại: ngoài chuyện bạn phải vừa làm vừa tìm học kiến thức cơ bản của đối tượng mà bạn đang thiết kế (Table/Query) và phải bỏ thời gian phân tích thật kỹ cách tổ chức CSDL, phân tích hành vi người dùng thao tác trên Form, qui trình xử lý để có cái thiết kế hợp lý. -
RE: Modify dữ liệu ở Subform
tuanta1986 > 17-09-20, 02:52 PM
(17-09-20, 02:24 PM)ongke0711 Đã viết:
(17-09-20, 12:10 AM)tuanta1986 Đã viết: Ở phần F_SoLieu_KhoaNoi e đã làm thử 1 nút "tìm kiếm", với event Onclick nhúng macro FindRecord vào. Ở mục Find What của macro, làm cách nào để chọn đúng dữ liệu đang hiển thị trong field [Ngay].
Mục đích e muốn ở F_SoLieu_KhoaNoi, e thay đổi ngày xong ấn "tìm kiếm", nó sẽ tìm kiếm ra record theo ngày mà e vừa nhập vào đó để thuận tiện cho việc chỉnh sửa
Access là CSDL quan hệ nên giữa các Bảng (Table) có quan hệ với nhau thông qua Field (trường/cột) làm khoá chính của bảng. Thường trường khoá chính của Bảng là mã định danh để phân biệt giữa các dòng dữ liệu (record) với nhau. Trường khoá này phải nhất quán, không dấu tiếng Việt, không khoảng cách, số lượng ký tự thống nhất và ít. Đây là một số kiến thức cơ bản khi thiết kế Bảng.
Trở lại bảng "T_DSKhoaPhong" của bạn.
- Bạn dùng luôn cái tên khoa (diễn giải) để làm khoá chính (Primary Key) là hết sức sai cơ bản.
- Bạn dùng hết 255 ký tự Field Size để lưu cái tên khoa phòng -> lãng phí bộ nhớ, làm Table sẽ cồng kênh lên.
- Bạn dùng nguyên tên có dấu tiếng Việt để làm trường khoá, bạn có dám chắc bạn gõ cùng một từ "Khoa Nội" là cái từ này luôn giống nhau không? Không nhé.
+ Unicode dựng sẳn : chiếm 8 ký tự
+ Unicode tổ hợp : chiếm 9 ký tự
+ VNI : chiếm 9 ký tự
=> Khi người dùng gõ từ "Khoa Nội" để tìm kiếm thì chưa chắc Access trả về kết quả cho bạn, chưa kể người dùng có thể gõ dư khoảng trắng thì nó đã trở thành cái mã khác rồi. Đó là lý do phải dùng mã đinh dạnh.
Ví dụ:
MaKhoa | TenKhoa
-------------------------------------------
KH001 | Khoa nội 1
KH002 | Khoa nội 2
...
Table và Query cơ bản bạn chưa rành mà đi vô thiết kế Form thì còn phát sinh vấn đề dài dài vì không biết cách Table và Query hoạt động như thế nào, phản ứng như thế nào trên Form.
Nói về cái Form "F_SoLieu_KhoaNoi":
Bạn đã phân tích ra được cách thức Form hoạt động chưa?
Bạn đang dùng Single Form để hiển thị, để nhập liệu từng dòng dữ liệu trong table T-SoLieu, vậy khi bạn bấm nút [Tìm Kiếm] -> Bạn muốn cái Form nó xử lý như thế nào?
- Form đang có dữ liệu thì nó sẽ xoá trắng rồi tìm kiếm hay sao?
- Tìm theo [ngày] trên Form: vậy có rất nhiều dòng dữ liệu cùng ngày thì Form sẽ lấy dòng nào để hiển thị cho bạn?
- Cũng trên Form này, nếu người dùng chọn Ngày để tìm kiếm -> dữ liệu của Record hiện thời sẽ bị thay đổi, bạn tính tới chưa?
- Đang nhập liệu dở dang, chưa bấm Lưu thì người dùng bấm nút Tìm kiếm -> sẽ xử lý ra sao?
...
Tóm lại: ngoài chuyện bạn phải vừa làm vừa tìm học kiến thức cơ bản của đối tượng mà bạn đang thiết kế (Table/Query) và phải bỏ thời gian phân tích thật kỹ cách tổ chức CSDL, phân tích hành vi người dùng thao tác trên Form, qui trình xử lý để có cái thiết kế hợp lý.
Cảm ơn bạn, đã hướng dẫn. Thật ra mình làm CNTT nhưng k chuyên về csdl. Mục đích muốn tạo thật nhanh một csdt để nhập số liệu giao ban, làm mắc ở đâu thì mình sẽ google cho tiết kiệm thời gian, vì mình biết để học access sẽ cần nhiều thời gian.
Như theo yêu cầu của mình, mình search được theo mục đích mình muốn rồi. Mình tạo 1 combobox, tùy chọn là Find a record on my form based on the value..., xong gán nó vào cái field [Ngay], mình chỉ cần tìm theo ngày thôi, khoa là k đổi vì mình tạo sẵn cho mỗi Khoa một form riêng rồi. Chức năng này nó có sẵn, nhưng vì kiến thức hạn hẹp nên mình tìm mãi mới ra. -
RE: Modify dữ liệu ở Subform
tuanta1986 > 05-11-20, 11:21 AM
Sau khoảng thời gian cũng gần 2 tháng, từ một người k dùng access bao h và về mặt cơ sở dữ liệu cũng chỉ là biết mơ hồ, nhờ ae diễn đàn giúp đỡ, e cũng đã làm xong phần mềm như ý mình mong muốn. E gửi file lên đây để chia sẻ, như một lời cảm ơn, cũng là báo cáo kết quả đạt được nhờ sự giúp đỡ của ae diễn đàn.
Chúc diễn đàn hoạt động bền vững và ngày càng phát triển, e xin trân trọng cảm ơn!
https://drive.google.com/file/d/1gfNi1ZR...sp=sharing
https://www.youtube.com/watch?v=eJ22p8C3...6Ad4AaABAg