Đánh giá chủ đề:
  • 8 Votes - 4 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Sử dụng trường Autonumber cho hiệu quả
#1
Có rất nhiều bạn thắc mắc về autonumber, thắc mắc tại sao nó không tăng liên tục khi mình xóa 1-2 record...Sau đây xin giới thiệu 1 bài viết của nick huudung, trang fithou.net

AutoNumber, đây thực chất là 1 kiểu số có kích thước tương đương với Long Integer (hoặc Replication ID).
Autonumber khác với kiểu Number thông thường ở chỗ: giá trị của trường này được Access tự động sinh ra với mỗi bản ghi mới. cách thức sinh giá trị mới có thể là tăng dần (increment) hoặc ngẫu nhiên (random).
Mỗi khi ta sử dụng 1 giá trị của AutoNumber thì giá trị đó sẽ không bao giờ được sử dụng lại nữa. Điều này có lí do của nó: người ta thường dùng AutoNumber cho những trường khóa chính mà không cần quan tâm tới giá trị của nó, chỉ cần nó đảm bảo tính duy nhất --> muốn duy nhất thì những gì đã dùng sẽ không được dùng nữa.
Thực ra thì chẳng mấy khi ta muốn dùng lại giá trị Autonumber cũ cả, nếu muốn dùng lại thì ta nên dùng trường Number và phải tự làm việc sinh giá trị mới sao cho nó không trùng với bất kì giá trị hiện có nào (lưu ý là trong CSDL quan hệ, 1 giá trị của khóa chính có thể vẫn còn ở 1 khóa ngoại nào đó nếu ràng buộc không chặt --> dùng lại giá trị đó có thể khiến dữ liệu không đúng đắn, điều này mình đã nói trên lớp rồi nhỉ)
Nếu em vẫn muốn dùng giá trị AutoNumber tăng liên tiếp (trông cho đẹp) thì có thể làm cách sau: 1. Quay về Design Table đó 2. Delete Field autoNumber cũ đi 3. Thêm 1 Field mới, đặt kiểu dữ liệu là AutoNumber --> thế là xong nhưng cũng chỉ để cho đẹp thôi, :d lần sau lại bị như vậy big green
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn chihienphuco , tranthanhan1962
#2
* Ở phần quan hệ trước đây em cho thêm hóa đơn mới bằng Code và tăng lên +1 mỗi lần, kiểu Text định dạng (000001,000002,000003,...) cho 2 Table Hóa Đơn và Chi Tiết Hóa Đơn.
* Hiện em thiết lập lại quan hệ 2 Table bằng: AutoNumber ở Hóa Đơn - Number "interger" ở Chi Tiết Hóa Đơn, đã chạy thử rất ổn định.
Nhưng đang bị vướng ở khâu đổ dữ liệu củ vào 2 bảng này.

Mong huynh giúp đở! Cám ơn!
Chữ ký của chihienphuco Xin chào! Mình là chihienphuco, thành viên của Thủ Thuật Access tham gia ngày Oct 2010.
Reply
Những người đã cảm ơn
#3
Làm được rồi mừng quá! huynh xóa 2 bài bót dư dùm nhé.
Thanks!
Chữ ký của chihienphuco Xin chào! Mình là chihienphuco, thành viên của Thủ Thuật Access tham gia ngày Oct 2010.
Reply
Những người đã cảm ơn
#4
À mình quên nói cách giải quyết:
Thêm Field kiểu AutoNumber vào HĐ,
Thêm Field kiểu Number Interger vào CTHĐ,
Sau đó copy số mới tao ra của kiểu AutoNumber của bảng HĐ vào bảng CTHĐ bằng quan hệ củ.

Sau đó xóa quan hệ củ và thiết lập quan hệ mới giữa 2 bảng,....
Chữ ký của chihienphuco Xin chào! Mình là chihienphuco, thành viên của Thủ Thuật Access tham gia ngày Oct 2010.
Reply
Những người đã cảm ơn Noname
#5
à, theo lý thuyết thì auto number nó 4 byte , tức là hơn 4 tỷ số (tương đương long integer)
còn kiểu integer chỉ 2byte, tức là khoảng 65 ngàn dòng thôi! bạn lưu ý đặt kiểu number cho phù hợp!
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn chihienphuco
#6
điều đó là chắc chắn rồi, đây là 1 sân chơi thú vị và bổ ích, chỉ sợ kiến thức không đủ thôi, nếu biết gì mình sẽ ko giấu diễn đàn đâu,...chúng ta học tập và chia sẽ là chính mà..
Chữ ký của Sunglam Xin chào, mình là Sunglam, Tham gia http://thuthuataccess.com/forum từ ngày 30-04 -11.
Reply
Những người đã cảm ơn
#7
(01-05-11, 01:39 AM)Sunglam Đã viết: điều đó là chắc chắn rồi, đây là 1 sân chơi thú vị và bổ ích, chỉ sợ kiến thức không đủ thôi, nếu biết gì mình sẽ ko giấu diễn đàn đâu,...chúng ta học tập và chia sẽ là chính mà..
Hi all,

Mình cũng mới học access và cũng đang muốn giải quyết cái autonumber này cho nó đẹp một cách tự động. Mình đang nghĩ đến thay vì format trường này là autonumber hay number thì dùng là calculated và gán cho nó là index của record(VD TT = recordIndex). Is this possible??? Nếu được mọi người share nhé. Mình chưa biết tí cấu trúc lệnh nào.

Mình mới mò access có 2 ngày thui. Ngớ ngẩn mọi người chỉ chứ đường chém nhé -happy

Regards
Chữ ký của phamvanthanh Xin chào, mình là phamvanthanh, Tham gia http://thuthuataccess.com/forum từ ngày 30-10 -12.
Reply
Những người đã cảm ơn
#8
Như bác NoName đã nói ờ trên, Mình xin được nói thêm. Kiểu dữ liệu AutoNumber là một kiểu dữ liệu hệ thống. và hình như chỉ có hệ thống Microsoft mới sử dụng kiểu dữ liệu này trong lập trình. Các bạn sẽ không tìm thấy kiểu dữ liệu này trong C, Java, Android...
Ngay cả trong 1 table access cũng chỉ cho phép chúng ta tạo một trường duy nhất có data type là AutoNumber. Nếu các bạn không tin, cứ việc thử tạo thêm. Nói vui thôi chứ nếu các bạn tạo 2 trường AutoNumber access sẽ báo lỗi ngay.Thật ra nó chỉ là một một bộ máy tạo số giả ngẫu nhiên của hệ thống (pseudo-random number generator). Nhiệm vụ yêu cầu của nó là hỗ trợ hệ thống quản lý table của bạn. Không như những field khác. Ngay khi chúng ta tạo 1 table, access đã tạo cho ta 1 field AutoNumber rồi và đó là 1 field duy nhất. Khi chúng ta nghĩ rằng chúng ta đã tạo ra một field AutoNumber thực chất các bạn chỉ show nó ra mà thôi. Cũng còn may mắn là microsoft còn cho phép chúng ta reset lại field AutoNumber bằng các xóa đi rồi tạo lại chứ nếu không thì chúng ta cũng đành chịu. Riêng tôi thì tôi không bao giờ xử lý kiểu này. Bởi vì thông qua những khoảng trống của trường AutoNumber, người quản lý có thể biết được nhân viên nhập dữ liệu đã xóa bao nhiêu record và xóa lúc nào, để có thể kiểm tra được nhiều thứ...Còn muốn đánh số thứ tự, chúng ta có thể tạo thêm một trường khác, hoặc dùng những phương pháp khác bằng query, code, report v.v...Nói chung trường AutoNumber không phải là trường đánh số thứ tự để xem cho đẹp mà là trường hệ thống để quản lý. Có hiểu lợi ích của nó thì nới biết nó cực kỳ quan trọng. Khi thiết kế ứng dụng chúng ta có thể reset nó lại trước khi đưa vào sử dụng. Nhưng khi đã sử dụng dữ liệu thật thì nó là một trường bất khả xâm phạm 007
Chữ ký của tranthanhan1962 Đừng xấu hổ khi không biết mà hỏi. Chỉ xấu hổ khi biết mà dấu
ღღღღღTài sản của tranthanhan1962 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Minh Tiên


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
Rainbow Hướng Dẫn Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ maidinhdan 4 310 09-07-15, 01:46 PM
Bài mới nhất: Q_B
  [Help] phuoc_bhxhbl_Tạo code bậc thang Autonumber Reset maidinhdan 13 655 24-04-15, 12:56 PM
Bài mới nhất: phuoc_bhxhbl
Exclamation [Help] Cần tạo bao nhiêu Table cho yêu cầu quản lý công cụ, dụng cụ tại kho lammyphuong 7 360 23-04-15, 03:34 PM
Bài mới nhất: tranthanhan1962
  Chia phòng thi - Bỗng dưng thấy bí quá Nguyendinhthanh 0 116 03-08-14, 10:02 PM
Bài mới nhất: Nguyendinhthanh
  [Hỏi] Tìm thông tin trong trường memo tuanqtdn 4 421 14-11-13, 10:01 AM
Bài mới nhất: tuanqtdn

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)