Tìm trong:Webe-CHÍP

Bộ gõ (kiểu Vni/Telex/Viqr)Tắt (Alt+T)Mở (Alt+M)

 
Trang chủ ĐÓ HỎI, ĐÂY TRẢ LỜI TT 328

Tra cứu bài thuốc bằng Access

Đó hỏi: Tôi muốn viết một chương trình tra cứu bài thuốc bằng Access giống như chương trình từ điển Lạc Việt, trong đó có 2 textbox, một để nhập từ cần tra bằng bàn phím, còn một để trình bày ý nghĩa của từ cần tra và 1 listbox chứa danh sách từ dùng cho những người thích dùng chuột. Làm cách nào để khi nhập một ký tự nào đó vào ô textbox của từ cần tra thì trong listbox xuất hiện một vệt sáng tại từ giống (hoặc gần giống) với từ vừa nhập, và khi nhấn phím Enter hoặc nhấp đúp chuột vào từ này thì nội dung của từ xuất hiện ở textbox còn lại, đồng thời từ này cũng xuất hiện ở ô textbox của từ cần tra?

<tongthanhnguyen@>

Đây trả lời: Trong Access, không thể dùng các hàm API SendMessageByString và SendMessage cho một listbox hoặc combobox như trong Visual Basic vì listbox trong Access không có thuộc tính Hwnd. Tuy nhiên, có một cách khác rất đơn giản:

Bước 1: Tạo query có tên qryDanhSachBaiThuoc (hình 1). Query này là danh sách tất cả các bài thuốc có trong table tbBaiThuoc. Mỗi lần người sử dụng gõ từ cần tra thì hàm DLookup sẽ dò tìm trong query để chọn ra tên bài thuốc gần đúng nhất.


Hình 1: Query cần thiết kế

Bước 2: Tạo form có tên subfrmBaiThuoc với thuộc tính Record Source là tbBaiThuoc (để lấy dữ kiện từ table tbBaiThuoc) và chỉ có một textbox tên NDBaiThuoc với thuộc tính Control Source là NDBaiThuoc (để lấy dữ kiện từ field NDBaiThuoc).

Bước 3: Tạo form có tên frmBaiThuoc (hình 2) có một textbox tên txtTenBaiThuoc, một listbox tên lstTenBaiThuoc với thuộc tính Row Source Type là Table/Query, và thuộc tính Row Source là


Hình 2: Form cần thiết kế

            SELECT tbBaiThuoc.TenBaiThuoc FROM tbBaiThuoc ORDER BY
                   tbBaiThuoc.TenBaiThuoc;

Vẽ thêm một checkbox có tên chkChinhXac để người sử dụng có thể chọn lựa cách thức tra từ có phân biệt chữ thường, chữ hoa hay không. Cuối cùng, để người sử dụng có thể bấm vào một mục trong listbox để hiển thị nội dung trong khung kế bên, bạn vẽ một subform có thuộc tính Source Object là subfrmBaiThuoc, thuộc tính Link Child Fields là TenBaiThuoc và thuộc tính Link Master Fields là lstTenBaiThuoc.
Bước 4: Với form frmBaiThuoc, trong cửa sổ Properties, lần lượt chọn các tình huống On Open của form và On Change của textbox txtTenBaiThuoc để gõ vào các thủ tục như đoạn mã 1. Khi mở form frmBaiThuoc, nó có dạng như hình 3.

Đoạn mã 1
Private Sub Form_Open(Cancel As Integer)
  chkChinhXac = False   ‘ Mặc định chưa đánh dấu chọn
End Sub
Private Sub txtTenBaiThuoc_Change()
  Dim sTenBaiThuoc As Variant     ‘ Phải là kiểu Variant
  If chkChinhXac Then
    sTenBaiThuoc = DLookup("[TenBaiThuoc]", "qryDanhSachBaiThuoc", _
    "InStr(1,[TenBaiThuoc],Forms!frmBaiThuoc!txtTenBaiThuoc.Text,0)>0")
  Else
    sTenBaiThuoc = DLookup("[TenBaiThuoc]", "qryDanhSachBaiThuoc", _
    "InStr(1,[TenBaiThuoc],Forms!frmBaiThuoc!txtTenBaiThuoc.Text,1)>0")
  End If
  If Not IsNull(sTenBaiThuoc) Then
    lstTenBaiThuoc.Value = sTenBaiThuoc
  End If
End Sub


Hình 3: Form lúc chạy

CHƯƠNG CAN CHÍP

Tự động đăng nhập (auto-logon) Windows Vista

Đó hỏi: Tôi muốn mỗi lần khởi động máy là Windows Vista tự động log in, không phải mất công nhập user name và password nhưng không biết cách làm. e-CHÍP hãy giúp tôi.

<batong@>

Đây trả lời: Để Windows Vista tự động đăng nhập, bạn làm theo các bước dưới đây.
1. Bấm Start > gõ netplwiz vào khung Start Search > bấm Enter.
2. Trong cửa sổ User Account, bỏ dấu chọn mục Users must enter a username and password to use this computer > chọn account muốn cho đăng nhập tự động > bấm nút Apply.
3. Trong hộp thoại Automatically Log On, nhập 2 lần password giống nhau (nếu không có xác lập password thì bỏ trống) > bấm OK 2 lần để thoát.

LÊ HOÀN

[Đầu trang]