Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Mong moi người giúp mình tạo form
#1
Mình có hai bảng tblBanGiaoThietBi và tblDSThietBi
Trong tblBanGiaoThietBi mình có Field MATB có liên kết đến Query Danh_dau_thiet_bi
MÌnh đã tạo một Form BanGiaoThietBi trong đó có mục MATB ...Mọi người có thể giúp mình làm cách nào có thể từ Form chọn thiết bị sẽ là tên đầy đủ còn lưu lại vào tblBanGiaoThietBi là mã thiết bị không ....
Cám ơn mọi người

http://upfile.vn/u5Bm7kBtIdGg/thietbi3-accdb.html
Chữ ký của huymcsa Xin chào, mình là huymcsa, Tham gia http://thuthuataccess.com/forum từ ngày 23-09 -11.
Reply
Những người đã cảm ơn
#2
Việc chọn tên thiết bị và lưu mã thiết bị chỉ là 1 thủ thuật hiển thị trong combobox thôi bạn à (thao tác trong Properties).
- Nguyên tắc combo box chỉ lưu cột chỉ mục (field index) như mã thiết bị. 
- Khi bạn thiết kế thường Row source sẽ là Select Query có 2 cột (Mã thiết bị, tên thiết bị).
- Mặc định Bound Column của combobox sẽ là 1 (tức lấy 1 cột đầu tiên để lưu giá trị).
- Để chỉ hiển thị tên thiết bị thì cột đầu tiên [Mã thiết bị] bạn set độ rộng =0, [Tên thiết bị] bạn set độ rộng tuỳ ý đủ để hiển thị. Vd: Column widths: 0";1"
(Nhớ set Column count:2)
Về file thiết kế của bạn, bạn sử dụng Multi Value Fields (MVFs) cho cột [Mã thiết bị] ở tblBanGiaoThietBi và khi click chọn ở combobox Mã thiết bị thì bạn sẽ chọn được nhiều giá trị trong cái list xổ xuống của combobox. Cái MVFs này theo tôi thì không nên dùng vì sẽ rất phức tạp sau này khi code cho nó và khi bạn muốn truy vấn (Query) theo từng [Mã thiết bị] cũng rất khó khăn. Cái này cũng sẽ làm cho CSDL của bạn cũng không còn chuẩn hoá khi tạo các Relationship giữa các table. 
MVFs này chỉ có từ Access 2007 trở đi và nó cũng không được hỗ trợ từ các hệ thống CSLD khác như MySQL, SQL server v.v...Do vậy sau này bạn mà muốn nâng cấp lên hệ CSDL khác cũng không được nhé. 
Theo tôi hiểu ý đồ của bạn thì muốn hiển thị tất cả các thiết bị trong cùng 1 ô (cột) cho gọn. Vậy bạn nên làm ở trong phần báo cáo (Report) thôi, phần table bạn phải lưu cho chuẩn, mỗi mã thiết bị cho mượn là 1 dòng. Về gộp mã thiết bị trong report, thực ra theo tôi cũng không phải cách hay cho việc báo cáo, theo dõi, cứ liệt kê ra từng dòng là dễ kiểm tra nhất.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn huymcsa , maidinhdan
#3
(07-02-16, 02:48 AM)ongke0711 Đã viết: Việc chọn tên thiết bị và lưu mã thiết bị chỉ là 1 thủ thuật hiển thị trong combobox thôi bạn à (thao tác trong Properties).
- Nguyên tắc combo box chỉ lưu cột chỉ mục (field index) như mã thiết bị. 
- Khi bạn thiết kế thường Row source sẽ là Select Query có 2 cột (Mã thiết bị, tên thiết bị).
- Mặc định Bound Column của combobox sẽ là 1 (tức lấy 1 cột đầu tiên để lưu giá trị).
- Để chỉ hiển thị tên thiết bị thì cột đầu tiên [Mã thiết bị] bạn set độ rộng =0, [Tên thiết bị] bạn set độ rộng tuỳ ý đủ để hiển thị. Vd: Column widths: 0";1"
(Nhớ set Column count:2)
Về file thiết kế của bạn, bạn sử dụng Multi Value Fields (MVFs) cho cột [Mã thiết bị] ở tblBanGiaoThietBi và khi click chọn ở combobox Mã thiết bị thì bạn sẽ chọn được nhiều giá trị trong cái list xổ xuống của combobox. Cái MVFs này theo tôi thì không nên dùng vì sẽ rất phức tạp sau này khi code cho nó và khi bạn muốn truy vấn (Query) theo từng [Mã thiết bị] cũng rất khó khăn. Cái này cũng sẽ làm cho CSDL của bạn cũng không còn chuẩn hoá khi tạo các Relationship giữa các table. 
MVFs này chỉ có từ Access 2007 trở đi và nó cũng không được hỗ trợ từ các hệ thống CSLD khác như MySQL, SQL server v.v...Do vậy sau này bạn mà muốn nâng cấp lên hệ CSDL khác cũng không được nhé. 
Theo tôi hiểu ý đồ của bạn thì muốn hiển thị tất cả các thiết bị trong cùng 1 ô (cột) cho gọn. Vậy bạn nên làm ở trong phần báo cáo (Report) thôi, phần table bạn phải lưu cho chuẩn, mỗi mã thiết bị cho mượn là 1 dòng. Về gộp mã thiết bị trong report, thực ra theo tôi cũng không phải cách hay cho việc báo cáo, theo dõi, cứ liệt kê ra từng dòng là dễ kiểm tra nhất.

Cám ơn bạn đã góp ý cho mình...
- Phần  sử dụng Multi Value Fields (MVFs) cho cột [Mã thiết bị] ở tblBanGiaoThietBi là do yêu cầu của việc nhập thiết bị của nhân viên          ( ví dụ: trong một đợt đi công tác 5 ngày họ mượn 10 thiết bị nên họ không muốn nhập 10 lần phiếu mượn thiết bị họ muốn trên một phiếu mượn có cả 10 tên thiết bị)  nên mình buộc phải chọn cách đó chứ mình cũng không muốn làm theo cách đó đâu....nếu bạn có cách nào có thể thay thế được mong bạn hướng dẫn cho mình được ko...?
- Còn phần Việc chọn tên thiết bị và lưu mã thiết bị mình đã làm theo cách của bạn hướng dẫn nó rất ok...nhưng khi ra bản báo cáo nó toàn là mã thì khi in ra lại không hiểu vì nó báo cáo theo bảng đã lưu...có thể ra bảng báo cáo là tên không bạn...
Cám ơn bạn đã nhiệt tình giúp đỡ mình
Chữ ký của huymcsa Xin chào, mình là huymcsa, Tham gia http://thuthuataccess.com/forum từ ngày 23-09 -11.
Reply
Những người đã cảm ơn
#4
Về việc in báo cáo có tên thiết bị, nó đơn giản chỉ là chọn Select Query làm Record source cho báo cáo là được rồi. Select query có join giữa 2 table: tblBanGiaoThietBi, tblDSThietBi thông qua [MaTB], lấy thêm cột tên thiết bị. Trong báo cáo (report) thì chỉ cần sử dụng textbox có control source là [TenTB], không cần mã TB nữa.
Ví dụ:
Mã PHP:
SELECT tblBanGiaoThietBi.NgayGiaotblBanGiaoThietBi.MATBtblDSThietBi.TenTB
FROM tblDSThietBi RIGHT JOIN tblBanGiaoThietBi ON tblDSThietBi
.MATB tblBanGiaoThietBi.MATB.Value
Về việc nhập liệu 1 người mượn nhiều thiết bị thì nó cũng đơn giản, không cần phải nhập nhiều lần, nhiều phiếu đâu bạn. Ví dụ giống như bạn nhập đơn hàng bán cho 1 khách hàng, họ mua nhiều mặt hàng nhưng cũng chỉ nhập 1 lần rồi xuất ra 1 phiếu mua hàng gồm nhiều mã thôi.
Tôi chỉnh sửa cái form trong file của bạn các phần cơ bản nhất, các phần bẫy lỗi, tự động tạo mã v.v..bạn tự nghiên cứu thêm nhé.
File demo: http://www.mediafire.com/download/z9udzn...d%29.accdb
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn huymcsa , maidinhdan
#5
(07-02-16, 06:57 PM)ongke0711 Đã viết: Về việc in báo cáo có tên thiết bị, nó đơn giản chỉ là chọn Select Query làm Record source cho báo cáo là được rồi. Select query có join giữa 2 table: tblBanGiaoThietBi, tblDSThietBi thông qua [MaTB], lấy thêm cột tên thiết bị. Trong báo cáo (report) thì chỉ cần sử dụng textbox có control source là [TenTB], không cần mã TB nữa.
Ví dụ:
Mã PHP:
SELECT tblBanGiaoThietBi.NgayGiaotblBanGiaoThietBi.MATBtblDSThietBi.TenTB
FROM tblDSThietBi RIGHT JOIN tblBanGiaoThietBi ON tblDSThietBi
.MATB tblBanGiaoThietBi.MATB.Value
Về việc nhập liệu 1 người mượn nhiều thiết bị thì nó cũng đơn giản, không cần phải nhập nhiều lần, nhiều phiếu đâu bạn. Ví dụ giống như bạn nhập đơn hàng bán cho 1 khách hàng, họ mua nhiều mặt hàng nhưng cũng chỉ nhập 1 lần rồi xuất ra 1 phiếu mua hàng gồm nhiều mã thôi.
Tôi chỉnh sửa cái form trong file của bạn các phần cơ bản nhất, các phần bẫy lỗi, tự động tạo mã v.v..bạn tự nghiên cứu thêm nhé.
File demo: http://www.mediafire.com/download/z9udzn...d%29.accdb

Cám ơn bạn rất nhiều ....
mình đang tham khảo file của bạn gửi....có gì mong bạn giúp đỡ thêm...
Năm mới chúc bạn có thật nhiều hạnh phúc, sức khỏe  và thành đạt trong cuộc sống nha...
Cám ơn bạn rất nhiều
Chữ ký của huymcsa Xin chào, mình là huymcsa, Tham gia http://thuthuataccess.com/forum từ ngày 23-09 -11.
Reply
Những người đã cảm ơn
#6
(08-02-16, 04:33 PM)huymcsa Đã viết:
(07-02-16, 06:57 PM)ongke0711 Đã viết: Về việc in báo cáo có tên thiết bị, nó đơn giản chỉ là chọn Select Query làm Record source cho báo cáo là được rồi. Select query có join giữa 2 table: tblBanGiaoThietBi, tblDSThietBi thông qua [MaTB], lấy thêm cột tên thiết bị. Trong báo cáo (report) thì chỉ cần sử dụng textbox có control source là [TenTB], không cần mã TB nữa.
Ví dụ:
Mã PHP:
SELECT tblBanGiaoThietBi.NgayGiaotblBanGiaoThietBi.MATBtblDSThietBi.TenTB
FROM tblDSThietBi RIGHT JOIN tblBanGiaoThietBi ON tblDSThietBi
.MATB tblBanGiaoThietBi.MATB.Value
Về việc nhập liệu 1 người mượn nhiều thiết bị thì nó cũng đơn giản, không cần phải nhập nhiều lần, nhiều phiếu đâu bạn. Ví dụ giống như bạn nhập đơn hàng bán cho 1 khách hàng, họ mua nhiều mặt hàng nhưng cũng chỉ nhập 1 lần rồi xuất ra 1 phiếu mua hàng gồm nhiều mã thôi.
Tôi chỉnh sửa cái form trong file của bạn các phần cơ bản nhất, các phần bẫy lỗi, tự động tạo mã v.v..bạn tự nghiên cứu thêm nhé.
File demo: http://www.mediafire.com/download/z9udzn...d%29.accdb

Cám ơn bạn rất nhiều ....
mình đang tham khảo file của bạn gửi....có gì mong bạn giúp đỡ thêm...
Năm mới chúc bạn có thật nhiều hạnh phúc, sức khỏe  và thành đạt trong cuộc sống nha...
Cám ơn bạn rất nhiều

Cho mình hỏi một chút phần Relationships các liên kết mà mình bôi đỏ bạn làm sao mà có được nó vậy...mình bỏ nó đi có được không...Cám ơn
 
[Hình: 3gQniDW.png]
Chữ ký của huymcsa Xin chào, mình là huymcsa, Tham gia http://thuthuataccess.com/forum từ ngày 23-09 -11.
Reply
Những người đã cảm ơn
#7
Phần liên kết khoanh màu đỏ là các table mặc định của hệ thống, là table ẩn, khi bạn Show Hidden Objects và Show System Objects thì nó sẽ hiện ra. Bạn không cần quan tâm, có thể remove nó khỏi relationship cũng được, mặc định bạn không thể xóa nó được đâu.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn huymcsa , maidinhdan
#8
Giúp mình một chút....mình đang tạo "cho mượn" và "trả" thiết bị thông qua "ngày giao" và "ngày trả" thiết bị...
Mình làm "cho mượn" được thông qua "ngày giao" nhưng đến phần "trả" thiết bị mình làm thông qua "ngày trả" thì không được nó update tất cả.....mong bạn giúp mình....mình cám ơn

http://upfile.vn/ImLgNqZmAkBt/thietbi3-r...accdb.html
Chữ ký của huymcsa Xin chào, mình là huymcsa, Tham gia http://thuthuataccess.com/forum từ ngày 23-09 -11.
Reply
Những người đã cảm ơn
#9
Theo như ứng dụng của bạn, cái form bàn giao/ hoàn trả thiết bị là quan trọng nhất trong toàn bộ ứng dụng. Do vậy bạn cần phân tích kỹ một chút các nghiệp vụ, thao tác phát sinh cho nghiệp vụ này mới thiết kế được table, form đáp ứng đúng, đủ yêu cầu. Điều này trách sau này bị bế tắc khi thực hiện các query, report không ra vì CSDL không đáp ứng được.
Trước hết bạn cần trả lời một số câu hỏi liên quan đến cái form "Bàn giao thiết bị" như sau:
- 1 người có thể mượn 1 lúc nhiều thiết bị nhưng có trả 1 lúc toàn bộ thiết bị mượn (trong 1 phiếu bàn giao) hay có thể trả lắc nhắc từng thiết bi? Trường hợp trả lắc nhắc có thể phát sinh vì: có vài thiết bị vẫn cần dùng nên trả sau; hoặc do có người cần gấp một vài TB nên phải linh động thu hồi trước còn mấy TB còn lại trả sau cũng được v.v.. ==> trả lời câu này vì nếu trả lắc nhắc bạn sẽ phải thiết kế lại table và form nhập liệu bàn giao. 
- Form bàn giao có kết hợp làm form trả thiết bị luôn không?
- ...
Đối với cái file của bạn hiện tại, bạn muốn sau khi nhập xong sẽ chạy 2 cái query update "cho mượn" và "đã trả" cập nhật vào tblDSThietBi (trường [DaMuon]). 
Cái Select query [Thiết bị đã trả] của bạn gặp vấn đề sau: Query dựa vào điều kiện [NgayTra] Not Is Null để lọc các TB đã trả => Vậy ví dụ: thiết bị TBHT1 đã mượn lần 1 và đã trả, sau đó mượn tiếp lần 2 và chưa trả ([NgayTra]= Is Null) --> sau khi chạy query sẽ hiển thị TBHT1 trong danh sách đã trả vì có 1 dòng của lần mượn thứ nhất thỏa điều kiện bạn đưa ra là [NgayTra] = Not Is Null ==> cập nhật vào table thiết bị này đã trả là sai. Đó là lý do vì sao khi bạn chạy Update query nó cập nhật hết.
Bài toán là làm sao tìm ra các TB đã trả thực sự để cập nhật. Bạn ngâm cứu tiếp nhé... 007  
Còn về vấn đề trả thiết bị lắc nhắc bạn phải làm lại form có tùy chọn trả cho từng dòng thiết bị và table cũng sẽ thiết kế đi theo kiểu này.
Bạn mày mò tiếp nếu không ra thì hỏi tiếp nhé.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn huymcsa
#10
(08-02-16, 06:42 PM)ongke0711 Đã viết: Phần liên kết khoanh màu đỏ là các table mặc định của hệ thống, là table ẩn, khi bạn Show Hidden Objects và Show System Objects thì nó sẽ hiện ra. Bạn không cần quan tâm, có thể remove nó khỏi relationship cũng được, mặc định bạn không thể xóa nó được đâu.

(10-02-16, 06:54 PM)ongke0711 Đã viết: Theo như ứng dụng của bạn, cái form bàn giao/ hoàn trả thiết bị là quan trọng nhất trong toàn bộ ứng dụng. Do vậy bạn cần phân tích kỹ một chút các nghiệp vụ, thao tác phát sinh cho nghiệp vụ này mới thiết kế được table, form đáp ứng đúng, đủ yêu cầu. Điều này trách sau này bị bế tắc khi thực hiện các query, report không ra vì CSDL không đáp ứng được.
Trước hết bạn cần trả lời một số câu hỏi liên quan đến cái form "Bàn giao thiết bị" như sau:
- 1 người có thể mượn 1 lúc nhiều thiết bị nhưng có trả 1 lúc toàn bộ thiết bị mượn (trong 1 phiếu bàn giao) hay có thể trả lắc nhắc từng thiết bi? Trường hợp trả lắc nhắc có thể phát sinh vì: có vài thiết bị vẫn cần dùng nên trả sau; hoặc do có người cần gấp một vài TB nên phải linh động thu hồi trước còn mấy TB còn lại trả sau cũng được v.v.. ==> trả lời câu này vì nếu trả lắc nhắc bạn sẽ phải thiết kế lại table và form nhập liệu bàn giao. 
- Form bàn giao có kết hợp làm form trả thiết bị luôn không?
- ...
Đối với cái file của bạn hiện tại, bạn muốn sau khi nhập xong sẽ chạy 2 cái query update "cho mượn" và "đã trả" cập nhật vào tblDSThietBi (trường [DaMuon]). 
Cái Select query [Thiết bị đã trả] của bạn gặp vấn đề sau: Query dựa vào điều kiện [NgayTra] Not Is Null để lọc các TB đã trả => Vậy ví dụ: thiết bị TBHT1 đã mượn lần 1 và đã trả, sau đó mượn tiếp lần 2 và chưa trả ([NgayTra]= Is Null) --> sau khi chạy query sẽ hiển thị TBHT1 trong danh sách đã trả vì có 1 dòng của lần mượn thứ nhất thỏa điều kiện bạn đưa ra là [NgayTra] = Not Is Null ==> cập nhật vào table thiết bị này đã trả là sai. Đó là lý do vì sao khi bạn chạy Update query nó cập nhật hết.
Bài toán là làm sao tìm ra các TB đã trả thực sự để cập nhật. Bạn ngâm cứu tiếp nhé... 007  
Còn về vấn đề trả thiết bị lắc nhắc bạn phải làm lại form có tùy chọn trả cho từng dòng thiết bị và table cũng sẽ thiết kế đi theo kiểu này.
Bạn mày mò tiếp nếu không ra thì hỏi tiếp nhé.
- Mình muốn làm là: 1 người có thể mượn 1 lúc nhiều thiết bị nhưng.... trả 1 lúc toàn bộ thiết bị mượn (trong 1 phiếu bàn giao) và cũng có thể trả lắc nhắc từng thiết bị..
- Trường hợp trả lắc nhắc có thể phát sinh vì: có vài thiết bị vẫn cần dùng nên trả sau hoặc do có người cần gấp một vài TB nên phải linh động thu hồi trước còn mấy TB còn lại trả sau cũng được....
- Vậy Không biết là mình phải thiết kế lại bảng như thế nào...mình chưa có kinh nghiệm nên mong bạn hướng dẫn cho mình...
Mình chân thành cám ơn...
Chữ ký của huymcsa Xin chào, mình là huymcsa, Tham gia http://thuthuataccess.com/forum từ ngày 23-09 -11.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Tự động hiện Form khi loading hết thời gian ChiMai 1 32 Hôm qua, 08:59 PM
Bài mới nhất: ongke0711
Photo [Hỏi] Mở Form trên access 2007 báo lỗi jason 5 186 22-11-16, 09:23 AM
Bài mới nhất: jason
  Query hiện lên trên form? feeling 4 162 09-11-16, 09:49 PM
Bài mới nhất: toancvp
  [Help] Chỉnh giúp Form thống kê hoanghai902 2 123 28-10-16, 06:15 PM
Bài mới nhất: hoanghai902
  [Help] Dòng chữ chạy trên form báo đến ngày sinh nhật tronghieu9792 1 121 20-10-16, 09:30 AM
Bài mới nhất: lamvankhanh

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ