Computer - Communication - Control. 3C INC

 
Search
Nhiều người quan tâm
Visual Foxpro 9.0
Lập chương trình quản lý kho bằng Access?
Visual Foxpro 9 trên Windows XP SP2
Sự khác nhau giữa SQL, MySQL và SQL Server?
Câu lệnh SELECT
Giới thiệu về SQL

Cơ sở dữ liệu


In bài này Gửi bài viết này cho bạn bè
(Thứ Sáu, 25/08/2006-5:33 PM)
Lập chương trình quản lý kho bằng Access?
Hỏi: Xin hướng dẫn lập chương trình quản lý kho bằng Access. Trong phần xuất hàng có 1 textbox nhập mã hàng, tôi muốn so sánh textbox với hàng tồn kho, nếu có mã số đó thì chuyển sang mục khác, nếu không thì phải nhập lại và thông báo không có hàng. Tương tự, khi nhập số lượng xuất phải so sánh với số lượng tồn kho.

Đáp: 

Có 2 vấn đề chính mà bạn cần để ý giải quyết:

 1. Nhận biết thời điểm kiểm tra dữ liệu nhập. Nếu dùng điều khiển TextBox, bạn có thể khai báo hàm xử lý sự kiện KeyDown kết hợp với TextBox nhập liệu, trong hàm này bạn kiểm tra xem phím ấn có phải là phím Enter không (keycode=13), nếu phải thì sẽ kiểm tra tính đúng đắn của dữ liệu nhập.

 2. Truy xuất database. Có nhiều cấp độ truy xuất database khác nhau mà bạn có thể dùng:

 - Truy xuất trực tiếp vào cấu trúc vật lý file database. Đây là cách độc lập nhất, nhưng chẳng may đây là cách khó khăn và phụ thuộc vào công nghệ quản lý database, do đó tránh dùng nó.

 - Truy xuất database bằng các lệnh của ngôn ngữ đặc dụng của hệ quản trị CSDL, thí dụ bạn có thể dùng FoxPro để viết đoạn code truy xuất database. Tuy cách này không đòi hỏi phải nắm vững cấu trúc vật lý file database, nhưng nó vẫn còn phụ thuộc vào hệ quản trị CSDL.

 - Truy xuất thông qua giao tiếp ODBC (Open Database Connectivity). ODBC là giao tiếp truy xuất database chuẩn và độc lập với công nghệ quản lý database, nhờ đó code của ứng dụng không cần phải cập nhật lại mỗi khi database bị thay đổi công nghệ.

 - Truy xuất bằng DAO hay ADO, đây là giao tiếp truy xuất database theo mô hình hướng đối tượng và dựa trên ODBC để code của ứng dụng độc lập với công nghệ quản lý database. Nếu bạn viết ứng dụng trên Windows, bạn nên dùng ADO vì đây là giao tiếp truy xuất database cao cấp, an toàn, thân thiện nhất.

 Thí dụ, để giải quyết vấn đề của bạn, bạn có thể tạo 1 Form Access chứa 2 TextBox: Textbox nhập mã mặt hàng tên là txtMSMH và TextBox nhập số lượng xuất có tên là txtSLX. Hãy khai báo hàm xử lý sự kiện KeyDown trên từng TextBox (chọn textbox để hiển thị cửa sổ
Properties của nó, chọn tab “Event” trên cửa sổ thuộc tính, duyệt tìm mục OnKeyDown rồi khai báo hàm xử lý sự kiện dạng “Code Builder”) rồi viết code như sau (đoạn code dưới đây chỉ để demo ý tưởng giải quyết vấn đề):

 khai báo biến connection tương ứng với database

 Private cn As ADODB.Connection

 khai báo biến recordset chứa kết quả tìm kiếm

 Private rs As ADODB.Recordset
 
 Hàm khởi động form làm việc

 Private Sub Form_Load()

 dùng ADO connection kết hợp với database hiện hành

 Set cn = CurrentProject.AccessConnection

 tạo đối tượng ADO Recordset để dùng

 Set rs = New ADODB.Recordset

 End Sub
 
 hàm xử lý sự kiện ấn phím trên textbox nhập MSMH

 Private Sub txtMSMH_KeyDown(KeyCode As Integer, Shift As Integer)

 kiểm tra có phải ấn phím Enter

 If KeyCode <> 13 Then Exit Sub

 nếu phải bắt đầu xử lý

 With rs

 nếu đang mở Recordset thì đóng lại

 If .State = True Then .Close

 Set .ActiveConnection = cn

 khai báo câu truy vấn tìm mặt hàng có mã nhập

 .Source = “SELECT * FROM DSHTonKho where MSMH = “ & txtMSMH.Text

 .LockType = adLockOptimistic

 .CursorType = adOpenKeyset

 .Open

 End With

 kiểm tra có không

 If rs.EOF = True Then

 nếu không có thì xóa giá trị cũ và yêu cầu nhập lại

 txtMSMH.Text = “”

 MsgBox “Không có hàng có MSMH này. Hãy Nhập lại”
 thiết lập cursor nhập liệu trên TextBox nhập MSMH
 txtMSMH.SetFocus

 Else

 thiết lập cursor nhập liệu trên TextBox nhập số lượng xuất

 txtSLX.SetFocus

 End If

 End Sub

 hàm xử lý sự kiện ấn phím trên textbox nhập số lượng xuất

 Private Sub txtSLX_KeyDown(KeyCode As Integer, Shift As Integer)

 kiểm tra có phải ấn phím Enter

 If KeyCode <> 13 Then Exit Sub

 nếu phải bắt đầu kiểm tra

 giả sử field thứ i trong record chứa số lượng tồn

 If CInt(rs.Fields(i)) < CInt(txtSLX.Text) Then

 MsgBox “Không đủ số lượng xuất cho mặt hàng này. Hãy nhập lại.”

 xóa giá trị cũ và yêu cầu nhập lại

 txtSLX.Text = “”

 thiết lập cursor nhập liệu trên TextBox nhập số lượng xuất

 txtSLX.SetFocus

 End If

 End Sub

Download các phần mềm miễn phí được ưa dùng nhiều nhất

    [ Các bài mới ]
    [ Các bài đã đăng ]
    Download Unikey - PM gõ tiếng Việt phổ biến nhất
    Chương trình nhỏ gọn, free.
    Thủ thuật hay với Gmail
    Tham khảo các tính năng độc đáo có thể bạn chưa biết
     
     
     
    COMPUTER - COMMUNICATION - CONTROL 3C, INC.
    Số 6 - Láng Hạ - Ba Ðình - Hà Nội; Tel: 84.4.38312695; Fax: 84.4.38311925
    Copyright © 2005 3C INC. All rights reserved.