Làm cách nào để đặt giá trị đầu tiên của AutoNumber trong Access?


9

Tôi không cần đặt lại giá trị AutoNumber như câu hỏi này , nhưng trước tiên tôi muốn đặt số thành:

1001

Mà sau đó tăng như bình thường:

1001

1002

1003

...

Làm cách nào để thực hiện việc này trong Access 2010?


5
Không phải là một câu trả lời, nhưng một cảnh báo: Autonumber không được thiết kế để được quản lý theo cách này. Tôi đã thấy vô số người thử nó. Nó không bao giờ hoạt động bởi vì DB sẽ làm những điều kỳ lạ tăng lên đôi khi (viết thất bại vẫn tăng số lượng, ví dụ). Autonumber không đảm bảo rằng các số kỷ lục sẽ liên tiếp. Thật vậy, trong những trường hợp hiếm hoi, nó thậm chí sẽ không đảm bảo con số sẽ là duy nhất. Nó rất hữu ích để tạo khóa chính cho một bảng nhỏ. Đó là một chút rủi ro cho các bàn lớn. Thật tuyệt vời khi sử dụng như một trường dữ liệu thực tế. Anh ta
Bacon Bits

@BaconBits ... AutoNumber được dùng để làm gì?
James Mertz

Phần còn lại của bình luận của @ BaconBits: bạn sẽ thấy những bài viết như thế này khi có thứ gì đó hình quả lê vì mọi người mong đợi Autonumber là thứ gì đó không phải. Nếu bạn cần tạo số theo cách này, hãy viết các truy vấn và như vậy trong DB để tự thực hiện đúng.
Stack Overflow đã chết vào

Câu trả lời:


16

Mặc dù Access không cung cấp chức năng này một cách tự nhiên, nhưng nó có thể đạt được thông qua một truy vấn, như sau:

CREATE TABLE TableThatIncrements
(
Id AUTOINCREMENT(1001,1)
)

Điều này sẽ tạo ra một bảng duy nhất gọi là "TableThatIncrements" với một cột duy nhất, được đặt tên là "Id". Bây giờ bạn có thể sử dụng trình soạn thảo bảng để thêm thuộc tính và / hoặc các cột khác.

Thay đổi

AUTOINCREMENT(x,y)

để phù hợp với nhu cầu của bạn, xsố gia tăng ban đầu ở đâu và ylà số tăng theo. Vì vậy, AUTOINCREMENT(100,5)sẽ mang lại: 100, 105, 110, 115, v.v.

Nếu bạn muốn thay đổi bảng hiện có, hãy sử dụng truy vấn sau. Đảm bảo rằng tab của bảng cụ thể được đóng để Access có thể khóa nó và thay đổi nó.

ALTER TABLE TableThatIncrements
   ALTER COLUMN Id AUTOINCREMENT(1001,1)

Bạn có thể chạy truy vấn trong Access bằng cách thực hiện như sau:

  1. Chuyển đến tab "Tạo" và nhấp vào "Thiết kế truy vấn"
    nhập mô tả hình ảnh ở đây

  2. Chỉ cần đóng cửa sổ xuất hiện yêu cầu bạn chọn bảng, chúng tôi không cần điều đó.

  3. Chuyển đến tab "Thiết kế" và nhấp vào nút bằng mũi tên cho đến khi bạn nhận được màn hình nhập văn bản. (Theo mặc định, nó nói SELECT;).
    nhập mô tả hình ảnh ở đây

  4. Xóa văn bản mặc định và dán truy vấn trên.

  5. Nhấp vào "Chạy".
    nhập mô tả hình ảnh ở đây


câu trả lời tốt, nhưng điều đó tạo ra một bảng mới ... hoặc tôi sai? Điều này có thể được thực hiện trong một bảng đã được tạo?
James Mertz

@KronoS Cập nhật câu trả lời của tôi
Stack Overflow đã chết vào

2

1- Tạo bảng1 2- Đi để tạo -------> truy vấn thiết kế. 3- Đóng bảng 4- Chuyển đến SQl từ trên. 5- Quá khứ mã này.

ALTER TABLE [TABLE1] ALTER COLUMN [Id] COUNTER (8982,1)


Điều này dường như giống với câu trả lời được chấp nhận ngoại trừ việc sử dụng một từ khóa khác (và một từ khóa khác được định dạng tốt hơn nhiều ). Là câu trả lời của bạn thực sự khác nhau? Bạn có thể giải thích như thế nào? Là câu trả lời của bạn tốt hơn? Tại sao? Xin vui lòng không trả lời trong các ý kiến; chỉnh sửa câu trả lời của bạn để làm cho nó rõ ràng và đầy đủ hơn.
Scott

@Scott Trên thực tế chúng có một chút khác biệt: ALTER COLUMN Id AUTOINCREMENT (1001,1) và ALTER COLUMN [Id] COUNTER (8982,1) xem từ AUTOINCREMENT và COUNTER nhưng cả hai đều hoạt động như mong đợi
willy wonka

1
@willyw: Phải; Tôi đã nói rằng, cùng một loại trừ trừ việc sử dụng một từ khóa khác nhau .
Scott

@Scott ops vâng bạn đúng ... Tôi đã đọc quá nhanh xin lỗi ;-)
willy wonka

1

Trang web này có một cách rất đơn giản để bắt đầu số tự động của bạn với bất kỳ số nào bạn muốn: http://www.fmsinc.com/microsoftaccess/AutoNumber%20Field/Creating.asp

Bạn tạo một truy vấn với một biểu thức cho biết trường số tự động thay đổi

"Đầu tiên, chạy truy vấn này:

XÁC NHẬN VÀO tblName (ID) CHỌN 999 NHƯ Expr1

Trong đó tblName là tên bảng và ID là tên của trường AutoNumber.

Sau đó, chạy truy vấn thứ hai để xóa hàng mà bạn đã chèn:

XÓA TỪ TblName WHERE ID = 999;

(Ngoài ra, bạn có thể chỉ cần mở bảng và xóa thủ công hàng bạn đã chèn.)

Bây giờ, bản ghi tiếp theo được thêm vào bảng được gán giá trị 1000.

Phương pháp này hoạt động với một bảng mới hoặc với một bảng mà AutoNumber chưa đạt đến giá trị Seed. (Tất nhiên, trường ID cho các hàng hiện tại sẽ không bị thay đổi, nhưng các hàng tiếp theo sẽ bắt đầu bằng 1000.) "


0

Bạn phải lừa Access vì nó cho rằng bạn không quan tâm đến số tự động khác với cái mà nó cung cấp.

Bạn sẽ cần bắt đầu bảng với autonumber tùy chỉnh, sẽ yêu cầu một số thiết lập. Nhưng một khi nó đi, bạn có thể tiếp tục thêm từ đó.

Google "bắt đầu thay đổi tự động truy cập" và bạn sẽ tìm thấy một số tùy chọn để thực hiện việc này. Hầu hết dựa vào việc tạo một truy vấn chắp thêm để sửa đổi trường.

Tạo bảng đầu tiên chứa trường loại bộ đếm mà bạn muốn bắt đầu trên một số khác. Không nhập bất kỳ bản ghi nào. Tạo bảng thứ hai, với trường loại số nguyên dài duy nhất có cùng tên với trường bộ đếm trong bảng đầu tiên. Tạo một bản ghi trong bảng thứ hai bằng cách nhập số một ít hơn số bạn muốn bắt đầu bộ đếm tại bảng đầu tiên. Tạo một truy vấn chắp thêm, để nối một bản ghi trong bảng thứ hai vào bảng đầu tiên và chạy nó Xóa bảng thứ hai, xóa bản ghi mà bạn đã thêm vào bảng đầu tiên và bắt đầu nhập dữ liệu.

Từ MVPS.org: http://access.mvps.org/access/tables/tbl0005.htm

Nếu bạn không muốn xây dựng một truy vấn chắp thêm, bạn luôn có thể thiết lập bảng và sao chép và dán 1000 dòng dữ liệu giả từ excel, xóa các bản ghi cho đến khi bạn đến số 1001 và tiếp tục từ đó.

CẬP NHẬT: Thêm giải thích cho lý do

Lý do đằng sau số tự động chỉ được đặt để bắt đầu từ 1 là vì trường số tự động được sử dụng làm trường tham chiếu nội bộ và trong thực tiễn cơ sở dữ liệu tốt, thường không nên được sử dụng trong bất kỳ hình thức hiển thị công khai nào. Nó được sử dụng trong trường hợp chưa có một mục duy nhất trong một bảng nhất định để tạo một mục duy nhất mà theo đó bảng có thể được tìm kiếm và lập chỉ mục.


Có một cách dễ dàng hơn để làm điều này ....
James Mertz

Tôi cho rằng một tin tốt là nếu bạn cần tạo một số bảng với số tự động như vậy, bạn có thể chỉ cần tạo một bảng, lưu nó trong tệp cơ sở dữ liệu "mẫu" và chỉ cần sao chép nó vào các tệp cơ sở dữ liệu mới khi bạn cần.
nhạc2myear

0

Đây là một chủ đề khá cũ, nhưng vẫn bật lên như một kết quả tìm kiếm ba hàng đầu của Google.

Một lý do người dùng có thể muốn thay đổi giá trị của trường số tự động là để sửa lỗi gây ra bởi chỉnh sửa cơ sở dữ liệu. Khi quản trị viên có thể muốn thực hiện một số thay đổi lớn đối với mặt trước của cơ sở dữ liệu, quản trị viên đó có thể tạo các bản sao của tất cả các bảng có liên quan và chuyển hướng một bản sao phát triển của mặt trước đến các mặt sau này. Nếu các thay đổi là đủ, anh ta có thể chỉ cần thay thế bản sao sản xuất của mặt trước bằng bản sao của mình, chuyển hướng tất cả các bảng được liên kết sau khi thử nghiệm.

Không có vấn đề, phải không? Vâng, sự gia tăng số tự động vẫn ở phía trước. Vì vậy, nếu phía sản xuất chỉ tăng số tự động lên 50 hoặc 500 hoặc 5000 số trong khi quản trị viên đang làm việc trên bản sao, thì bản sao sản xuất mới sẽ bằng cách thử lại các số đó và sẽ không thể nhập các mục vào các trường đó, một tại một thời điểm, cho đến khi nó được "trong sáng". Sao chép 50, 500 hoặc 5000 hàng dữ liệu excel và cố gắng dán nó vào. Nó sẽ báo lỗi trên mỗi dòng (hãy chắc chắn để chặn các tin nhắn tiếp theo khi nó bật lên), nhưng số tự động sẽ tăng lên theo số lượng đó và bạn vẫn ổn để đi một lần nữa Nếu bạn đang sử dụng trình tự động theo cách này, bạn nên tăng số lượng lên bất kỳ db sản xuất nào trước khi ghi đè lên nó bằng bản sao phát triển của bạn.

Đây cũng là một cách để bắt đầu số tự động của bạn ở mức cao hơn 1. Giống như ngày xưa khi đặt bộ đếm lượt truy cập trang ở 17.479 trên trang chủ Geocities của bạn, khi thực sự nó chỉ được truy cập 16 lần. Bởi bạn.


0

Một cách đơn giản để đạt được thứ gì đó tương tự là có trường Autonumber (ví dụ: "ID") và trường được tính toán thứ hai (ví dụ "ItemID") và nhập công thức "1000+ [ID]" cho trường được tính toán. Trường mới này sẽ tự động theo dõi trường Autonumber, nhưng sẽ bắt đầu từ 1001 thay vì 1.


0

Tôi tin rằng nó có thể đạt được phạm vi gia tăng tùy chỉnh của bạn bằng cách trước tiên tạo một bảng ẩn sẽ giữ khoảng cách ban đầu của các mức tăng tự động bắt đầu từ 0 đến lựa chọn của bạn, ví dụ: bảng đó sẽ giữ 0 đến 1050 Sau đó, bạn bắt đầu với các mức tăng 1055, 1060, 1065, v.v. Sau đó, bạn sẽ ẩn phần dữ liệu này khỏi bảng. Hi vọng điêu nay co ich. Có vẻ như Access được thiết kế để nhìn ban đầu từ số không, vì sẽ nảy sinh xung đột.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.