Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Dữ liệu trong mainForm và subForm
#21
(30-11-17, 02:07 PM)advnamk Đã viết: Anh  tranthanhan1962 giúp bạn nhiệt tình rồi bạn.
Để học về VBA hay DAO cần có nhiều thời gian, để có 1 phần mềm hoàn hảo bạn cần tham khảo thêm "Phân tích thiết kế hệ thống" nữa.
Để chỉ lưu dữ liệu khi subform có dữ liệu, tránh bị sưả nhầm, xóa nhầm giống như mình viết lên giấy ấy thì bạn lên lập 1 bảng tạm. Khi nhập phiếu mới nó sẽ lưu trên bảng tạm này, khi nhấn "Ghi" ta viết hàm kiểm tra điều kiện nếu đủ điều kiện có số phiếu, hóa đơn có giá trị mới cho lưu, nếu không sẽ thông báo các trường thiếu và không lưu.
VD
Ghi click
if is null MaHD or is null ngày or is null MaKH or is null  MaNV then
 Msgbos "Bạn chưa nhập đủ dữ liệu. Xin kiểm tra lại"
else
 Call Saverecord 'Saverecord là 1 hàm do ta tự viết.
end if

 Khi nấn nút "Xem" ta viết hàm đề copy phiếu qua bảng tạm này để ta chỉnh sửa, và ta nhấn "Ghi nó mới lưu lại. Tương tự nếu ta nhấn nút "Xóa" ta cũng viết hàm để xóa phiếu. 
Bạn cứ mạnh dạn viết bài chỗ nào khúc mắc đưa lên đây. mọi người giúp.

Dạ, mấy cái đó thì mình đã làm qua rồi, chạy ok hết. Cho đến 1 ngày, mình phát hiện ra rằng: Form Nhập Liệu chưa thực sự hoàn hảo lắm. Cũng tìm tòi trên google nhưng vẫn chưa thấy có ai "từng bị" như mình. Rồi anh tranthanhan1962 có hướng dẫn unboundform nhưng cũng chưa đáp ứng được (nhưng mình thử qua unboundform thấy rất hay và đặc sắc). Tuy nhiên, đúng như anh/chị trên diễn đàn có nói là cố gắng tìm tòi trên này để học hỏi. Thú thật, học online kiểu này chỉ có code và file mẫu thì may ra mới hiểu, chứ nhiều khi xem, ko có thầy - cô bên cạnh chỉ dẫn thì rất là khó tiếp thu.
Rất cảm ơn bạn đã góp ý!
Chữ ký của pherotao "Hạnh phúc ở đâu... biết tìm đâu,
Hồng trần là thế giới muôn màu,
Hội đủ nhân duyên... thời sinh quả,
Kết thúc... cũng là lúc bắt đầu".
Reply
Những người đã cảm ơn
#22
(30-11-17, 03:22 PM)pherotao Đã viết: Dạ, mấy cái đó thì mình đã làm qua rồi, chạy ok hết. Cho đến 1 ngày, mình phát hiện ra rằng: Form Nhập Liệu chưa thực sự hoàn hảo lắm. Cũng tìm tòi trên google nhưng vẫn chưa thấy có ai "từng bị" như mình. Rồi anh tranthanhan1962 có hướng dẫn unboundform nhưng cũng chưa đáp ứng được (nhưng mình thử qua unboundform thấy rất hay và đặc sắc). Tuy nhiên, đúng như anh/chị trên diễn đàn có nói là cố gắng tìm tòi trên này để học hỏi. Thú thật, học online kiểu này chỉ có code và file mẫu thì may ra mới hiểu, chứ nhiều khi xem, ko có thầy - cô bên cạnh chỉ dẫn thì rất là khó tiếp thu.
Rất cảm ơn bạn đã góp ý!
Nói rõ cho bạn vấn đề này luôn. Bạn không thể học online trên forum được. Không chỉ trên forum http://thuthuataccess.com mà bất kỳ dạng trang web forum nào trên thể giới, bởi gì forum site là diễn đàn. Chỉ có các learning site mới là những trang web dạy học thực thụ. Khi tham gia forum bạn bắt buộc phải có các hiểu biết cơ bản để khi được hỗ trợ bạn vận dụng các hiểu biết cơ bản của mình để biến sự hỗ trợ đó thành "thành phẩm" của mình. Còn nếu bạn chưa rành ABC mà lên forum nhờ chiếu hữu dạy làm thơ thì thực sự "đời không như là mơ".
Khi cần hỏi một code gì. Ít nhất bạn phải có một CSDL với đầy đủ bộ phận của nó. Bạn phải đặt ra tình huống mà bạn không xử lý được. Chứ không phải viết chung chung một vài câu rồi người hỗ trợ phải thực hiện toàn bộ công việc của bạn từ A --> Z. Điều này rất dễ gây phản cảm bạn ạ!
Tất nhiên khi bạn tham gia forum site thì dù bạn có kiến thức hạn hẹp đến đâu mọi người vẫn xem bạn "bằng vai phải lứa" và thường bạn sẽ không tốn phí. Còn bạn đăng ký một learning site thì bạn chắc chắn là một "học trò" và sẽ tốn một khoản phí học tập nào đó.
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#23
Nghe a nói như vậy, thôi e gửi toàn bộ CSDL của e. E chỉ viết đến phần F_HoaDon_NX. Yêu cầu là: Nhập phần hóa đơn xong (mã số hóa đơn e đã viết tự động cập nhật, có gì a xem cú pháp của e viết có ổn không, yêu cầu là Số HĐ tăng dần theo ngày, hết ngày tính lại), sẽ chuyển sang nhập chi tiết hàng hóa trong subForm. Các nút lệnh: Thêm, Ghi, Sửa, Xóa, Không cũng được thiết kế theo.
Trăm sự nhờ anh/chị trên diễn đàn giúp đỡ!

mainForm-subForm (F_HoaDon_NX)
Chữ ký của pherotao "Hạnh phúc ở đâu... biết tìm đâu,
Hồng trần là thế giới muôn màu,
Hội đủ nhân duyên... thời sinh quả,
Kết thúc... cũng là lúc bắt đầu".
Reply
Những người đã cảm ơn
#24
(29-11-17, 08:55 PM)pherotao Đã viết: Anh maidinhdan ơi, có 1 trục trặc nhỏ trong code mà anh viết gửi em như sau:
1. Khi nhấn "Không", nó có thi hành xóa dữ liệu nhưng hiển thị trên form là #Deleted [img]]http://www.mediafire.com/file/j1cp4fs8fyrvnso/MAIN-SUB.jpg[/img], mặc dầu em thấy anh có thêm lệnh Me.Refresh;
2. Anh gõ thử 1 từ nào đó tại ô "Hóa Đơn", sau đó a nhấn "Không", nó có cảnh báo nhưng chưa xóa; nhấn "Không" lần 2 nó mới xóa và hiện ra chữ #Deleted.
3. Nếu Nhập đầy đủ thông tin trên mainForm và subForm thì khi nhấn "Không" thì nó đứng luôn (thay vì nó sẽ không lưu những gì mình đã nhập trước đó).
4. Khi nhập đầy đủ mainForm, subForm để trống, nhấn nút "Ghi", chẳng những nó không cảnh báo mà còn tự lưu thông tin vô T_HoaDon_NX luôn.

Nhờ anh xem lại dùm em ạ! Chân thành cảm ơn!

http://www.mediafire.com/file/j1cp4fs8fy...IN-SUB.jpg[/img]]http://www.mediafire.com/file/j1cp4fs8fyrvnso/MAIN-SUB.jpg[/img][/url]

Trả lời: Đây là file giải quyết vấn đề này.

Ngoài ra, bạn cũng cần đọc thêm những góp ý của các Anh/chị phía trên để rút kinh nghiệm cho mình.

Và đoạn code nhúng 5 nút thành 2 nút ( chỉ kẻ 2 nút command button, chứ không phải chèn 5 nút rồi cho ẩn nhé).


File đính kèm
.zip   mainForm_subForm_(edit2 by maidinhdan).zip (Kích cỡ: 75.96 KB / Tải về: 15)
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn pherotao
#25
Trả lời: Đây là file giải quyết vấn đề này.

Ngoài ra, bạn cũng cần đọc thêm những góp ý của các Anh/chị phía trên để rút kinh nghiệm cho mình.

Và đoạn code nhúng 5 nút thành 2 nút ( chỉ kẻ 2 nút command button, chứ không phải chèn 5 nút rồi cho ẩn nhé).

[/quote]

Vẫn không đạt anh maidinhdan ơi. Cụ thể như sau:
1. Khi "Thêm mới", đúng là có hiện ra thông báo "nhập thông tin chưa đầy đủ" nhưng nó vẫn cho lưu (lưu vô T_HoaDon_NX);
2. Khi "Sửa", khi mình bấm vào listbox (trên mainForm) để duyệt Hóa Đơn cần sửa thì, lúc đầu nó hiển thị ngay thông tin Hóa đơn, đến khi sửa xong (ví dụ: bấm đổi tên Nhân Viên) ấn nút "Lưu" thì nó lại cảnh báo "... ... ..." và trên mainForm lại hiện ra 1 thông tin của Hóa đơn khác. Rốt cuộc, nó cho 2 lựa chọn là: Lưu hay là Xóa, nếu Lưu: nó ko cho lưu những gì mình đã sửa; nếu Xóa, nó xóa luôn những thông tin đã nhập hoàn chỉnh.
3. Khi ấn xóa, mặc dù trên form đã ko còn hiện tượng #Deleted, nhưng trên listbox nó vẫn còn #Deleted.

Nhờ anh maidinhdan tiếp tục hộ e ạ!
Chữ ký của pherotao "Hạnh phúc ở đâu... biết tìm đâu,
Hồng trần là thế giới muôn màu,
Hội đủ nhân duyên... thời sinh quả,
Kết thúc... cũng là lúc bắt đầu".
Reply
Những người đã cảm ơn
#26
(01-12-17, 01:02 PM)pherotao Đã viết: Vẫn không đạt anh maidinhdan ơi. Cụ thể như sau:
1. Khi "Thêm mới", đúng là có hiện ra thông báo "nhập thông tin chưa đầy đủ" nhưng nó vẫn cho lưu (lưu vô T_HoaDon_NX);
2. Khi "Sửa", khi mình bấm vào listbox (trên mainForm) để duyệt Hóa Đơn cần sửa thì, lúc đầu nó hiển thị ngay thông tin Hóa đơn, đến khi sửa xong (ví dụ: bấm đổi tên Nhân Viên) ấn nút "Lưu" thì nó lại cảnh báo "... ... ..." và trên mainForm lại hiện ra 1 thông tin của Hóa đơn khác. Rốt cuộc, nó cho 2 lựa chọn là: Lưu hay là Xóa, nếu Lưu: nó ko cho lưu những gì mình đã sửa; nếu Xóa, nó xóa luôn những thông tin đã nhập hoàn chỉnh.
3. Khi ấn xóa, mặc dù trên form đã ko còn hiện tượng #Deleted, nhưng trên listbox nó vẫn còn #Deleted.

Nhờ anh maidinhdan tiếp tục hộ e ạ!

Trả lời:

Câu 1: Khi "Thêm mới", đúng là có hiện ra thông báo "nhập thông tin chưa đầy đủ" nhưng nó vẫn cho lưu (lưu vô T_HoaDon_NX)

Thế sau bạn không nhấn Yes sau thông báo nhập không đầy đủ.

Câu 2. Khi "Sửa", khi mình bấm vào listbox (trên mainForm) để duyệt Hóa Đơn cần sửa thì, lúc đầu nó hiển thị ngay thông tin Hóa đơn, đến khi sửa xong (ví dụ: bấm đổi tên Nhân Viên) ấn nút "Lưu" thì nó lại cảnh báo "... ... ..." và trên mainForm lại hiện ra 1 thông tin của Hóa đơn khác. Rốt cuộc, nó cho 2 lựa chọn là: Lưu hay là Xóa, nếu Lưu: nó ko cho lưu những gì mình đã sửa; nếu Xóa, nó xóa luôn những thông tin đã nhập hoàn chỉnh.

Trong hàm Kiemtra() xóa bỏ dòng DoCmd.Requery

Câu 3. Khi ấn xóa, mặc dù trên form đã ko còn hiện tượng #Deleted, nhưng trên listbox nó vẫn còn #Deleted.
* Máy của tôi không bị như bạn nói.
* Nếu bạn muốn thì có thể thêm 1 dòng cuối cùng ở hàm Xoa() là: Me.List.Requery

* Cuối cùng là lời nhắn nhủ. Tất cả 3 câu hỏi này đều là cái cơ bản nhất mà bạn còn chưa nắm. Tôi tin chắc rằng Link video lần trước tôi có cho bạn, bạn đã không hề xem chúng, dù có xem thì bạn cũng xem nhanh như Flash mà chẳng thực hành. Bản thân tôi củng được xem là cao thủ, mà tôi còn phải xem đi xemlại nửa.

Xong bài này, tôi muốn bạn tập xem lại video đó, nếu không bạn sẽ không bao giờ tiến bộ đâu.


Thân mến!
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn pherotao
#27
* Cuối cùng là lời nhắn nhủ. Tất cả 3 câu hỏi này đều là cái cơ bản nhất mà bạn còn chưa nắm. Tôi tin chắc rằng Link video lần trước tôi có cho bạn, bạn đã không hề xem chúng, dù có xem thì bạn cũng xem nhanh như Flash mà chẳng thực hành. Bản thân tôi củng được xem là cao thủ, mà tôi còn phải xem đi xemlại nửa.

Xong bài này, tôi muốn bạn tập xem lại video đó, nếu không bạn sẽ không bao giờ tiến bộ đâu.


Thân mến!
[/quote]

Oan cho e lắm a ơi. E nói thật lòng là e rất mê access. Đặc biệt 2003. Dù Microsoft có phát triển 2007, 2010, 2016,.... e cũng vẫn làm Access 2003. Video a share, e xem nhiều, nhưng thật lòng chưa đáp ứng được nguyện vọng của e. Có lẽ e sẽ viết lại theo kiểu unboundform xem sao. Cám ơn a mấy ngày nay.
Chữ ký của pherotao "Hạnh phúc ở đâu... biết tìm đâu,
Hồng trần là thế giới muôn màu,
Hội đủ nhân duyên... thời sinh quả,
Kết thúc... cũng là lúc bắt đầu".
Reply
Những người đã cảm ơn
#28
014 014 014    Banghead   rolling on the floor
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
#29
Đây là Ý tưởng của em về Form nhập liệu Hóa Đơn (Nhập - Xuất). E gửi anh/chị trên diễn đàn tham khảo để có thể giúp e hoàn thành Form này.


E thành thật biết ơn!

Ý Tưởng Main - Sub
Chữ ký của pherotao "Hạnh phúc ở đâu... biết tìm đâu,
Hồng trần là thế giới muôn màu,
Hội đủ nhân duyên... thời sinh quả,
Kết thúc... cũng là lúc bắt đầu".
Reply
Những người đã cảm ơn
#30
Hì hì đúng là bạn chưa biết chạy xe máy mà đòi đi moto. Trước hết, cứ tạo một mainform - subform bình thường đi đã. Rồi từ từ xử lý nó. 
1/Bạn đang đưa ra một nguyên tắc ngược. Dữ liệu subform quyết định dữ liệu mainform (có con rồi mới có cha), tức là bạn không hiểu gì về relationships. Bạn nên nhớ bắt buột phải có record trên table cha (bên 1) bạn mới có quyền tạo các record liên kết của nó trên table con (nhiều) --> luôn luôn có record trên mainform trước khi chưa có record liên kết với nó trên  subform (dù bạn thiết kế với form có recordsource hay unboundform cũng vậy). Cái này do table quyết định chứ không phải form quyết định.
2/Dạng lưới của subform là datasheet cũng khác hẳn dạng lưới excel là sheet. Form access không bao giờ cho sẳn 10 dòng để nhập liệu mà mỗi lần chỉ cho một dòng để tạo record mới sau khi record cuối cùng đã hoàn chỉnh (record cuối đã được ghi xuống table).
Tất nhiên những yêu cầu của bạn tôi vẫn có thể làm y hệt, nhưng chẳng làm bao giờ. Vì thứ nhất viết code rất cực. Thứ hai nó thực sự vô nghĩa đồng thời gây nhiều phiền toái khi phát triển CSDL.
Đây là phương pháp tôi đề nghị. Bạn cứ từ từ nghiên cứu thực hiện (tôi nghĩ nó sẽ trong khả năng bạn nếu bạn chịu khó nghiên cứu. Vẫn thực hiện theo kiểu form c):
1. Lúc đầu mở Form thì Form hiển thị như hình trên, nhưng ẩn nút “Ghi”, “Không”; tạm gọi chế độ OpenForm là: (A) (cái này bạn có thể tự làm được - lệnh control.visible)
2. Nhấn nút “Thêm”, Form ẩn đi ListBox (3) và các nút “Sửa”, “Xóa”, hiện ra các nút “Ghi”, “Không”; (như trên)
3. Đang nhập liệu trên MainForm (1), ấn nút “Ghi”, sẽ báo lỗi, vì chưa nhập SubForm (2) (Bạn phải tạo một textbox có giá trị count record dưới subform để nó báo lỗi khi textbox này có giá trị bằng 0, chỉ là báo lỗi thôi chứ thực ra record đã được ghi vào table rồi - có thể viết lệnh xóa record ngay khi báo lỗi sử dụng lệnh DoCmd.RunCommand acCmdDeleteRecord. Nếu không đưa lệnh này vào nút không theo ý bạn cũng được), ấn nút “Không”, sẽ tự động xóa luôn những gì đã nhập trước đó (hoặc chưa nhập gì cả), và Form trở về (A); (phần 3.1, 3.2 cũng gần gần giống như phần 3 chỉ khác điều kiện ở bẩy lỗi)
4. Trong SubForm (2) (hiển thị dạng lưới để dễ nhập liệu Chi Tiết Hàng Hóa), Ví dụ: có 01 đơn hàng gồm 07 món (07 dòng), nhưng lỡ nhập 10 món (10 dòng) thì cũng có thể chủ động deleted bớt 03 dòng (ở bất kỳ dòng nào trên lưới); (cái này như đã nói trên)
6. Ở chế độ (A), nếu click vào (3) sẽ hiển thị thông tin đầy đủ vô (1) và (2), và cũng cho phép sửa chữa (hoặc xóa) nếu cần thiết; (đây là phần lọc form theo hóa đơn)
Cách lọc:
1/Bạn có thể dùng phương pháp Bookmark
Mã:
Private Sub Listbox (3)AfterUpdate()
   Dim rs As Object
   Set rs = Me.Recordset.Clone
   rs.FindFirst "[Mã Hóa Đơn] = '" & Me![Listbox (3)] & "'"
   If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
2/Hoặc tạo query lọc table T_HoaDon_NX theo Mã Hóa Đơn của Listbox (3) rồi dùng lệnh Me.Recordsource đổi Recordsource mainform (form T_HoaDon_NX) từ T_HoaDon_NX sang query lọc. Khi không lọc thì trả lại Recordsource mainform về table T_HoaDon_NX
Chữ ký của tranthanhan1962 Kết quả cuối cùng của một đời người, không phải bạn có được bao nhiêu tiền bạc, tài sản. Mà bạn còn bao nhiêu người bạn  thumbs up
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
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
  Hướng Dẫn Hàm kiểm tra dữ liệu để import dữ liệu từ excel vào access subasatran 14 724 16-11-18, 01:36 AM
Bài mới nhất: maidinhdan
  [Thủ Thuật] Demo Tổng hợp tất cả các kiểu thông báo tiếng việt trong Access maidinhdan 39 8,478 22-09-18, 12:40 PM
Bài mới nhất: NguyenDungAnh
  [Help] SQL trong VBA chạy không đúng! NguyenDungAnh 12 660 07-09-18, 10:44 AM
Bài mới nhất: NguyenDungAnh
  [Help] Tự chọn yes or no trong VBA khi chạy SQL NguyenDungAnh 7 413 26-08-18, 03:40 PM
Bài mới nhất: NguyenDungAnh
  Sử dụng Class Module và Kết nối dữ liệu SQL SERVER trong Access VBA lehongduc 62 34,483 03-08-18, 12:41 PM
Bài mới nhất: Cuong Servenet

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ơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line