Làm cách nào để liên kết giữa các subform trong Access

Liên hệ QC

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia
18/3/08
Bài viết
8,281
Được thích
15,780
Giới tính
Nam
Nghề nghiệp
Làm ruộng.
Chào các anh chị GPE,
Mình có 1 câu hỏi là Làm cách nào để liên kết giữa các subform:
Là khi click vào từng mục mã hàng của 1 subform thì sub form còn lại và main form sẽ chạy đến mã hàng tương ứng .
Em có gửi file đính kèm các anh chị nếu có thời gian xem giúp nha.
Em xin cám ơn trước.
 

File đính kèm

  • link.rar
    174.9 KB · Đọc: 539
Yêu cầu 1: Subform còn lại thì làm được
Yêu cầu 2: Main form thì không được, vì quan hệ ngược

Như thế này thì được:
- main form là Supplier
- Subform 1 là material sheet
- Subform 2 là Input material

theo thứ tự là cái trước là master của cái sau, và Master là one, Child là many.

Làm thử theo hướng này cho bạn xem thử. mấu chốt là Linked Data Field và event onCurrent.
Sorry, già mắt kém đánh máy sai tên form hoài, nên sửa tên form cho ngắn lại. Dài muốn chết!
 

File đính kèm

  • link.rar
    193.4 KB · Đọc: 1,068
Yêu cầu 1: Subform còn lại thì làm được
Yêu cầu 2: Main form thì không được, vì quan hệ ngược

Như thế này thì được:
- main form là Supplier
- Subform 1 là material sheet
- Subform 2 là Input material

theo thứ tự là cái trước là master của cái sau, và Master là one, Child là many.

Làm thử theo hướng này cho bạn xem thử. mấu chốt là Linked Data Field và event onCurrent.
Sorry, già mắt kém đánh máy sai tên form hoài, nên sửa tên form cho ngắn lại. Dài muốn chết!
Cám ơn anh nhiều, còn một cái nữa là:
- Có cách nào khi con trỏ ờ trường nào thì nguyên 1 dòng đó tô khối không anh.
- Khi click vào 1 trường nào đó, con trỏ sẽ chạy xuống subform input material sao cho dòng được chọn ở material sheet vẫn còn được tô khối.
Cám ơn anh trước
 
Domfootwear!
Bạn đã sai lầm khi thiết kế với 2 subform. Xem file cua minh nhe. Chu y den code cua form1 để giải quyết yêu cầu mà bạn nêu thêm.
 
Lần chỉnh sửa cuối:
Cám ơn anh nhiều, còn một cái nữa là:
- Có cách nào khi con trỏ ờ trường nào thì nguyên 1 dòng đó tô khối không anh.
- Khi click vào 1 trường nào đó, con trỏ sẽ chạy xuống subform input material sao cho dòng được chọn ở material sheet vẫn còn được tô khối.
Cám ơn anh trước
Nếu bạn sử dụng subform dưới dạng Datasheet thì tôi e là không làm được điều đó (vì thực tế Access không sử dụng các điều khiển mình đã thiết kế đâu mà nó dùng đối tượng DataGrid để hiển thị dạng Datasheet mặc dù là có vẻ như là nó sử dụng).
Có nhiều cách để làm theo ý bạn nhưng như thế bạn đã mất đi tính năng sử dụng Subform rồi.
Thường thì để thoải mãn yêu cầu của bạn tôi sẽ sử dụng DataGrid chẳng hạn VsflexGrid 7.0 bản cho Unicode hoặc MsFlexgrid có sẵn trong bộ điều khiển của Windows (mặc dù MS mua điều khiển này của một công ty khác).
Bạn có thể tham khảo ví dụ ở trang này nhé
http://www.sfdp.net/libs/gen/acc/MnBar.rar
Bạn cần có cái này (Vsflexgrid)
http://www.sfdp.net/libs/gen/acc/vsflex7n.rar
Chúc bạn vui vẻ.
 
Nếu bạn sử dụng subform dưới dạng Datasheet thì tôi e là không làm được điều đó (vì thực tế Access không sử dụng các điều khiển mình đã thiết kế đâu mà nó dùng đối tượng DataGrid để hiển thị dạng Datasheet mặc dù là có vẻ như là nó sử dụng).
Có nhiều cách để làm theo ý bạn nhưng như thế bạn đã mất đi tính năng sử dụng Subform rồi.
Thường thì để thoải mãn yêu cầu của bạn tôi sẽ sử dụng DataGrid chẳng hạn VsflexGrid 7.0 bản cho Unicode hoặc MsFlexgrid có sẵn trong bộ điều khiển của Windows (mặc dù MS mua điều khiển này của một công ty khác).
Bạn có thể tham khảo ví dụ ở trang này nhé
http://www.sfdp.net/libs/gen/acc/MnBar.rar
Bạn cần có cái này (Vsflexgrid)
http://www.sfdp.net/libs/gen/acc/vsflex7n.rar
Chúc bạn vui vẻ.
Hình như link bị hỏng rồi bạn ơi .
 
Bạn refresh lại là được - vì cái này dùng Dynamic DNS!
Tiện thể, bạn có thể tải về một vài tài liệu khác trong cùng thư mục
www.sfdp.net/Libs/gen để tham khảo thêm hoặc vào mục phần mềm trong
http://www.sfdp.net/my_softwares/index.html
để tham khảo một số ứng dụng tạm hoàn chỉnh trong đó tôi có sử dụng một vài cách tiếp cận khác nhau về form, sub-form và activeX trong Access cũng như việc nhúng công thức người dùng vào tính toán trong lưới của Access (trong phần mềm VDP Manager)
Mật khẩu để sử dụng phần mềm này là th hoặc mh hoặc bt .... ứng với chữ cái đầu của tên kho phần mềm!
 
Lần chỉnh sửa cuối:
Gởi BIDIT:
Bạn dùng Listbox thì OK, nhưng không thể nói Bạn DomFootWear dùng Subform là sai lầm. Cá nhân tôi cũng dùng sub form, thậm chí 4 subform với những mối quan hệ master và Child.

Trong đó có 3 cái datasheet view, và 1 cái form view.

Trong 1 trường hợp khác, tôi dùng 3 subform và cái cuối cùng là pivot table View.

Chỉ khác là tôi không có nhu cầu tô màu khối tô màu chọn gì cả.

attachment.php


attachment.php
 

File đính kèm

  • 4SubForm.gif
    4SubForm.gif
    27.8 KB · Đọc: 527
  • SubFormPivot.gif
    SubFormPivot.gif
    24 KB · Đọc: 474
Cũng định chia sẻ ý kiến với bác Ptm nhưng bác đã trả lời hộ rồi. Xin mạo muội thêm chia sẻ với dân thiết kế Access khi sư dụng Listbox.
Nên dùng Listbox, combobox của Access để hiển thị danh sách đơn (có thể gồm cột key ẩn và cột dữ liệu tương tác) và có số lượng item trong danh sách ít thôi vì 2 thằng này, đặc biệt là Listbox - khi hiển thị dữ liệu dạng lưới nó ngốn tài nguyên kinh khủng và gây phản cảm vì cảm giác giật giật, chạy chậm.
Nếu muốn làm lưới thì dùng datasheet view hoặc lưới dữ liệu ngoài là ổn nhất.
Hình kèm theo đây là dạng dùng lưới kết hợp với Treeview trong Access
 

File đính kèm

  • Screenshot.jpg
    Screenshot.jpg
    159.6 KB · Đọc: 200
Lần chỉnh sửa cuối:
Gởi BIDIT:
Bạn dùng Listbox thì OK, nhưng không thể nói Bạn DomFootWear dùng Subform là sai lầm. Cá nhân tôi cũng dùng sub form, thậm chí 4 subform với những mối quan hệ master và Child.

Trong đó có 3 cái datasheet view, và 1 cái form view.

Trong 1 trường hợp khác, tôi dùng 3 subform và cái cuối cùng là pivot table View.

Chỉ khác là tôi không có nhu cầu tô màu khối tô màu chọn gì cả.
Gửi anh ptm0412 !!!
Em thấy cái subform chi tiết nhập xuất bằng Pivot của anh có dòng tổng cộng bên dưới, nếu dạng text thì đếm, nếu dạng số thì cộng. Anh có thể chỉ cho em biết là làm thế nào mình làm được như vậy không anh ?
Em nghĩ trong listbox không có tính năng này phải không anh.
Đây cũng là vấn đề em tìm kiếm bấy lâu. Nay gặp dược cao thủ mừng quá.

Em cám ơn nhiều.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Đó là dạng Pivot Table View của form, cách dùng giống như Pivot Table của Excel.
Dòng tổng có thể chọn Sum, Min, Max, Average, Count, ...
Tô màu định dạng tuỳ thích trong Property
 
Wooa! Đúng là vào đây mới gặp được cao thủ.Hay Quá.
ftm cho minh hoi: Lien ket 4subform thi duoc, the co lien ket nguoc subform voi Mainform nhu yeu cau footwear dua ra khong?
 
the co lien ket nguoc subform voi Mainform nhu yeu cau footwear dua ra khong?
File bài 2 của tôi là liên kết main form và sub form. Main form là form View, sub form là Datasheet view. Còn yêu cầu của DomFootWear, tôi nghĩ là đạt rồi, vì bạn ấy không yêu cầu thêm. Dù cho tôi sửa dữ liệu main form thành Supplier.

Nếu xem kỹ, file bài 1 bạn ấy muốn liên kết 2 cái Supplier của main và sub, nhưng đó không phải là trường khoá của cả 2, chưa nói tới cả 2 cùng 1 nguồn dữ liệu.
Hoàn toàn không có cách nào làm được. Bạn thử xem? (với linked field là Supplier?)
 
Ơ - đang giả nhời thì bác PTM lại nói mất roài! huhu!
Thôi thì làm rõ thêm một tẹo, nếu mà có ai phản đối - thì iem xóa bài giả nhời cho đỡ mang tiếng - hihi - tạm thời cho nó online một lúc vậy đã!
Cái tên đã trả lời rồi mà:
Sub-form = form con, phụ
Main form = form chính.
Điều này trả lời câu hỏi giúp bạn rồi, anh PMT cũng đã trả lời về vấn đề này rồi!
Một điều quan trọng khi làm lập trình là chúng ta làm rõ được nhu cầu bài toán và nghiệp vụ phát sinh.
Nếu các cách thiết kế hiện thời của form/sub-form không đáp ứng được yêu cầu nghiệp vụ thì ta cần thiết kế sáng tạo bằng dạng khác. Trong trường hợp bạn cần có liên kết ngược thì điều quan trọng là phải làm rõ được mối quan hệ ngược đó là diễn ra giữa những bộ dữ liệu nào, có đồng cấp không? Sau đó sẽ thiết kế ra bộ form unbound thay vì là dùng bộ form liên kết, có như thế thì ta mới tùy biến các kiểu xuất hiện dữ liệu được!
Xin có thiển ý như vậy!
 
Hiện giờ mình chỉ còn 1 thắc mắc là làm sao vẫn đánh dấu 1 dòng được chọn khi con trỏ đã chạy sang subform nhập liệu??? +-+-+-+
 
Hiện giờ mình chỉ còn 1 thắc mắc là làm sao vẫn đánh -dấu 1 dòng được chọn khi con trỏ đã chạy sang subform nhập liệu??? +-+-+-+
Bạn có thấy cái Nút Record Selector được hiển thị không?
Đó chính là đánh dấu bản ghi đang được chọn. Mình đã góy ý là - khi đang ở chế độ Datasheet - không có cách nào bôi dòng được (Tất nhiên, người ta cũng có cách để giả lập một chút, bạn có thấy khi nhấn nút Record selector thì cả dòng sẽ bôi đen không, vậy hãy đưa dòng code này vào sự kiện onCurrent nhé Runcommand acCmdSelectRecord - cũng củ chuối nhưng đáp ứng yêu cầu của bạn)
, ngoại trừ bạn để form default view về chế độ Continuous Forms.
Sau đó bạn chỉ cần bẫy sự kiện OnCurrent và bôi màu các điều khiển là xong. Tuy nhiên, có khó khăn và bạn cần phải trả về trạng thái mặc định cho các điều khiển khi bạn chuyển sang record mới không thì cả form sẽ bị bôi đen hết! Có một vài cách để làm điều này và bạn có thể google được hoặc tìm trong link này nhá
http://www.rogersaccesslibrary.com/...?TID=375&SID=9d896cf8cz52d652e3a433d7d4ffbd9f
hoặc
http://www.lebans.com/DownloadFiles/A2KConditionalFormatting.zip
hoặc trực tiếp ở đây
http://www.rogersaccesslibrary.com/forum/uploads/5/ConditionalFormatting2k.zip
CHúc bạn thành công!
 

File đính kèm

  • highlight.rar
    22.1 KB · Đọc: 180
Lần chỉnh sửa cuối:
Dòng tổng có thể chọn Sum, Min, Max, Average, Count, ...
Anh cho em hỏi thêm là khi mình thực hiện phép tính ở Pivot Table, làm sao bỏ đi cái label Sum of .... Giống như form của anh nó chỉ để lại giá trị cuối dòng thôi
Cám ơn anh
 
Ui trời, anh cũng chả biết làm sao để bỏ nó đi, thế là đành lấy cái bên trái đè cái bên phải, cuối cùng cột nào cũng phải có tính toán.
Kết quả là những cột vô duyên vô cớ cũng phải count. Xấu hổ quá!
 
Web KT
Back
Top Bottom