- Private Function generateCode() As String
- Dim iCount As Integer
- Dim sQuery As String, Scode As String
- 'khoi tao gia tri ban dau cho count va sCode
- iCount = 1: Scode = "pc" + Format(iCount, "0000") 'pc0001
- 'kiem tra chung nao ma tao dc khong ton tai thi tra ve gia tri nay
- While mdlMain.kiemtratrung("PHIEU", "SoPhieu", Scode)
- iCount = iCount + 1: Scode = "pc" + Format(iCount, "0000") 'pc0003
- Wend
- generateCode = Scode
- End Function
- Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
- Tìm kiếm trước khi đặt câu hỏi
Thêm mã tự động tăng dần
Điều hành viên: tungblt
-
- Thành viên năng nổ
- Bài viết: 77
- Ngày tham gia: T.Năm 20/08/2009 8:52 am
Thêm mã tự động tăng dần
CSDL Access gồm 2 trường (Maphutung, tenphutung). Trên form của em gồm 1 textbox txtTenphutung và một nút lệnh cmdthem.
Khi cho em hỏi viết code như thế nào để bấm vào nút lệnh cmdthem. Thì tự động ở trường Maphutung sẽ tự động tạo ra một record có Maphutung tăng lệnh 1 đơn vị. (Tức là lấy Mã lớn nhất cộng thêm 1 đơn vị).
Ví dụ: Trong CSDL ban đầu có: PT0002, PT0003. Khi bấm vào nút thêm trong CSDL sẽ có thêm một mã mới PT0004.
Khi cho em hỏi viết code như thế nào để bấm vào nút lệnh cmdthem. Thì tự động ở trường Maphutung sẽ tự động tạo ra một record có Maphutung tăng lệnh 1 đơn vị. (Tức là lấy Mã lớn nhất cộng thêm 1 đơn vị).
Ví dụ: Trong CSDL ban đầu có: PT0002, PT0003. Khi bấm vào nút thêm trong CSDL sẽ có thêm một mã mới PT0004.
-
- Guru
- Bài viết: 448
- Ngày tham gia: T.Hai 13/10/2008 3:12 pm
- Đến từ: Dĩ An - Bình Dương
- Been thanked: 32 time
Re: Thêm mã tự động tăng dần
Mã: Chọn hết
- Private Sub cmdThem_Click()
- Dim rsSPmax As New ADODB.Recordset
- '-----------------------------------------'
- ' lay max Maphutung cuoi cung tang len 1 '
- '-----------------------------------------'
- rsSPmax.Open "SELECT max(right(Maphutung,4)) as SPmax FROM Table", cn, adOpenKeyset, adLockOptimistic, adCmdText
- txtMaphutung.Text = "PT" + Right(("0000" + CStr(rsSPmax.Fields("SPmax") + 1)), 4)
- ........
- rsSPmax.Close
- End Sub
Dạo này nghiện honda SS50
Re: Thêm mã tự động tăng dần
bài của anh boy1234 hay thật,đúng là đang cần cái này,
nhưng anh cho e hỏi
làm theo cách của anh thì khi xóa Mã vẫn cứ tự tăng
VD: có 6 mã 001,002,003,004,005,006,khi xóa 001,002 thì khi ghi cái mới là :007
vậy có cách nào khi ghi nó sẽ là 001,002 không? vì 001,002 bị xóa rồi mà:D
câu hỏi có ngu ngơ quá không nhỉ
nhưng anh cho e hỏi
làm theo cách của anh thì khi xóa Mã vẫn cứ tự tăng
VD: có 6 mã 001,002,003,004,005,006,khi xóa 001,002 thì khi ghi cái mới là :007
vậy có cách nào khi ghi nó sẽ là 001,002 không? vì 001,002 bị xóa rồi mà:D
câu hỏi có ngu ngơ quá không nhỉ
Mr Hung
-
- Guru
- Bài viết: 448
- Ngày tham gia: T.Hai 13/10/2008 3:12 pm
- Đến từ: Dĩ An - Bình Dương
- Been thanked: 32 time
Re: Thêm mã tự động tăng dần
Chắc được đó bạn. Nên đưa giá trị Max ra Textbox rồi sửa theo mã đã xóa trước đó xong Update vào Database chắc được!
Dạo này nghiện honda SS50
Re: Thêm mã tự động tăng dần
boy1234 đã viết:Chắc được đó bạn. Nên đưa giá trị Max ra Textbox rồi sửa theo mã đã xóa trước đó xong Update vào Database chắc được!
a nói vậy nghĩa là như thế nào?
a có thể nói rõ và code ví dụ không?
Mr Hung
- skatervn
- Thành viên danh dự
- Bài viết: 181
- Ngày tham gia: T.Tư 16/04/2008 9:44 am
- Đến từ: Đà Nẵng
- Been thanked: 2 time
Re: Thêm mã tự động tăng dần
tieuyeu đã viết:bài của anh boy1234 hay thật,đúng là đang cần cái này,
nhưng anh cho e hỏi
làm theo cách của anh thì khi xóa Mã vẫn cứ tự tăng
VD: có 6 mã 001,002,003,004,005,006,khi xóa 001,002 thì khi ghi cái mới là :007
vậy có cách nào khi ghi nó sẽ là 001,002 không? vì 001,002 bị xóa rồi mà:D
câu hỏi có ngu ngơ quá không nhỉ
Vậy bạn có thể tham khảo đoạn code sau của mình:
Mã: Chọn hết
-
- Private Function generateCode() As String
- Dim iCount As Integer
- Dim sQuery As String, Scode As String
- 'khoi tao gia tri ban dau cho count va sCode
- iCount = 1: Scode = "pc" + Format(iCount, "0000") 'pc0001
- 'kiem tra chung nao ma tao dc khong ton tai thi tra ve gia tri nay
- While mdlMain.kiemtratrung("PHIEU", "SoPhieu", Scode)
- iCount = iCount + 1: Scode = "pc" + Format(iCount, "0000") 'pc0003
- Wend
- generateCode = Scode
- End Function
-
- Public Function kiemtratrung(tableName As String, fielName As String, value As String) As Boolean
- 'On Error Resume Next
- Dim rt As Boolean: rt = False
-
- cn.Open mdlMain.sChuoiKetNoi
- rs.Open "select * from " & tableName & " where " & fielName & "='" & value & "'", cn, adOpenStatic, adLockOptimistic
- If Not (rs.EOF And rs.BOF) Then
- rt = True
- End If
- rs.Close
- cn.Close
-
- kiemtratrung = rt
- End Function
-
Re: Thêm mã tự động tăng dần
a cho e hỏi thế gán giá trị vào text chỗ nào?
trong
không thấy chỗ nào gán
txtma=?
e ko biết nên hỏi,mong a trả lời,còn như anh boy1234 thì e làm được rồi
trong
Mã: Chọn hết
không thấy chỗ nào gán
txtma=?
e ko biết nên hỏi,mong a trả lời,còn như anh boy1234 thì e làm được rồi
Mr Hung
-
- Thành viên năng nổ
- Bài viết: 77
- Ngày tham gia: T.Năm 20/08/2009 8:52 am
Re: Thêm mã tự động tăng dần
Vậy lở hỏi rồi,cho em hỏi thêm một ý nửa nhé !.
Giả sử ta nhập mã PT0001,PT0002,PT0003. Nếu ta xóa PT0003. Thì khi thêm vào Record mới thì là PT0004, PT0005,... (nghĩa là PT0003 không tồn tại, nhưng trước đó đã có trong CSDL thì không thể có nữa).
Giả sử ta nhập mã PT0001,PT0002,PT0003. Nếu ta xóa PT0003. Thì khi thêm vào Record mới thì là PT0004, PT0005,... (nghĩa là PT0003 không tồn tại, nhưng trước đó đã có trong CSDL thì không thể có nữa).
- truongphu
- VIP
- Bài viết: 4763
- Ngày tham gia: CN 04/11/2007 10:57 am
- Đến từ: Cam Đức, Khánh hòa
- Has thanked: 14 time
- Been thanked: 515 time
Re: Thêm mã tự động tăng dần
Tặng các bạn Project Trùng Mã
Mã: Chọn hết
- Dim Con As Object
- Dim Rec As Object
-
- Private Sub Form_Load()
- Set Con = CreateObject("ADODB.Connection")
- Set Rec = CreateObject("ADODB.Recordset")
- Con.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\db1.mdb"
- Rec.CursorLocation = 3
- Rec.Open "Select * From Table1", Con, 3, 3
- Set DataGrid1.DataSource = Rec
- End Sub
-
- Private Function generateCode() As String
- Dim iCount As Integer, Scode As String
- 'khoi tao gia tri ban dau cho count va sCode
- iCount = 1: Scode = "PC" & Format(iCount, "00000")
- 'kiem tra chung nao ma tao dc khong ton tai thi tra ve gia tri nay
- While TrungMa("SBD", Scode)
- iCount = iCount + 1: Scode = "PC" & Format(iCount, "00000")
- Wend
- generateCode = Scode
- End Function
-
- Public Function TrungMa(Field As String, Value As String) As Boolean
- Rec.movefirst
- Rec.Find "" & Field & " = '" & Value & "'" & ""
- If Rec.EOF Then TrungMa = False Else TrungMa = True
- End Function
-
- Private Sub Command1_Click()
- Text1 = generateCode
- End Sub
-
- Private Sub Command2_Click()
- If Text1 = "" Then Exit Sub
- Rec.AddNew
- Rec!SBD = Text1
- Rec.Update
- Text1 = ""
- End Sub
-
- Private Sub Command3_Click()
- Rec.Delete
- End Sub
-
- Tập tin đính kèm
-
- KT Trùng Mã.rar
- (9.03 KiB) Đã tải 556 lần
- skatervn
- Thành viên danh dự
- Bài viết: 181
- Ngày tham gia: T.Tư 16/04/2008 9:44 am
- Đến từ: Đà Nẵng
- Been thanked: 2 time
Re: Thêm mã tự động tăng dần
Hi bạn đọc lại code của mình tí nữa là hiểu mà(hoặc như bác Phú ví dụ cụ thể luôn rồi đó). Ah sẵn đây thank bác Phú vì học hỏi thêm đc một số code trong phần kiểm tra trùng của bác nha.
Code của bạn boy1234 là thêm lần lượt PT1,Pt2,..Ptn và cứ tịnh tiến như thế
Còn của mình là có thể chêm lỗ nếu có phát sinh. Ví như mất pt3, thì khi thêm mới nó sẽ mang giá trị là pt3.
Chúc bạn thành công!
Code của bạn boy1234 là thêm lần lượt PT1,Pt2,..Ptn và cứ tịnh tiến như thế
Còn của mình là có thể chêm lỗ nếu có phát sinh. Ví như mất pt3, thì khi thêm mới nó sẽ mang giá trị là pt3.
Chúc bạn thành công!
Re: Thêm mã tự động tăng dần
bác phú cho em hỏi cái cho Rec.Open "Select * From Table1", Con, 3, 3
trong đó 2 số 3, 3 la cái gi vậy
trong đó 2 số 3, 3 la cái gi vậy
Re: Thêm mã tự động tăng dần
cái của bác phú mắc một nỗi rùi là khi trong CSDL chua chó dữ liệu thi nó sẽ báo lỗi ngay
- NXK1138
- Thành viên năng nổ
- Bài viết: 88
- Ngày tham gia: T.Sáu 19/03/2010 1:29 pm
- Has thanked: 2 time
- Been thanked: 2 time
Re: Thêm mã tự động tăng dần
Theo mình thì ý tưởng của việc này như sau:
Lấy tổng số mã phụ tùng trong bảng CSDL cộng thêm 1 đơn vị.
SoPT=Rec.RecordCount +1
Sau đó dùng For i = SoPT To 1 Step -1 gán mã phụ tùng MaPT="PT" & Format(SoPT, "00000") rồi kiểm tra ngược lại xem đã có trong CSDL chưa?
Nếu chưa có thì dùng mã đó.Còn không, khi i=1 tức là các mã đều có trong CSDL rồi thì tăng thêm một đơn vị nữa bằng cách lấy MaPT="PT" & Format(SoPT+1, "00000")
Lấy tổng số mã phụ tùng trong bảng CSDL cộng thêm 1 đơn vị.
SoPT=Rec.RecordCount +1
Sau đó dùng For i = SoPT To 1 Step -1 gán mã phụ tùng MaPT="PT" & Format(SoPT, "00000") rồi kiểm tra ngược lại xem đã có trong CSDL chưa?
Nếu chưa có thì dùng mã đó.Còn không, khi i=1 tức là các mã đều có trong CSDL rồi thì tăng thêm một đơn vị nữa bằng cách lấy MaPT="PT" & Format(SoPT+1, "00000")
Re: Thêm mã tự động tăng dần
Mình không phải chuyên tin, chỉ biết một chút ít về form access thôi, mình đang muốn lập mã phiếu tăng dần (dạng text), mã này sẽ tăng thêm 1 số so với bản ghi vừa nhập trước đó! Bạn nào cho mình xin đoạn lệnh được không?
Quay về “Visual Basic 6 và Visual Basic Script (VB & VBS)”
Đang trực tuyến
Đang xem chuyên mục này: Không có thành viên nào trực tuyến. và 7 khách