• 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

Tạo ID tự động có 8 chữ số

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Điều hành viên: tungblt, vuathongtin

GiaGia
Bài viết: 1
Ngày tham gia: T.Sáu 27/05/2016 9:31 am

Tạo ID tự động có 8 chữ số

Gửi bàigửi bởi GiaGia » T.Sáu 27/05/2016 9:39 am

Mình cần tạo bảng có ID tự động có 8 chữ số và khi mình thêm dữ liệu vào table thì id này phải tạo ra sẳn rôi
Id tạo ra sẽ có 8 chữ số khác nhau không theo trật tự
VD :id đầu tiên tạo ra 67294351 thì id tiếp theo sẽ là 26719435 chẳng hặn và nó phải là duy nhất
Mọi người ai biết giúp mình với.please!!! [-O< [-O< [-O<



Hình đại diện của người dùng
xuanquy_th
Guru
Guru
Bài viết: 798
Ngày tham gia: T.Ba 05/08/2008 9:15 pm
Đến từ: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 time
Liên hệ:

Re: Tạo ID tự động có 8 chữ số

Gửi bàigửi bởi xuanquy_th » T.Tư 08/06/2016 1:57 am

Bạn có thể thử cái này

Mã: Chọn hết

Dim tbl As New DataTable
        tbl.Columns.Add("ID", GetType(System.Guid))
        tbl.Columns.Add("VAL", GetType(System.Single))
        tbl.Rows.Add(Guid.NewGuid(), Rnd)
        tbl.Rows.Add(Guid.NewGuid(), Rnd)
        tbl.Rows.Add(Guid.NewGuid(), Rnd)
Khi Chúa Trời đóng cánh cửa này lại, Ngài sẽ mở một cánh cửa khác cho ta.
Nhưng ta thường nhìn quá lâu vào cánh cửa đã đóng nên không thấy được có một cánh cửa khác đang mở ra cho ta!!!

NetBaoNgoc
Thành viên chính thức
Thành viên chính thức
Bài viết: 20
Ngày tham gia: T.Ba 06/12/2016 12:02 pm
Been thanked: 1 time
Liên hệ:

Re: Tạo ID tự động có 8 chữ số

Gửi bàigửi bởi NetBaoNgoc » T.Ba 06/12/2016 8:39 pm

Tạo ra ID như vậy không khó ,nhưng theo logic mà nói thì ngẫu nhiên cũng có thể bị trùng lặp lại khi thời gian là vĩnh hằng .
Với việc tạo ra một CSDL và lấy ID làm khóa chính thì nó sẽ hiển nhiên là duy nhất vì khi trùng lắp sẽ bị báo lỗi .
Vậy nên tốt nhất là bạn nên tạo ra cái ID tự động nhưng dựa theo thời gian thực , nghĩa là cái ID đó chứa các con số liên quan đến thời điểm mà bạn tạo ra nên mặc nhiên nó sẽ là duy nhất và 100% không bị trùng lặp dù thời gian = vĩnh hằng .
Ví dụ cụ thể : ID được bạn tạo ra lúc 08:24:15 vào ngày 06/12/2016 sẽ là :20161206082415 thì mặc nhiên nó sẽ là duy nhất .
Vậy thì CSDL có 1 tỷ tỷ dòng và thời gian vô tận thì nó vẫn là duy nhất .
Còn cái phần code thì dễ vô cùng .

Hình đại diện của người dùng
vietteiv
Quản trị
Quản trị
Bài viết: 1323
Ngày tham gia: T.Bảy 10/02/2007 12:17 am
Đến từ: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 time
Been thanked: 71 time
Liên hệ:

Re: Tạo ID tự động có 8 chữ số

Gửi bàigửi bởi vietteiv » T.Ba 20/12/2016 11:07 pm

nếu cấu hình máy tính của bạn đủ mạnh thì có khả năng khi lấy ID cho 20 chục dòng record thì con số 20161206082415 vẫn sẽ bị trùng nhé. trừ phi chơi theo kiểu lấy được ID nào thì lưu xuống table, rồi lại lấy lên +1. như vậy rất là dở

mình tạo ID theo thời gian thực và kết hợp với System.Guid

Mã: Chọn hết

Dim timeStamp As String = (DateTime.Now).ToString("yyyyMMddHHmmss")
        Dim str As String = Guid.NewGuid().ToString().Split("-").First().ToString.ToUpper
        Return String.Format("{0}{1}_{2}", _Kytudau, timeStamp, str).Trim
       


laptop mình 8GB Ram chạy thử lấy dữ liệu từ excel vào thì cái ID 20161220225911 bị trùng từ trên xuống dưới luôn nè :D
Tập tin đính kèm
2016-12-20_22-59-56.png

cuongdoannhat
Thành viên chính thức
Thành viên chính thức
Bài viết: 16
Ngày tham gia: CN 22/09/2013 1:43 am
Been thanked: 8 time

Re: Tạo ID tự động có 8 chữ số

Gửi bàigửi bởi cuongdoannhat » T.Tư 28/12/2016 10:34 pm

Nếu máy tính bị sai lệch thời gian thì sao nhỉ? Chắc buộc người dùng kiểm tra thời gian khi sử dụng app mới xong được


Quay về “Visual Basic .NET và C# (VB.NET & C#)”

Đ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.5 khách