Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Chức năng hiện Control theo điều kiện
#1
Các bác cho em hỏi, mình có cách nào để khi design form mà một mục (em không biết gọi là control có đúng ko) chỉ hiện khi một mục khác thỏa mãn điều kiện định trước. Em xin lấy ví dụ cho đơn giản:
Có 2 field liên quan đến nhau trong Table, là [Phương thức vận chuyển][Số Container].
Có các loại phương thức vận chuyển như (By Air, CFS, Container)
[Số Container] chỉ cần nhập khi Phương thức vận chuyển = Container, còn các loại khác thì bỏ trống

Em muốn design form sao cho nếu [Phương thức vận chuyển] = "Container" thì [Số Container] sẽ hiện ra để điền, còn nếu ko sẽ bị ẩn đi
------------------------
Tiện thể em muốn hỏi về cách tạo event cho button sao cho khi click nó sẽ mở form và điền luôn vào 1 control trong form 1 giá trị nào đó.
big green, em cám ơn các bác trước.
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#2
Các control đều có phương thức: Visible/Invisible (Hiện/Ẩn). Bạn chỉ cần code nó: 
-----------------------------
If cboPhuongThucVC="Container" Then
   Me.txtSoContainer.Visible = True
   Me.txtByAir.Visible = False
   .......
Else
   Me.txtSoContainer.Visible = False
   Me.txtByAir.Visible = True
   .......
End if
---------------------------

- Khi click mở form khác thì truyền tham số thông tin muốn lấy từ form hiện tại thông qua tham số "OpenArgs"
 Vd:
     Truyền tham số lấy từ hiện tại:  
     DoCmd.OpenForm "frmCapNhat", acNormal, , , , acDialog, OpenArgs:= Me.txtTenNhaCC
      
      Khi frmCapNhat load lên thì code cho nó:
     Private Sub Form_Load()
            If IsNull(Me.OpenArgs) = False Then

                 [Textbox cần điền info].Text = Me.OpenArgs
                 ...
             End if
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 toancvp , maidinhdan
#3
Hehe, em cám ơn bác. Mặc dù chưa hiểu lắm nhưng em sẽ cố tự mày mò từ phần hướng dẫn của bác bằng được thì thôi big green.
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#4
(15-06-16, 01:17 PM)ongke0711 Đã viết: Các control đều có phương thức: Visible/Invisible (Hiện/Ẩn). Bạn chỉ cần code nó: 
-----------------------------
If cboPhuongThucVC="Container" Then
   Me.txtSoContainer.Visible = True
   Me.txtByAir.Visible = False
   .......
Else
   Me.txtSoContainer.Visible = False
   Me.txtByAir.Visible = True
   .......
End if
---------------------------

- Khi click mở form khác thì truyền tham số thông tin muốn lấy từ form hiện tại thông qua tham số "OpenArgs"
 Vd:
     Truyền tham số lấy từ hiện tại:  
     DoCmd.OpenForm "frmCapNhat", acNormal, , , , acDialog, OpenArgs:= Me.txtTenNhaCC
      
      Khi frmCapNhat load lên thì code cho nó:
     Private Sub Form_Load()
            If IsNull(Me.OpenArgs) = False Then

                 [Textbox cần điền info].Text = Me.OpenArgs
                 ...
             End if

Bác ơi, cái đoạn Me. em không hiểu là gì, nhưng khi em cho vào code hoặc bỏ đi thì nó đều chạy được. Duy chỉ có vấn đề này thôi ạ.
Ban đầu em để thuộc tính [Container] visible = No. [PhuongThucVanChuyen] em đặt event after update như sau:

Private Sub PhuongThucVanChuyen_AfterUpdate()
If PhuongThucVanChuyen = "Container" Then
Me.Container.Visible = True
Else
Me.Container.Visible = False
End If
End Sub

Nghĩa là ý định của em, nếu Phương thức = "Container" thì [Container] sẽ hiện lên để điền số của Container, nếu ko thì ko hiện lên cái này.
Khi chạy form để điền thông tin hoặc sửa thì chạy rất ok.
Nhưng khi load form để xem các record đã được ghi thì tất cả đều không chịu hiện control [Container] hoặc nếu cái record đầu là "Container" thì tất cả đều hiện control [Container].
Em cũng thử copy đoạn code trên, dán vào event load form rồi, đều ko hiệu quả.

Là do em thiếu chỗ nào hay cái này là không thể tránh khỏi ạ?
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
Reply
Những người đã cảm ơn
#5
- Từ "Me" là đại diện cho cái Form, Report chứa cái control cần xử lý. Thay vì dùng Forms!frmCapNhat.Form!PhuongThucVanChuyen thì dùng ngắn gọn Me.PhuongThucVanChuyen.
- Bạn copy đoạn code vào sự kiện Form_Current.
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 toancvp , maidinhdan
#6
(15-06-16, 08:55 PM)ongke0711 Đã viết: - Từ "Me" là đại diện cho cái Form, Report chứa cái control cần xử lý. Thay vì dùng Forms!frmCapNhat.Form!PhuongThucVanChuyen thì dùng ngắn gọn Me.PhuongThucVanChuyen.
- Bạn copy đoạn code vào sự kiện Form_Current.

Hehe, thank bác lắm ạ.
Chữ ký của toancvp Nếu tất cả đường đời đều trơn láng    
Có thể nào ta nhận ra ta Bat
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
  Tự động hiện Form khi loading hết thời gian ChiMai 1 43 02-12-16, 08:59 PM
Bài mới nhất: ongke0711
  Lọc có điều kiện ở listbox phiacuoiconduong 2 92 18-11-16, 06:40 PM
Bài mới nhất: ongke0711
  Query hiện lên trên form? feeling 4 164 09-11-16, 09:49 PM
Bài mới nhất: toancvp
  Thay đổi hình ảnh theo mã feeling 3 149 04-11-16, 05:18 PM
Bài mới nhất: maidinhdan
  [Hỏi] Tổng hợp dữ liệu theo thời gian hoanghai902 1 139 21-10-16, 09:55 PM
Bài mới nhất: maidinhdan

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ơ