Vì sao access 2013 không cho dùng text box

Kỹ năng đơn giản nhưng rất hiệu quả trong báo cáo của Access. Hôm nay đọc lại một vài thư cũ tôi chợt nhận ra rằng đã có lúc mình đi sai đường và lạm dụng quá về viết mã chương trình. Cũng tốt nếu chúng ta viết được mã chương trình, nhưng đôi khi nếu quá lạm dụng, chúng ta có thể quên mất một điều là Access có khả năng làm được điều ta cần một cách rất đơn giản và đơn giản là ta sẽ bị phí phạm nguồn lực. Bài viết này tôi muốn nhấn mạnh đến việc - tiếp cận một yêu cầu đầu vào thế nào để có thể tiết kiệm được thời gian va công sức thông qua phân tích một ví dụ sau. 1. Yêu cầu:

Làm thế nào để báo cáo của access không hiển thị các trường dữ liệu trống và báo cáo tự co khi có các khoảng trống dữ liệu đó?

Đoạn trích nội dung trao đổi thế này: [Chao ban Minh xin noi ro them nhu sau: minh co 1 danh thiep va nguoi dinh kem danh thiep la subreport cua no nhung khi dua dinh dang vao,thi nguoi dinh kem do co 5 du lieu:ten,dia chi,dien thoai,...doi khi no chi lay ten,diachi,... hoac chi lay ten minh co thu lai nhieu lan va thay rang: neu nhu danh thiep co subreport nguoi dinh kem dau tien chi lay ten va dien thoai thi cac danh thiep sau,du nguoi dinh kem co them diachi,di dong,... van chi hien len ten va dien thoai ma thoi minh van chua tim duoc nguyen nhan Cam on ban nhieu] 2. Trả lời: Vấn đề có vẻ không khó nếu các bạn sử dụng thành thạo access, nhưng đối với tôi dưới con mắt của một người chỉ sử dụng access một cách thời vụ, tôi phân tích nó theo cách quá máy móc giống như các tôi vẫn làm với các ứng dụng của tôi. Tôi đã đặt vấn đề thế này: + Access không thể có chức năng để tắt hiển thị đối với một số textbox nếu nó không chứa dữ liệu – võ đoán đúng không các bạn - chủ yếu là do tôi giả định qua kinh nghiệm. + Vì lý do như vậy tôi nghĩ đến biện pháp dùng chức năng Định dạng có điều kiện của Access [Conditional Formatting] và làm như sau: Khi báo cáo được tải vào bộ nhớ, tôi lưu lại kích thước và độ cao của các đối tượng textbox và nhãn trong báo cáo vào một mảng. Khi báo cáo bắt đầu định dạng tại phần Details, tôi kiểm tra xem nội dung gửi ra có bị trắng không, nếu không có dữ liệu thì thực hiện việc thu nhỏ đối tượng textbox và tắt hiển thị và sắp xếp lại các đối tượng textbox khác để loại bỏ khoảng trắng. Nếu đối tượng gửi ra có dữ liệu thì tôi căn cứ vào giá trị ban đầu đã lưu lại khi mở báo cáo và lại sắp xếp lại vị trí của đối tượng. Kết quả là báo cáo in ra như ý định, các khoảng không chứa dữ liệu được điền bằng dữ liệu của trường khác – và báo cáo không có những khoảng trắng vô lý. Có lẽ sẽ không có vấn đề gì cho đến khi tôi thực hiện các xử lý này trong Subreport, ban đầu báo cáo in đầy đủ đối với 1,2 bản ghi đầu, đến các bản ghi sau, báo cáo phụ không làm đúng như ý tôi nữa mặc dù báo cáo chính vẫn làm tốt những gì tôi muốn. Quả thật, sau khi tìm hiểu vấn đề mất 2 ngày, kết luận là chẳng có cách nào để chữa vẫn đề này và đành phải chấm dứt mà không có cách giải quyết. Các bạn có thấy cách tiếp cận của tôi có gì sai không, không sai gì cả mà chỉ là quá phức tạp – làm cho những ai mới với access cảm thấy buồn lòng vì tại sao một công cụ tiện lợi như thế mà chẳng làm được cái việc cỏn con ấy. Đến tận hôm nay, vâng phải sau 2 tuần tôi mới bình tĩnh và ngồi lại với nó, lục tung sách vở .... tôi chợt để ý đến cái gọi là thuộc tính CanGrow [Có thể lớn lên] và CanShrink [Có thể thu nhỏ] của các đối tượng Textbox, và các Section trong báo cáo của Access. Nó là gì? CanGrow thì chẳng có gì lạ - tôi vẫn sử dụng đặc tính này để vẽ lưới trong báo cáo, nhưng CanShrink là gì? Hình như tôi chưa bao giờ sử dụng đến nó thì phải.... Bấm F1 và xem: You can use the CanShrink property to control the appearance of sections or controls on forms and reports that are printed or previewed. For example, if you set the property to Yes, a section or control automatically adjusts vertically to print or preview all the data the section or control contains. Bạn có thể sử dụng thuộc tính CanShrink để quản lý cách hiển thị của Section hay điều khiển trên form hay báo cáo khi in ra hay in lên màn hình. Ví dụ, bạn có thể đặt thuộc tính này về Yes, đối tượng Section hay điều khiển sẽ tự động điều chỉnh theo chiều đứng để in hay hiển thị lên màn hình tất cả dữ liệu mà Section hay điều khiển đó chứa. A. Remarks You can use this property to control the appearance of printed forms and reports. When you set the property to Yes, the object automatically adjusts so any amount of data can be printed. When a control shrinks, the controls below it move up the page. If you set a control's CanShrink property to Yes, Microsoft Access does not set the section's CanShrink property to Yes. Sections shrink vertically across their entire width. For example, suppose a form has two text boxes side by side in a section, and each control has its CanShrink property set to Yes. If one text box contains one line of data and the other text box contains two lines of data, both text boxes will be two lines long because the section is sized across its entire width. To shrink the data independently, you can place two subform or subreport controls side by side, and set their CanShrink property to Yes. Chú ý: Bạn có thể sử dụng thuộc tính này để quản lý in ấn form hay báo cáo. Khi bạn đặt thuộc tính về Yes, đối tượng đó sẽ tự động điều chỉnh để hiển thị bất kỳ lượng dữ liệu nào có thể được in ra. Khi đối tượng co lại, đối tượng bên dưới sẽ dịch lên trên trong trang in. Section co theo chiều đứng theo suốt bề rộng của nó. Ví dụ, giả định một form có 2 textbox ở sát nhau trong một section, mỗi điều khiển đều có thuộc tính canshrink để ở Yes. Nếu một textbox chứa một dòng dữ liệu và cái còn lại chứa 2 dòng dữ liệu, thì cả 2 texbox sẽ hiển thị trên 2 dòng vì Section sẽ co giãn theo chiều đứng trên toàn bề rộng của nó. Để co dữ liệu một cách độc lập, bạn có thể đặt 2 subform hay subreport bên cạnh nhau và đặt thuộc tính Canshrink của chúng về Yes Bingo!... đây rồi – có nghĩa là nếu tôi để chế độ Canshrink về Yes thì hoàn toàn ổn với các đối tượng Textbox, nhưng làm sao đây nếu tôi cần phải in các nhãn – cần nhớ là các nhãn không có thuộc tính này...? Vò đầu bứt tai một hồi – tôi nghĩ ra một kế khác. Vậy thì thay vì cho các nhãn vào báo cáo, ta đặt 2 textbox cạnh nhau, một cái là unbound và để controlsource của nó là: =iif[nz[[MyText],””]=””,””,”Email”], trong đó MyText là Textbox dùng để in ra dữ liệu. Tức là nếu Textbox bên cạnh không chứa dữ liệu thì tôi cũng đưa giá trị hiển thị của textbox đóng vai trò nhãn là “” còn nếu chứa dữ liệu thì ta đưa tên nhãn của nó vào – đây là Email chẳng hạn. Cả 2 textbox này ta để thuộc tính CanGrow và CanShrink về Yes. Section chứa 2 textbox là Detail cũng có thuộc tính để ở chế độ tương tự. Và kết quả: Mỹ mãn đúng như cái tôi cần chỉ có điều tôi chẳng phải viết một dòng mã nào thay vì phải viết 2 trang mã [khoảng 90 dòng lệnh]. Các bạn thấy không - thật dễ dàng - vậy có thể tóm lại, trước một vấn đề: + Hãy xem kỹ yêu cầu, và đoán xem ta cần làm việc với thuộc tính nào ở đây là co vào và nở ra đúng không, nếu các bạn quen rồi thì sẽ hiểu ngay thuộc tính này đại lại là liên quan đến cái gì. + Bấm F1 và tìm xem có từ khoá nào liên quan đến thuộc tính ta cần, rồi đọc xem nó có thể giúp chúng ta làm được gì. + Và sau cùng nếu không có cách nào khác thì mới phải dùng đến công cụ mã nguồn. Để các bạn tiện theo dõi, tôi xin gửi theo đây tập tin ví dụ tại:

www.sfdp.net/Libs/gen/acc/AutoShrink.rar

Tiếp theo xin gửi các bạn một ví dụ sau liên quan đến Excel, sau đây là một đoạn trích buổi nói chuyện của tôi với một bạn: [[Yeucau]: Chao em DDN: Chao anh a [Yeucau]: Cho a hỏi Mình có cách nào đổi từ số cột, ví dụ như số 4 thành Cột D không vậy? Ý anh là trong lập trình, thì anh biết được cột thứ mấy, ví dụ như cột số 10 tức là cột J chẳng hạn. Ví dụ anh lập trình biết được cột hiện tại là 100 thì tương ứng với? DDN: Anh đợi em một chút] Thế các bạn sẽ định làm thế nào? Bài sau tôi sẽ đăng câu trả lời nhé!

Chúc các bạn một ngày làm việc vui vẻ.

Sửa lần cuối: 28/12/05

Toggle signature

=========================================
Lá bay xa về cuối chân trời...
=========================================

Mình tạo table nhân viên có giới tính nam/nữ trong đó nhưng không hiểu tại sao mình cứ bị lỗi như vậy hoài, mong mọi người giúp mình với.

Lỗi nào vậy?
Lỗi khi click vào hiện số 0? đó là trị của dạng Yes/No hoặc True/False để tính toán, tìm kiếm. Còn cái "nam, nũ" chỉ để hiển thị.

Lỗi giới tính đó bạn, mình làm theo hướng dẫn là: + Tạo khung giới tính trong table. + Field Name là GioiTinh. + Data Type: Yes/No. + Format: ;"Nam";"Nữ" + Sau đó tab qua Lookup chuyển từ CheckBox thành TextBox.

Mình làm theo trình tự hướng dẫn đó thì ở cột giới tính toàn là Nữ, nhấp vô thì hiện lên số 0, xóa số 0 và ghi lại Nam thì nó báo lỗi

Mình làm giống video này nè:

Làm vậy là đúng rồi.
- Format: ;"Nam";"Nữ" => vì có dấu ";" ở trước "Nam" nên máy sẽ hiểu Nam= -1, Nữ =0 - Hiển thị toàn "Nữ" vì dòng trong cột GioiTinh, Default value = 0 [0 là Nữ, -1 là Nam]

Muốn thay đổi giới tính chỉ cần gõ -1 hoặc 0.

Cho em hỏi là em dùng access 2013 , e đã làm theo thứ tự các bước nhưng mà lúc Format: ;"Nam";"Nữ" ===> Text box k hiển thị được nó toàn bị mặc định là check box thôi ạ. em k biết nó bị làm sao. [ Khi chọn text box không cho chọn, chọn rồi nó lại về check box].

Mọi ng giúp e với ạ ............ tks

Video liên quan

Chủ Đề