Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Thay đổi màu nền các dòng theo điều kiện trên form Continuous
#1
Trên Form Datasheet chúng ta có thể Conditional Formatting để xử lý. Nhưng Access làm công việc này rất tồi. Khi số lượng record lớn. Mỗi khi mở form là mỗi lần đợi dài cả cổ.
Nhưng nếu dùng form Continuous ta có thể dễ dàng làm việc này

[Hình: UsxbFSI.png]

Trên Form này thiết đặt các dòng có giá trị TextBox THU > 0 có nền màu đỏ, các dòng có giá trị TextBox CHI > 0 có nền màu xanh.
Cách xử lý như sau:

[Hình: IWfZadT.png]

Khi thiết kế, ngoài các controls dữ liệu của form ta thêm 2 TextBox như sau:
TextBox1
Fore Color màu xanh
Controls Source = IIf([CHI]>0;"ggggggggggggggggggg";"")
TextBox2
Fore Color màu đỏ
Controls Source = IIf([THU]>0;"ggggggggggggggggggg";"")
Chọn cả hai rồi Format\Sentd to Back. Kế tiếp đổi font chữ của 2 Text box này sang font Webdings. Sau đó thiết đặt Top của các control bằng nhau. Công việc chúng ta đã hoàn thành
Font Webdings của ký tự g là các ô vuông liên tục nên khi có nhiều ký tự g nó sẽ tạo thành một hình vuông màu. Mục đich công việc này là đưa font của hai Text Box 1, 2 làm nền cho các control khác.
Chúng ta chỉ cần cân chỉnh font size để phủ kín chiều cao và số lượng ký tự g để phủ kín chiều ngang.
Với chiêu này. Chúng ta có thể tùy biến với nhiều điều kiện (mỗi điều kiện là một màu). Nếu đưa vào Query chúng ta có thể xử lý các dòng xen kẻ trắng xám căn cứ theo số thứ tự chẳn hoặc lẻ…Mà form hay report chiếm tài nguyên rất nhẹ nên không ảnh hưỡng nhiều đến tốc độ của xử lý cơ sở dữ liệu
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 Minh Tiên , maidinhdan , thiennamlong , gaubu117 , MatTroiNguQuen
#2
thật hay, bạn có thể đính kèm demo thì tuyệt.
Chữ ký của tronghieu9792 Xin chào, mình là tronghieu9792, Tham gia http://thuthuataccess.com/forum từ ngày 10-01 -14.
Reply
Những người đã cảm ơn
#3
(01-06-15, 12:56 AM)tronghieu9792 Đã viết: thật hay, bạn có thể đính kèm demo thì tuyệt.

Ok, Vì hôm nay không hiểu sao mạng của mình không up được lên mediafire. khi nào up được mình sẽ poste lên. Sorry
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
#4
Demo xen kẻ màu nền tren form
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
#5
rất cảm ơn sự chia sẽ nhiệt tình của bạn!
Chữ ký của tronghieu9792 Xin chào, mình là tronghieu9792, Tham gia http://thuthuataccess.com/forum từ ngày 10-01 -14.
Reply
Những người đã cảm ơn
#6
(01-06-15, 08:37 AM)tranthanhan1962 Đã viết: Demo xen kẻ màu nền tren form

- Vụ này ở office 2007 trở đi đã có hỗ trợ: Property --> Detail --> Format -->Alternate Back Color -->Alternate row --> OK.
- Thanks tranthanhan1962 !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn tranthanhan1962 , maidinhdan
#7
(02-06-15, 08:36 AM)Minh Tiên Đã viết:
(01-06-15, 08:37 AM)tranthanhan1962 Đã viết: Demo xen kẻ màu nền tren form

- Vụ này ở office 2007 trở đi đã có hỗ trợ: Property --> Detail --> Format -->Alternate Back Color -->Alternate row --> OK.
- Thanks tranthanhan1962 !

OK. Từ 2007 trở đi ngoài Detail.BackColor Access còn cho thêm Detail.AlternateBackColor.
Phần mình viết chỉ để xử dụng cho access 2003 thôi.
Còn đối với aceess 2007 access chỉ dừng lại ở việc tạo sự luân phiện thay đổi màu nền. Mình đang nghiên cứu việc xử lý code để thay đổi BackColor và AlternateBackColor theo điều kiện cho access 2007 nhưng nghĩ chưa ra. Nếu bạn có ý gì hay thì Minh Tiên post lên để cùng nghiên cứu nhé. Thank
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 tronghieu9792 , maidinhdan
#8
Đổỉ màu dòng chẳn lẻ.
Em cũng áp dụng theo cách các bác Ân và cách gán số thứ tự cho record của bác MinhTien để làm đổi màu dòng chẳn lẻ trong form.

Conditional formating:

[Hình: ConditionFm.png]


[Hình: DoiMauRecord.png]


Demo
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 tranthanhan1962 , Minh Tiên , maidinhdan
#9
Ý tưởng về sử dụng một textbox làm nền của bác Ân cũng rất hay, MTNQ góp thêm với bác một cách sử dụng FormatConditions:

-Trong phần Detail của form Continuous:

1/ Thiết lập thuộc tính Back Style của các điều khiển là Transparent

2/Vẽ một TextBox (txtBackGround) phủ kín các điều khiển rồi Send to Back

3/Sử dụng hàm sau để thiết lập FormatConditions  cho txtBackGround (Với một hoặc  điều kiện kết hợp):
Mã:
Function AddFormatConditions2(ctrlBG As Control, strExpression As String, _
   Optional lngBackColor As Long = vbRed)
   On Error GoTo HandleError
   With ctrlBG
       .FormatConditions.Delete
       .FormatConditions.Add acExpression, , strExpression
       .FormatConditions(0).BackColor = lngBackColor
   End With
Err_Exit:
   Exit Function
HandleError:
   MsgBox Err.Description, vbCritical, "Err: AddFormatConditions2"
   Resume Err_Exit
End Function

Tải tệp đính kèm: 
Demo FormatConditions.rar

P/S: Demo trên MTNQ đã nạp sẵn hơn 100 000 record nhưng chạy cũng rất nhanh (chưa đầy 1s)  Beer_smile
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn ongke0711 , tranthanhan1962 , maidinhdan , Minh Tiên
#10
Đang thiết kế 1 form có sử dụng cách format của anh tranthanhnhan1962 nên đào mộ lại post này và chia sẽ thêm một kiểu ứng dụng khác của nó là: Highlight 1 ô nào đó thõa điều kiện được đưa ra.
- Áp dụng cho Continuous form.
- Không cần dùng Conditional Formating (của Access 2007 trở lên).
- Tốc độ theo tôi sẽ nhanh hơn dùng Conditional formating.

[Hình: highlight.png]

Link demo:http://www.mediafire.com/download/2u7n6u...usForm.mdb
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 maidinhdan , huuduy.duy , Minh Tiên , ledangvan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Cách thêm dữ liệu vào form Main_Sub NganNguyen 1 34 Hôm nay, 02:23 AM
Bài mới nhất: maidinhdan
  Tự động hiện Form khi loading hết thời gian ChiMai 1 45 02-12-16, 08:59 PM
Bài mới nhất: ongke0711
Photo [Hỏi] Mở Form trên access 2007 báo lỗi jason 5 193 22-11-16, 09:23 AM
Bài mới nhất: jason
  Lọc có điều kiện ở listbox phiacuoiconduong 2 93 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

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ơ