Đá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
  Hiện nội dung record của subform lên main form hueqlhc 9 2,710 02-08-17, 04:36 PM
Bài mới nhất: tvn_hut
Exclamation [Help] Truy vấn từ 1 list box trong form và điều chỉnh kích thước form tien1505 4 121 01-07-17, 12:34 AM
Bài mới nhất: tien1505
  [Hỏi] Tại saoform không hiện thị được dấu phân cách hàng ngàn thanhhao 6 208 26-06-17, 11:45 AM
Bài mới nhất: tranthanhan1962
  Hướng Dẫn Tạo sub form theo kiểu datasheet cawboy 2 217 11-05-17, 02:38 PM
Bài mới nhất: cawboy
  [Help] Điều khiển form thông qua mạng lan tranthanhan1962 2 154 11-05-17, 09:04 AM
Bài mới nhất: tranthanhan1962

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ơ