Có cách nào tạo sub-form trong VBA-Excel giống như Access hay không? (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

levanduyet

Hãy để gió cuốn đi.
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,798
Được thích
4,706
Giới tính
Nam
Chào các bạn,
Trong Access, việc tạo ra sub-form rất nhanh. Vậy đối với VBA-Excel, chúng ta có cách nào tạo ra tương tự không vậy?

Lê Văn Duyệt
 
Nhúng một subform vào form trong excel

Không biết có phải ý của anh Duyet nhu thế này không? anh xem thủ file đính kèm.
 

File đính kèm

Upvote 0
Không biết file có bị sao không mà mỗi lần double click thì nó cứ đòi hỏi như hình sau:
Install_Req.gif


Vấn đề là tôi đang viết một chương trình gần giống như:
http://as.wiley.com/WileyCDA/WileyTitle/productCd-0764539868,descCd-DOWNLOAD.html

Nhưng trong Excel khó tạo các sub-form kiểu đó quá! Khách hàng không chịu!

Lê Văn Duyệt
 
Upvote 0
Trong cài đặt Office professional em cài hết và chọn là Run all from my computer. có một số activex cho phép chèn vào form excel một subform.
tên của activex control đó là <video soft flexarray control>.
Hình như trong toolbox, khi click chuột phải, chọn additional control. Anh xem thử có cái đó không. Thanks.
 
Upvote 0
Trong cài đặt Office professional em cài hết và chọn là Run all from my computer. có một số activex cho phép chèn vào form excel một subform.
tên của activex control đó là <video soft flexarray control>.
Hình như trong toolbox, khi click chuột phải, chọn additional control. Anh xem thử có cái đó không. Thanks.
Chắc chắn là thiếu file OCX rồi nên nó mới đòi đĩa CD.. Giờ cho dù có click phải click trái gì thì cuối cùng cũng phải cho đĩa vào, nếu ko thì.. hi.. hi.. đừng hòng...
Có 1 cách nữa: Nếu biết chính xác file OCX ấy là gì thì có thể sang máy khác copy về, còn ko thì lên mạng tải...
Rút kinh nghiệm: Khi cài Office cũng ko cần cài Full, nhưng nên copy Source vào ổ cứng, mai này nó có đòi thì chỉ đường dẩn đến source là xong!
(File này trên máy tôi chạy bình thường)
ANH TUẤN
 
Upvote 0
Tên của activex control đó là <video soft flexarray control>.
Hình như trong toolbox, khi click chuột phải, chọn additional control. Anh xem thử có cái đó không. Thanks.
Cái này hình như phải mua có phải không ca_dafi?

Lê Văn Duyệt
 
Upvote 0
Em nghĩ là không có mua đâu anh, cái này có sẵn khi cài office mà. Em nghĩ nếu mua là mua đĩa office thôi Hihihi....
 
Upvote 0
Cái Ocx này là phải mua đấy em ơi.
Để viết một sub-form thật mất thời gian.

Lê Văn Duyệt
 
Upvote 0
Cadafi cho hỏi:
-Làm sao từ control toolbox gắn vào form?
-làm sao gán Data Source cho nó?
-Địa chỉ mỗi cell trong nó?
-Các Property nào cho biết giá trị cell (địa chỉ)?
Thanks.
 
Upvote 0

File đính kèm

Upvote 0
Sao tôi vẫn bị yêu cầu tìm file PRO11.MSI?

LVD
PS: À tôi làm được rồi, chỉ việc /u rồi sau đó reg lại thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
Sao tôi vẫn bị yêu cầu tìm file PRO11.MSI?

LVD
PS: À tôi làm được rồi, chỉ việc /u rồi sau đó reg lại thôi.

Anh vào VBE\Tools\References... kiểm tra nhũng cái nào thừa thì bỏ đi.

Control "VSFLEX3" không hỗ trợ Unicode.

Subform phải được thực hiện theo nguyên tắc Master-Details (như trong Access). Ví dụ bạn ca_dafi đưa ra không phải như vậy.
 
Upvote 0
Cadafi cho hỏi:
-Làm sao từ control toolbox gắn vào form?
Từ control toolbox bạn click chuột phải vào vùng trống trên thanh toolbox chọn additional controls chọn available control (bằng cách đánh dấu check) sau đó chọn OK. Bạn sẽ thấy biểu tượng mới của control đó trên thanh toolbox.


-làm sao gán Data Source cho nó?
-Địa chỉ mỗi cell trong nó?
-Các Property nào cho biết giá trị cell (địa chỉ)?
Thanks.
Mình gửi kèm file bạn đọc code mình viết thử xem, tuy nhiên cũng còn hạn hẹp lắm. Mong các tiền bối chỉ bảo thêm.
 

File đính kèm

Upvote 0
Anh Duyệt hỏi chuyện này thật à?

'// e.g:
'// Show the invoice detail form (master-detail format) in edit mode with transation id = 10
With frmInvoice
.ID = 10
.Mode = fEditting
.v.v..
.Show vbModal
End With

Trong Form_Load
...
'// Get transation data (with ID = 10 as assigned above) in to detail form. Normally, detail object has 3 entry modes: Form in Adding, Form in Editting, and Form in Viewing (or Reading). GetData() is used in last 2 entry modes.
If Not GetData() Then Goto PROC_DONE
....

Trong GetData() thì call 2 cái sau:

...
'// Load master data (ID = 10)
If Not GetMasterData Then GOTO PROC_DONE
'// Load detail data into any Grid (ID = 10). Vấn đề grid thì anh phải chọn 1 cách tử tế, ko chọn đại kiểu ai đưa cái gì thì dùng cái đó được đâu.
If Not GetDetailData Then GOTO PROC_DONE
...

Anh chỉ cần hiểu ý tưởng thế thôi, còn anh ko cần care đến chuyện SubForm là cái gì cả.

Nhưng mà hình như anh Duyệt ko quen làm unbound data mà chuyên làm kiểu bound data nhỉ. h2h thấy đa số các PM trong nước cố tình tận dụng kiểu bound trực tiếp để khỏi phải viết code. Viết như vậy là ko tốt tý nào.
 
Lần chỉnh sửa cuối:
Upvote 0
Subform phải được thực hiện theo nguyên tắc Master-Details (như trong Access). Ví dụ bạn ca_dafi đưa ra không phải như vậy.

Theo em nghĩ cái nào Master hay cái nào Detail là do mình. Nhiều khi không nhất thiết phải cứng nhắc tuân thủ như vậy.

Em còn mới trong những vụ này, tuy nhiên em nghĩ khái niệm subform đơn giản là form con nằm trong Main form. Còn quan hệ Master-Detail hay không thì còn tùy.
(ví dụ em tạo subform trong access để liệt kê danh mục tài khoản trong một main form rỗng, thỉ ở đây không nhất thiết phải bắt buộc quan hệ Master-Detail.
Thanks.
 
Upvote 0
- Thông thường, khái niệm SubForm được hiểu là dùng để hiển thị thông tin của 1 đối tượng nào đó (ví dụ: 1 hóa đơn có ID = 1 thì SubForm thường được dùng để hiển thị thông tin của các dòng hàng trên chứng từ hóa đơn đó.)

- Còn 1 form con nằm trong 1 form to thì ít khi được dùng, người ta hay dùng frame, tab, v.v... để thay thế trong trường hợp đó.

- Rất ít khi có khái niệm 1 window (có đầy đủ tính chất của 1 window chứ ko phải 1 cái textbox, combo, button - vì bản chất những cái đó cũng là 1 window) nằm trong 1 window trừ trường hợp MDI form dùng làm Main form, trong đó có các child forms (MDI Childs).

- Thông thường, dân lập trình nói 1 khái niệm ra thì họ hiểu theo nghĩa thông thường hay áp dụng. Trong hầu hết các ngôn ngữ lập trình, SubForm (giờ cái này ít dùng lắm), Sub report thường để ám chỉ là 1 đối tượng dùng để hiển thị thông tin chi tiết có liên quan tới 1 đối tượng nào đó (thông qua 1 FK Identifier field - hay còn gọi là Link ID field).

- Hiện nay, có rất nhiều Grid hiện đại cho phép hiển thị Sub Grid trong 1 Grid. Từ đó ta có thể view được danh sách các khách hàng (ví dụ thế), khi ta bấm vào 1 KH (bấm vào dấu +) thì nó sổ xuống 1 grid con nằm trong cái Grid cha đó danh sách các Orders hoặc Invoices của KH vừa lựa chọn. Từ danh sách con về Invoices đó, ta lại bấm tiếp vào dấu (+), ta có thể view được các dòng hàng trên invoice đó. Như vậy, ta có thể cùng 1 lúc nhìn chi tiết nhiều Invoices của nhiều KH cùng 1 lúc.

- Thôi, mình chỉ nói sơ bộ đến đây thôi. Hope that helps!
 
Lần chỉnh sửa cuối:
Upvote 0
To: hai2hai,
Thật sự ra làm thì phải làm rồi. Nhưng có điều mình muốn biết có cách nào hay hơn không thôi.

Lê Văn Duyệt
 
Upvote 0
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom