tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

nhocmaruko20

New Member
Hội viên mới
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 giống trong find method mà anh P đã chỉ nhưng nó báo lỗi update addnew j đó :khoc: rồi nó nhảy giá trị tùm lum không đúng như trong table em đã 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. cám ơn nhiều nha
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

Em hãy gửi cái file đó của em lên cho dễ nói.
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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 hoặc ngày nhận sẽ hiện ra combobox để chọn số tham chiếu hoặc 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, mọi người coi và góp ý giúp mình với :daotac:
-----------------------------------------------------------------------------------------
 
Sửa lần cuối:
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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 giống trong find method mà anh P đã chỉ nhưng nó báo lỗi update addnew j đó :khoc: rồi nó nhảy giá trị tùm lum không đúng như trong table em đã 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. cám ơn 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 không 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ì hoàn toàn không cần phải code.

Mở cái form frmOngNoi, add cái combo box, đặt tên là cbokhachang, row source là hai field mã số và tên trong table khách hàng, column count là 2, column widths: 0;1 (dấu cột mã đ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 mã 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 mã 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 mã 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.
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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. :k4929481: Thanks trước :D
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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. :k4929481: 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 không 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 không mà là xem có giải pháp không, (nếu có) giải pháp nào tối ưu hơn!
:)
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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. :k4929481: 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ì tận dụng nó mà làm, code làm chi cho mệt.
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

Ở đâ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 không ổn vì mã kh và tên kh tương đương nhau, khi chọn 1 khách hàng trong combobox thì sẽ có 1 mã khách hàng tương ứng (chỉ có 1 combobox) và bên frmkhachhang sẽ không 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 hoặc 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 hoặc dùng find method 2 lần đúng không ạ?
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

Đâu có. Nó đã link rồi thì làm như anh Phát hướng 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.
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

Mà sao em làm subform k đc ta? nếu e drag and drop cái formthietbi bo vô 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, không 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 không cần phải cài lại office không? mà giờ e mở lại subform thậm chí nó còn không báo j nữa, cứ click vô biểu tượng đó là nó chỉ sáng ô line/border width chứ k hiện ra j cả :khocdudoi::khocdudoi:
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

Mà sao em làm subform k đc ta? nếu e drag and drop cái formthietbi bo vô 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, không 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 không cần phải cài lại office không? mà giờ e mở lại subform thậm chí nó còn không báo j nữa, cứ click vô biểu tượng đó là nó chỉ sáng ô line/border width chứ k hiện ra j cả :khocdudoi::khocdudoi:

Bắt buộc cài lại và cài full cho Access (nếu cần thì cho cả Word, Excel), không thể khác hơn.
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

Mà sao em làm subform k đc ta? nếu e drag and drop cái formthietbi bo vô 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, không 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 không cần phải cài lại office không? mà giờ e mở lại subform thậm chí nó còn không báo j nữa, cứ click vô biểu tượng đó là nó chỉ sáng ô line/border width chứ k hiện ra j cả :khocdudoi::khocdudoi:

drap cái table vô 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ẽ 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 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.
 

Đính kèm

  • data.rar
    73.6 KB · Lượt xem: 295
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

Em insert auto form ở tblkhachhang thì form khachhang này nó tự add table giaonhan vô là subform, còn tblthietbi no khong dem xia gi het, e drap vô thì k đc, không báo gì hết, còn làm winzard thì nó báo can't start winzard -> install winzard xong báo thiếu file SKU011.CAB. em bó tay rồi, không lẽ phải cài lại office thiệt như a P nói? :-(( .Cảm ơn về file của anh muontennguoi :D có điều e làm lại như anh nói nó ra vậy á :-((
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

Em insert auto form ở tblkhachhang thì form khachhang này nó tự add table giaonhan vô là subform, còn tblthietbi no khong dem xia gi het, e drap vô thì k đc, không 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.
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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 (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àng
4, theo số tham chiếu
nế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 không ạ. Vậy em nên làm chung vô 1 table và tạo 1 form trong đó có 2 combobox theo 4 tiêu chí tìm kiếm như trên và 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 không tìm ra chỗ visible hoặc 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ệnh
Private Sub Combo0_AfterUpdate()
subform_giaonhan.IsVisible = True
End Sub

Private Sub Combo0_BeforeUpdate(Cancel As Integer)
subform_giaonhan.IsVisible = False
End Sub


mà không được, báo lỗi 2455 enter an expression that has invalid reference to property IsVisible
Mọi ngưòi chỉ em với. Thanks nhìu
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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 việc 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 việc làm form dạng 3 đời ông-cha-con có rối hay không là do trình bày của bạn mà thôi.
Tùy theo công việc mà thiết kế.
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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ó không 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 không làm được với form unbound, cái này em cũng không 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 = True
End Sub

Private Sub subform_giaonhan_Enter()
Me.RecordSource = "Select * FROM Table1 Where so_tham_chieu = " & Forms!frmhoso!combo0.text "
End Sub


Em 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 không được, không biết lệnh của em có gì sai không :khoc:
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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ó không 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 không làm được với form unbound, cái này em cũng không 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 = True
End Sub

Private Sub subform_giaonhan_Enter()
Me.RecordSource = "Select * FROM Table1 Where so_tham_chieu = " & Forms!frmhoso!combo0.text "
End Sub


Em 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 không được, không biết lệnh của em có gì sai không :khoc:

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 á!
 
Ðề: tìm tên khách hàng và hiển thị tất cả các dữ liệu liên quan lên form và subform

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 không đượ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 không 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 mọi người giúp đỡ. Học lại mới thấy mình thật kém cỏi :khoc:
 
Sửa lần cuối:

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top