• Thứ Sáu, 16/11/2007 08:35 (GMT+7)

    Sinh mã tự động trong Access

    Câu hỏi :

    Tôi quản lý một cơ sở dữ liệu bằng Access XP, trong đó trường ID là một trường số (tôi không muốn dùng chức năng auto). Khi nhập liệu có một vấn đề đó là nhập trùng số ID đã có. Xin hướng dẫn thiết lập để khi nhập record mới, trường ID được máy tự động điền số tiếp theo số ID của bản ghi cuối cùng, nếu người dùng nhập ID bị trùng thì hiển thị thông báo cho người dùng biết để nhập lại ID khác.


     



    Trả lời :

    Muốn máy điền giúp tự động trường ID bằng với giá trị đi sau record cuối cùng trong table, bạn chỉ cần nhớ số lượng record hiện hành của table, mỗi lần hiển thị form nhập liệu, bạn tăng giá trị của biến số lượng lên 1 đơn vị rồi hiển thị lên đối tượng nhập liệu tương ứng. Cụ thể nếu bạn dùng biến RecCount để nhớ số lượng record, Textbox tên là txtID để hiển thị và nhập giá trị cho field ID của record mới cần thêm, bạn có thể viết đoạn code VB .Net như sau:


     ‘hiển thị ID do chương trình đề nghị
     RecCount = RecCount +1
     txtID.Text = RecCount

    Nếu người dùng nhập lại giá trị ID, rất có thể giá trị nhập sẽ trùng với giá trị ID của record đã có sẵn trong table, do đó nhiệm vụ của ứng dụng là phải kiểm tra cẩn thận sự trùng lặp này, nếu nó trùng thì báo lỗi. Giả sử bạn dùng button tên là btnAdd để ra lệnh thêm record mới với các field đã nhập (trong đó có field ID trong TextBox txtID), thì thủ tục xử lý thêm record mới có thể được viết như sau bằng VB .Net:

     ‘ thủ tục click button Nhập
     Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNhap.Click
     MyCommand.CommandText = “SELECT * FROM yourtable where ID = “ & txtID.Text
     MyDataReader = MyCommand.ExecuteReader()
     ‘kiểm tra xem ID cần thêm có chưa
     If Not MyDataReader.Read() Then
     ‘Nếu chưa có thì thêm 1 record mới
     MyDataReader.Close()
     MyCommand.CommandText = “INSERT INTO yourtable VALUES( “ & txtID.Text
     ‘ & giá trị các field còn lại
     MyCommand.ExecuteNonQuery()
     Else
     MsgBox “ID đã có rồi, hãy thay đổi giá trị khác”
     End If
     MyDataReader.Close()
     End Sub


     Lưu ý rằng biến MyCommand thuộc kiểu OdbcCommand và đã được khởi tạo để làm việc với database của bạn.

    Chuyên mục: Cơ sở dữ liệu