Em đang viết 1 chương trình gồm có 2 form frmkhachhang và frmthietbi trong đó frmthietbi là subform của form kia, có dạng mặc định là dạng bảng. khi em chọn giá trị trong combobox ten_kh thì sẽ lấy các giá trị còn lại tương ứng với recordset đó và hiển thị lên cả frmkhachhang và frmthietbi. e chỉ mới làm thử trên frmkhachhang truoc tương tự trong find method mà anh P vừa chỉ nhưng nó báo lỗi update addnew j đó rồi nó nhảy giá trị tùm lum bất đúng như trong table em vừa lưu. ai chỉ em với. còn phần cho cả 1 phần tương ứng với các record đó trong bảng của frmthietbi em cũng chưa biết làm sao nữa. em mới học access à, mấy anh chỉ em với. Thank nhiều nha
 

Nguyen_yeu

New Member
Bạn xem lại cách thiết kế CSDL của bạn nhé. Nếu 1 khách hàng có nhiều giao dịch mua bán (bạn gọi là tham chiếu) thì bạn định cho hiện lên form những thông tin gì?
 

kydu_ang3ls

New Member
Vậy là chọn lọc theo 2 điều kiện hả bạn? Đầu tiên là chọn tên khách hàng, thì có thể chỗ số tham chiếu hay ngày nhận sẽ hiện ra combobox để chọn số tham chiếu hay ngày nhận mình cần và lấy ra những dữ liệu còn lại liên quan tới nó. Vậy làm find method 2 lần hả? Thiệt tình mình cũng mới tập làm VBA nên rối tung, tất cả người coi và lũy ý giúp mình với -' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-' + '-
 

anh_truong

New Member
Trích:
Nguyên văn bởi nhocmaruko20 Em đang viết 1 chương trình gồm có 2 form frmkhachhang và frmthietbi trong đó frmthietbi là subform của form kia, có dạng mặc định là dạng bảng. khi em chọn giá trị trong combobox ten_kh thì sẽ lấy các giá trị còn lại tương ứng với recordset đó và hiển thị lên cả frmkhachhang và frmthietbi. e chỉ mới làm thử trên frmkhachhang truoc tương tự trong find method mà anh P vừa chỉ nhưng nó báo lỗi update addnew j đó rồi nó nhảy giá trị tùm lum bất đúng như trong table em vừa lưu. ai chỉ em với. còn phần cho cả 1 phần tương ứng với các record đó trong bảng của frmthietbi em cũng chưa biết làm sao nữa. em mới học access à, mấy anh chỉ em với. Thank nhiều nha
Nói cho vui thì đây là kiểu thiết kế form dạng "ba đời", trong đó vừa có cả ông nội, vừa có cả bố, vừa có cả con.
Trong đó:
Ông nội là một cái form bất có Record Source, chỉ chứa mỗi combo box khách hàng. Cho form này cái tên là frmOngNoi.
Bố là cái form khách hàng.
Con là cái form thiết bị.

Nếu làm theo bài bản mà bạn đặt ra thì cần can thiệp một chút bằng code, nếu làm theo cách dưới đây thì trả toàn bất nên phải code.

Mở cái form frmOngNoi, add cái combo box, đặt tên là cbokhachang, row source là hai field ngựa số và tên trong table khách hàng, column count là 2, column widths: 0;1 (dấu cột ngựa đi).

Add cái subform thứ nhất, đặt tên là subBo, Source Object là: frmkhachhang, Link Master Fields: cbokhachhang, Link Child Fields: filed ngựa số khách hàng.

Add cái subform thứ hai, đặt tên là subCon, Source Object là: frmthietbi, Link Master Fields: cbokhachhang, Link Child Fields: filed ngựa số khách hàng có trong bảng thiết bị (vì bạn nói là thiết bị là con của khách hàng mà, do vậy nó phải có field ngựa khách hàng).

Xong rồi. Mỗi khi chọn một khách hàng trong combo box, các dữ liệu trong các form bố và con sẽ tự động cập nhật.
 

love_matrix

New Member
Hic nhưng ông Phật ui, e đang tập viết VBA mà ông nói vậy thì e tập làm gì nữa cho khổ đời. Làm ơn chỉ e VBA đi. Thanks trước :D
 

Nisien

New Member
Trích:
Nguyên văn bởi nhocmaruko20 Hic nhưng ông Phật ui, e đang tập viết VBA mà ông nói vậy thì e tập làm gì nữa cho khổ đời. Làm ơn chỉ e VBA đi. Thanks trước :D
Học gì đi nữa cuối cùng cũng nhằm vào kết quả! Các sếp bất quan tâm bạn viết bằng cái gì, dùng công cụ gì mà chỉ quan tâm bạn làm có được không? Bao lâu thì xong yêu cầu! :)Vì vậy đừng quan trọng chuyện VBA hay bất mà là xem có giải pháp không, (nếu có) giải pháp nào tối ưu hơn!:)
 
Trích:
Nguyên văn bởi nhocmaruko20 Hic nhưng ông Phật ui, e đang tập viết VBA mà ông nói vậy thì e tập làm gì nữa cho khổ đời. Làm ơn chỉ e VBA đi. Thanks trước :D
Nói là code một chút thực tế chỉ thêm một hai dòng lệnh mà thôi. Tuy nhiên do table của bạn thiết kế như thế thì hết dụng nó mà làm, code làm chi cho mệt.
 
Ở đây em cần giải quyết là 1 khách hàng có thể có nhiều số tham chiếu, tức là nhiều lần giao/nhận hàng, và mỗi lần này ứng với 1 số tham chiếu nào đó để lấy ra dữ liệu tương ứng trên frmkhachhang và subform. Còn như anh P nói thì cũng bất ổn vì ngựa kh và tên kh tương đương nhau, khi chọn 1 khách hàng trong combobox thì sẽ có 1 ngựa khách hàng tương ứng (chỉ có 1 combobox) và bên frmkhachhang sẽ bất biết lấy thông tin nào nếu khách hàng đó có nhiều hơn 1 lần giao/nhận. Cái em muốn xử lí ở đây là chọn ra tên khách hàng, sau đó chọn số tham chiếu hay ngày giao/nhận cần lấy thông tin của khách hàng đó rồi mới xuất thông tin còn lại ra trên form và subform. Vậy em phải làm 2 cái combobox trên form Ongnoi theo như cách của anh P hay dùng find method 2 lần đúng bất ạ?
 

nguyentoanhy

New Member
Đâu có. Nó vừa link rồi thì làm như anh Phát chỉ dẫn là đúng với yêu cầu của bạn rồi.
Chỉ còn thiết kế cho đẹp thôi.
 

minhhien_pal

New Member
Mà sao em làm subform k được ta? nếu e drag and drop cái formthietbi bo không main form thì e k thấy trong properties có phần link master với link child. còn e nhấn subform trong toolbox thì nó báo thiếu file j đó k tiến hành winzard được. hic, bất lẽ e phải cài lại office? (máy e đang xài được cài sẵn, e k có source nên k có file thiếu) Có cách nào mà em bất nên phải cài lại office không? mà giờ e mở lại subform thậm chí nó còn bất báo j nữa, cứ click không biểu tượng đó là nó chỉ sáng ô line/border width chứ k hiện ra j cả
 
Trích:
Nguyên văn bởi nhocmaruko20 Mà sao em làm subform k được ta? nếu e drag and drop cái formthietbi bo không main form thì e k thấy trong properties có phần link master với link child. còn e nhấn subform trong toolbox thì nó báo thiếu file j đó k tiến hành winzard được. hic, bất lẽ e phải cài lại office? (máy e đang xài được cài sẵn, e k có source nên k có file thiếu) Có cách nào mà em bất nên phải cài lại office không? mà giờ e mở lại subform thậm chí nó còn bất báo j nữa, cứ click không biểu tượng đó là nó chỉ sáng ô line/border width chứ k hiện ra j cả
Bắt buộc cài lại và cài full cho Access (nếu cần thì cho cả Word, Excel), bất thể khác hơn.
 

nhypy

New Member
Trích:
Nguyên văn bởi nhocmaruko20 Mà sao em làm subform k được ta? nếu e drag and drop cái formthietbi bo không main form thì e k thấy trong properties có phần link master với link child. còn e nhấn subform trong toolbox thì nó báo thiếu file j đó k tiến hành winzard được. hic, bất lẽ e phải cài lại office? (máy e đang xài được cài sẵn, e k có source nên k có file thiếu) Có cách nào mà em bất nên phải cài lại office không? mà giờ e mở lại subform thậm chí nó còn bất báo j nữa, cứ click không biểu tượng đó là nó chỉ sáng ô line/border width chứ k hiện ra j cả
drap cái table không thử xem sao.

Mà muốn dùng wizard thì ralationship phải đặt liên kết ông nội - cha - con trước.

Trước tiên bạn mở cái from cho tblKhachHang.
Trong form đó bạn drap cái table tblGiaoNhan vào.
- Lúc đó nó sẽ làm ra (tạo) ra 1 cái form nữa gọi là subform-giao nhan
Bạn save lại .
Mở cái subform mà máy vừa mới làm ra (tạo) thêm đó ra.
Drap tiếp cái tblThietBi vào.
Save lại.

Chạy ra mở cái form KhachHang ban đầu (form ông nội) ra xem.

Xem thử file đính kèm.
 

gril_kieu_ki90

New Member
Em insert auto form ở tblkhachhang thì form khachhang này nó tự add table giaonhan không là subform, còn tblthietbi no khong dem xia gi het, e drap không thì k được, bất báo gì hết, còn làm winzard thì nó báo can't start winzard -> càiwinzard xong báo thiếu file SKU011.CAB. em bó tay rồi, bất lẽ phải cài lại office thiệt như a P nói? :(( .Thank về file của anh muontennguoi :D có điều e làm lại như anh nói nó ra vậy á :((
 
Trích:
Nguyên văn bởi nhocmaruko20 Em insert auto form ở tblkhachhang thì form khachhang này nó tự add table giaonhan không là subform, còn tblthietbi no khong dem xia gi het, e drap không thì k được, bất báo gì hết, ((
- Save cái form khachhang đó lại (đóng lại).
- Mở cái subform giaonhan ra.
- Lôi cái table thietbi bỏ vào cái giaonhan ấy.
- Save lại (đóng lại).
- Mở cái form khachhang ban đầu ra thưởng thức.
 
Cũng dạng như thế này nhưng thay đổi yêu cầu 1 chút là sẽ hiển thị tất cả thông tin liên quan khi chọn xem dữ liệu theo:1, thời (gian) gian (chọn xem theo ngày cụ thể, theo tháng, theo tuần,...)2, theo tên thiết bị3, theo khách hàng4, theo số tham chiếunếu tìm kiếm theo nhiều kiểu như thế này thì làm dạng form ông nội, cha, con như trên thì hơi rối đúng bất ạ. Vậy em nên làm chung không 1 table và làm ra (tạo) 1 form trong đó có 2 combobox theo 4 tiêu chí tìm kiếm như trên và làm ra (tạo) 1 subform ở dạng datasheet, để propoties của subform là invisible và afterupdate của 1 trong 4 combobox trên thì sẽ cho subform enable. Em có ý tưởng là như vậy nhưng khi làm thì sau khi em drap subform, tìm properties của subform bất tìm ra chỗ visible hay cái gì tương tự để cho nó giá trị NO. hic. cái này do lỗi chương trình access của em hay do em sai bước gì? Em làm trong code thì gõ lệnhPrivate Sub Combo0_AfterUpdate()subform_giaonhan.IsVisible = TrueEnd SubPrivate Sub Combo0_BeforeUpdate(Cancel As Integer)subform_giaonhan.IsVisible = FalseEnd Submà bất được, báo lỗi 2455 enter an expression that has invalid reference to property IsVisibleMọi ngưòi chỉ em với. Thanks nhìu
 

huylavico

New Member
IsVisible thường chỉ dùng khi in report.
Còn trên form thì dùng Visible.

Nếu muốn dùng combo để tìm đến 1 dòng nào đó thì bạn cứ đưa vào. Access có wizard sẵn để đưa code vào cho bạn.

Nhưng hình như bạn chưa phân biệt datasheet là để duyệt qua tất cả các record, thuận tiện khi cập nhật dữ liệu.
Còn chuyện tìm kiếm thì cứ dùng recordset.FindFirst() thôi.

Bạn cũng có thể dùng Filter để lọc dữ liệu trước khi đưa dữ liệu hiển thị lên lưới.
Ngoài ra, nếu dữ liệu là rất lớn (7-10 ngàn dòng) thì gán lại resource Select...From...Where.... sẽ tốt hơn.
Công nghệ Filter cũng rất tốt, đối với dữ liệu nhỏ (3-4 ngàn dòng) thì gán lại filter cũng tương đương với dùng mệnh đề Where...

Còn chuyện làm form dạng 3 đời ông-cha-con có rối hay bất là do trình bày của bạn mà thôi.
Tùy theo công chuyện mà thiết kế.
 

lollipop_grand

New Member
Thì em mới học mà, nên cái j cũng mù mờ, hic. Ý anh là cái datasheet là để coi tất cả các record á hả? chứ mình k lọc để trên datasheet được hả? Vì nếu để theo dạng single form thì khi có nhiều hơn 1 kết quả tìm kiếm, nó bất thể hiện lên hết trên textbox được, nên em nghĩ để dạng bảng sẽ hợp lý hơn :D. Còn làm kiểu như anh Phát bày làm subform chọn link child field, link master field thì bị báo bất làm được với form unbound, cái này em cũng bất hiểu huhu. Anh cho em mẫu lệnh select...from...where...với. Các anh có tài liệu nào cụ thể về các thuộc tính và câu lệnh trong VBA cho em với, em mò mò đuối quáPrivate Sub Combo0_AfterUpdate()Me!subform_giaonhan.Visible = TrueEnd SubPrivate Sub subform_giaonhan_Enter()Me.RecordSource = "Select * FROM Table1 Where so_tham_chieu = " & Forms!frmhoso!combo0.text "End SubEm làm vậy thì khi chọn giá trị trong combo0 thì sẽ hiện ra bảng của subform nhưng hiện hết giá trị, còn em lọc bất được, bất biết lệnh của em có gì sai không
 

Adael

New Member
Trích:
Nguyên văn bởi nhocmaruko20 Thì em mới học mà, nên cái j cũng mù mờ, hic. Ý anh là cái datasheet là để coi tất cả các record á hả? chứ mình k lọc để trên datasheet được hả? Vì nếu để theo dạng single form thì khi có nhiều hơn 1 kết quả tìm kiếm, nó bất thể hiện lên hết trên textbox được, nên em nghĩ để dạng bảng sẽ hợp lý hơn :D. Còn làm kiểu như anh Phát bày làm subform chọn link child field, link master field thì bị báo bất làm được với form unbound, cái này em cũng bất hiểu huhu. Anh cho em mẫu lệnh select...from...where...với. Các anh có tài liệu nào cụ thể về các thuộc tính và câu lệnh trong VBA cho em với, em mò mò đuối quáPrivate Sub Combo0_AfterUpdate()Me!subform_giaonhan.Visible = TrueEnd SubPrivate Sub subform_giaonhan_Enter()Me.RecordSource = "Select * FROM Table1 Where so_tham_chieu = " & Forms!frmhoso!combo0.text "End SubEm làm vậy thì khi chọn giá trị trong combo0 thì sẽ hiện ra bảng của subform nhưng hiện hết giá trị, còn em lọc bất được, bất biết lệnh của em có gì sai bất
Nếu bạn mới học, tốt hơn nên tìm 1 tài liệu tham khảo, hoặc kiếm 1 chương trình nhỏ nhỏ ai đó viết sẵn ( trên dân kế này, mọi người share đầy), về xem họ làm thế nào! Chứ hướng dẫn chay (không có demo kèm) thì tới sáng mai á!
 

Manasseh

New Member
Me.subform_giaonhan.Form.Filter = "so_tham_chieu = " & Me.Combo0 (cái này em search có người làm được rùi mà sao em làm bất được vậy??)subform_giaonhan.Filter = "so_tham_chieu = ' " & Combo0.Value & " ' " (câu này báo method or data not found)Em search được 2 dạng câu filter như vậy nhưng cũng bất cái nào chạy được hết, vẫn ra hết cả bảng. Tóm lại là em cần thiết kế 1 form có 1 combobox lấy giá trị từ so_tham_chieu sau khi update cho combo0 này thì trên subform sẽ hiển thị tất cả các dữ liệu có số tham chiếu như vậy (có thể hơn 1 giá trị) nên em để subform có default view là datasheet. Rất mong tất cả người giúp đỡ. Học lại mới thấy mình thật kém cỏi
 

Các chủ đề có liên quan khác

Top