Cách tạo mã số tự động cho field Access.

Liên hệ QC

Vũ Hoàng Phạm

Thành viên mới
Tham gia
27/9/17
Bài viết
2
Được thích
0
Giới tính
Nam
(Mình mới tham gia diễn đàn nên không biết đăng bài này vào mục nào, nếu mình đăng sai nhờ add chuyển lại dùm)
Mình đang tạo một CSDL quản lý ít thiết bị bằng cách đặt mã số thiết bị gồm: 03 chữ đầu là loại thiết bị, 03 chữ số sau là thứ tự trong loại thiết bị đó, VD: LTP001 là laptop số 1, PRT003 là máy in số 3. Mình đang cố gắng tạo một field tự động tạo Mã số thiết bị từ field Loại thiết bị, còn số thứ tự thì tự động nhảy. VD: chọn loại LTP thì sẽ tự động nhảy mã số thiết bị mới là LTP002 (vì LTP001 đã có rồi). Rất mong mọi người giúp đỡ!
 
Bạn tham khảo cách mà mình xử vụ này trong Excel:
Ví dụ ta có bảng ghi các loại phie1u ở cột B, như


Số Phiếu
T0012
T0201
T0051
C0012
C0009
C0010
C0001
N0021
N0100
N0210
X0001
X0009
X0024

Việc tìm ra số phiếu tiếp theo sẽ là:
PHP:
Sub TimSoFieuCaoNhatThuocLoai()
 Dim Rng As Range, sRng As Range, NumMax As Long, Tmp As Long
 Dim MyAdd As String, Loai As String
 
 Set Rng = Range([B1], [B1].End(xlDown))
 Loai = InputBox("Nhâp Loai Phiêu Cân Tìm", "N, X, T, C", "GPE")
 Set sRng = Rng.Find(Loai, , xlFormulas, xlPart)
 If Not sRng Is Nothing Then
    MyAdd = sRng.Address
    Do
        Tmp = CLng(Mid(sRng.Value, 2, 5))
        If Tmp > NumMax Then
            NumMax = Tmp
        End If
        Set sRng = Rng.FindNext(sRng)
    Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
 End If
 MsgBox "Sô Phiêu Tiêp Se Là:  " & Loai & Right("000" & CStr(NumMax + 1), 4)
End Sub

Mong hữu ích với bạn ít nhiều!
 
(Mình mới tham gia diễn đàn nên không biết đăng bài này vào mục nào, nếu mình đăng sai nhờ add chuyển lại dùm)
Mình đang tạo một CSDL quản lý ít thiết bị bằng cách đặt mã số thiết bị gồm: 03 chữ đầu là loại thiết bị, 03 chữ số sau là thứ tự trong loại thiết bị đó, VD: LTP001 là laptop số 1, PRT003 là máy in số 3. Mình đang cố gắng tạo một field tự động tạo Mã số thiết bị từ field Loại thiết bị, còn số thứ tự thì tự động nhảy. VD: chọn loại LTP thì sẽ tự động nhảy mã số thiết bị mới là LTP002 (vì LTP001 đã có rồi). Rất mong mọi người giúp đỡ!
trên acccess thì bạn phải dùng query xác định mã cuối được đánh bằng hàm max với đièu kiện, sau đó bạn mổ sẻ rồi tăng lên 1 thôi.
 
Giải thuật thì giống như bác SA_DQquanluu1989 đã để cập, đây là cái hàm tôi hay dùng trong Access. Bạn sửa lại theo tên Table, tên Field của bạn.
Giả định:
- Tên Table là: tblDMThietBi
- Tên trường (field) mã thiết bị là: [MaTB]
- Trong table DM thiết bị tất yếu phải có 1 trường lưu thiết bị thuộc nhóm/loại nào: [NhomTB]. Ví dụ: LPT - Laptop; PRT - Printer.
- Trong form nhập liệu tất yếu phải có 1 combobox để chọn Nhóm thiết bị: [cboNhomTB]

Mã:
Function TaoMaTB() As String
    Dim rs As DAO.Recordset
    Dim sSQL As String
    Dim Stt As Long

    sSQL = "SELECT Max(Clng(Right([MaPN],3))) As SttMax FROM tblDMThietBi WHERE [NhomTB]='" & Me.cboNhomTB & "'"
    Set rs = DBEngine(0)(0).OpenRecordset(sSQL, dbOpenSnapshot)

    If IsNull(rs!SttMax) Then
        Stt = 1
    Else
        Stt = rs!SttMax + 1
    End If
    TaoMaTB = Me.[cboNhomTB] & Right("000" & Stt, 3)

    rs.Close
    Set rs = Nothing
End Function
 
Lần chỉnh sửa cuối:
Bạn có biết chuẩn hoá CSDL LH (normalisation/zation) là gì hôn? Hay là CSDL không cần chuẩn?
 
Web KT

Bài viết mới nhất

Back
Top Bottom