ฉันจะตั้งค่าแรกของ AutoNumber ใน Access ได้อย่างไร


9

ฉันไม่จำเป็นต้องรีเซ็ตค่า AutoNumber เหมือนคำถามนี้แต่ต้องการตั้งค่าหมายเลขเป็น:

1001

ซึ่งเพิ่มขึ้นเช่นปกติ:

1001

1002

1003

...

ฉันจะทำสิ่งนี้ใน Access 2010 ได้อย่างไร


5
ไม่ใช่คำตอบ แต่คำเตือน: Autonumber ไม่ได้ออกแบบมาเพื่อจัดการด้วยวิธีนี้ ฉันเคยเห็นคนนับไม่ถ้วนลองดู มันไม่ทำงานเพราะ DB จะทำสิ่งแปลก ๆ เพิ่มขึ้นบางครั้ง (ล้มเหลวในการเขียนยังคงเพิ่มจำนวนตัวอย่าง) Autonumber ไม่รับประกันว่าหมายเลขระเบียนจะต่อเนื่องกัน อันที่จริงในบางกรณีก็ไม่สามารถรับประกันได้ว่าจำนวนจะไม่ซ้ำกัน มันมีประโยชน์มากสำหรับการสร้างคีย์หลักสำหรับตารางเล็ก ๆ มันมีความเสี่ยงเล็กน้อยสำหรับตารางขนาดใหญ่ มันน่ากลัวอย่างยิ่งที่จะใช้เป็นเขตข้อมูลจริง เขา
เบคอนบิตส์

@BaconBits ... AutoNumber มีไว้เพื่ออะไร
James Mertz

ความคิดเห็นที่เหลือของ @BaconBits: คุณจะเห็นบทความเช่นนี้เมื่อมีสิ่งที่มีรูปร่างคล้ายลูกแพร์เพราะผู้คนคาดหวังว่า Autonumber จะเป็นสิ่งที่ไม่ใช่ หากคุณต้องการสร้างตัวเลขในลักษณะนี้ให้เขียนแบบสอบถามและเช่นนั้นในฐานข้อมูลเพื่อดำเนินการอย่างถูกต้องด้วยตัวเอง
Stack Overflow ตาย

คำตอบ:


16

แม้ว่า Access ไม่ได้เสนอฟังก์ชั่นนี้ แต่สามารถทำได้ผ่านแบบสอบถามเช่นต่อไปนี้:

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

สิ่งนี้จะสร้างตารางเดียวที่เรียกว่า "TableThatIncrements" ด้วยคอลัมน์เดียวชื่อ "Id" ตอนนี้คุณสามารถใช้ตัวแก้ไขตารางเพื่อเพิ่มคุณสมบัติและ / หรือคอลัมน์อื่น ๆ

เปลี่ยนแปลง

AUTOINCREMENT(x,y)

เพื่อให้เหมาะกับความต้องการของคุณซึ่งxเป็นหมายเลขที่เพิ่มขึ้นครั้งแรกและyเป็นจำนวนที่จะเพิ่มขึ้นด้วย ดังนั้นAUTOINCREMENT(100,5)จะให้ผลตอบแทน: 100, 105, 110, 115, ฯลฯ

หากคุณต้องการแก้ไขตารางที่มีอยู่ให้ใช้แบบสอบถามต่อไปนี้ ตรวจสอบให้แน่ใจว่าแท็บของตารางเฉพาะถูกปิดเพื่อให้ Access สามารถล็อคและปรับเปลี่ยนได้

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

คุณสามารถเรียกใช้แบบสอบถามใน Access ได้โดยทำสิ่งต่อไปนี้

  1. ไปที่แท็บ "สร้าง" และคลิก "ออกแบบแบบสอบถาม"
    ป้อนคำอธิบายรูปภาพที่นี่

  2. เพียงแค่ปิดหน้าต่างที่ปรากฏขึ้นซึ่งขอให้คุณเลือกตารางเราไม่ต้องการมัน

  3. ไปที่แท็บ "ออกแบบ" และคลิกปุ่มพร้อมลูกศรจนกว่าคุณจะได้รับหน้าจอป้อนข้อความ (โดยค่าเริ่มต้นมันบอกว่าSELECT;)
    ป้อนคำอธิบายรูปภาพที่นี่

  4. ลบข้อความเริ่มต้นและวางแบบสอบถามด้านบน

  5. คลิก "Run"
    ป้อนคำอธิบายรูปภาพที่นี่


คำตอบที่ดี แต่นั่นสร้างตารางใหม่ ... หรือฉันผิด สามารถทำได้ภายในตารางที่สร้างขึ้นแล้วหรือไม่
James Mertz

@KronoS อัปเดตคำตอบของฉัน
Stack Overflow is Dead

2

1- สร้าง table1 2- ไปเพื่อสร้าง -------> แบบสอบถามการออกแบบ 3- ปิดตาราง 4- ไปที่ SQl จากด้านบน 5 - วางรหัสนี้

แก้ไขตาราง [ตาราง 1] แก้ไขคอลัมน์ [Id] COUNTER (8982,1)


สิ่งนี้ดูเหมือนจะเป็นคำตอบที่ยอมรับยกเว้นการใช้คำหลักอื่น (และอีกคำหนึ่งมีการจัดรูปแบบที่ดีกว่ามาก ) คำตอบของคุณต่างออกไปจริงๆเหรอ? คุณอธิบายได้อย่างไร คำตอบของคุณดีขึ้นหรือไม่ ทำไม? กรุณาอย่าตอบในความคิดเห็น; แก้ไขคำตอบของคุณเพื่อให้ชัดเจนและสมบูรณ์ยิ่งขึ้น
สกอตต์

@Scott ที่จริงแล้วพวกเขาแตกต่างกันเล็กน้อย: ALTER COLUMN Id AUTOINCREMENT (1001,1) และ ALTER COLUMN [Id] COUNTER (8982,1) เห็นคำว่า AUTOINCREMENT และ COUNTER แต่พวกเขาทำงานได้ตามที่คาดไว้
willy wonka

1
@willyw: ใช่; ฉันพูดว่า“ เหมือนกัน… ยกเว้นการใช้คำหลักอื่น
สกอตต์

@Scott ops ใช่คุณพูดถูก ... ฉันอ่านเร็วเกินไปขอโทษ ;-)
willka wonka

1

เว็บไซต์นี้มีวิธีที่ง่ายมากในการเริ่มต้นหมายเลขอัตโนมัติของคุณด้วยหมายเลขที่คุณต้องการ: http://www.fmsinc.com/microsoftaccess/AutoNumber%20Field/Creating.asp

คุณสร้างแบบสอบถามด้วยนิพจน์ที่บอกให้เขตข้อมูลอัตโนมัติเพื่อเปลี่ยน

"ก่อนอื่นให้เรียกใช้คิวรีนี้:

INSERT INTO tblName (ID) เลือก 999 AS Expr1

โดยที่ tblName เป็นชื่อตารางและ ID คือชื่อของฟิลด์ AutoNumber

จากนั้นเรียกใช้แบบสอบถามที่สองเพื่อลบแถวที่คุณแทรก:

ลบจาก tblName WHERE ID = 999;

(หรือมิฉะนั้นคุณสามารถเปิดตารางและลบแถวที่คุณแทรกด้วยตนเองได้)

ตอนนี้ระเบียนถัดไปที่เพิ่มลงในตารางจะถูกกำหนดค่า 1,000

วิธีนี้ใช้ได้กับตารางใหม่หรือกับตารางที่ AutoNumber ยังไม่ถึงค่า Seed (แน่นอนว่าฟิลด์ ID สำหรับแถวที่มีอยู่จะไม่เปลี่ยนแปลง แต่แถวถัดไปจะเริ่มต้นด้วย 1,000) "


0

คุณต้องหลอกลวง Access เพราะถือว่าคุณไม่สนใจ autonumber ที่แตกต่างจากที่ให้ไว้

คุณจะต้องเริ่มต้นตารางด้วย autonumber แบบกำหนดเองซึ่งจะต้องมีการตั้งค่าบางอย่าง แต่เมื่อมันไปคุณก็สามารถเพิ่มได้จากตรงนั้น

Google "เปลี่ยนการเข้าถึงอัตโนมัติเริ่มต้น" และคุณจะพบตัวเลือกมากมายสำหรับการทำเช่นนี้ ส่วนใหญ่ใช้การสร้างแบบสอบถามแบบใช้ผนวกข้อมูลเพื่อปรับเปลี่ยนเขตข้อมูล

สร้างตารางแรกที่มีฟิลด์ประเภทตัวนับที่คุณต้องการเริ่มหมายเลขอื่น อย่าป้อนระเบียนใด ๆ สร้างตารางที่สองด้วยฟิลด์ประเภทตัวเลขจำนวนเต็มเดียวที่มีชื่อเหมือนกับเขตข้อมูลตัวนับในตารางแรก สร้างเรกคอร์ดในตารางที่สองโดยป้อนหมายเลขหนึ่งน้อยกว่าหมายเลขที่คุณต้องการเริ่มการนับที่ในตารางแรก สร้างแบบสอบถามแบบใช้ผนวกข้อมูลเพื่อเพิ่มระเบียนหนึ่งระเบียนในตารางที่สองลงในตารางแรกแล้วเรียกใช้ลบตารางที่สองลบระเบียนที่คุณผนวกเข้ากับตารางแรกและเริ่มป้อนข้อมูล

จาก MVPS.org: http://access.mvps.org/access/tables/tbl0005.htm

หากคุณไม่ต้องการสร้างคิวรีแบบใช้ผนวกข้อมูลคุณสามารถตั้งค่าตารางและคัดลอกและวางข้อมูลดัมมี 1,000 บรรทัดจาก excel ลบระเบียนจนกว่าคุณจะไปที่หมายเลข 1001 และไปที่นั่น

UPDATE: การเพิ่มคำอธิบายด้วยเหตุผล

เหตุผลหลัง autonumber ที่ถูกตั้งค่าให้เริ่มต้นจาก 1 คือฟิลด์ autonumber นั้นมีไว้เพื่อใช้เป็นเขตข้อมูลอ้างอิงภายในและในทางปฏิบัติฐานข้อมูลที่ดีไม่ควรใช้ในรูปแบบสาธารณะใด ๆ มันถูกใช้ในกรณีที่ไม่มีรายการที่ไม่ซ้ำในตารางที่กำหนดเพื่อสร้างรายการที่ไม่ซ้ำซึ่งตารางสามารถค้นหาและจัดทำดัชนีได้


มีต้องเป็นวิธีที่ง่ายต่อการทำเช่นนี้ ....
เจมส์ Mertz

ฉันคิดว่าข่าวดีก็คือถ้าคุณต้องการสร้างหลายตารางด้วย autonumber เช่นนั้นคุณสามารถสร้างหนึ่งบันทึกไว้ในไฟล์ฐานข้อมูล "แม่แบบ" และเพียงแค่คัดลอกไปยังไฟล์ฐานข้อมูลใหม่ตามที่คุณต้องการ
music2myear

0

นี่เป็นหัวข้อเก่าที่สวย แต่ยังปรากฏเป็นผลการค้นหาของ Google สามอันดับแรก

เหตุผลหนึ่งที่ผู้ใช้อาจต้องการเปลี่ยนค่าของเขตข้อมูลอัตโนมัติเพื่อแก้ไขข้อผิดพลาดที่เกิดจากการแก้ไขฐานข้อมูล เมื่อผู้ดูแลระบบอาจต้องการทำการเปลี่ยนแปลงที่สำคัญบางอย่างกับส่วนหน้าของฐานข้อมูลนั้นผู้ดูแลระบบอาจทำสำเนาของตารางที่เกี่ยวข้องทั้งหมดและเปลี่ยนเส้นทางสำเนาการพัฒนาของส่วนหน้าไปยังส่วนหลังเหล่านี้ หากการเปลี่ยนแปลงนั้นเพียงพอแล้วเขาอาจจะแทนที่สำเนาการผลิตของส่วนหน้าด้วยสำเนาของเขาโดยเปลี่ยนเส้นทางตารางที่เชื่อมโยงทั้งหมดหลังจากการทดสอบ

ไม่มีปัญหาใช่มั้ย การเพิ่มจำนวนอัตโนมัติจะยังคงอยู่ที่ส่วนหน้า ดังนั้นหากฝ่ายผลิตเพิ่งเพิ่มหมายเลขอัตโนมัติโดย 50 หรือ 500 หรือ 5,000 หมายเลขในขณะที่ผู้ดูแลระบบกำลังทำงานอยู่ในการคัดลอกสำเนาการผลิตใหม่จะดำเนินการโดยพยายามหมายเลขเดียวกันซ้ำอีกครั้งและจะไม่สามารถป้อนรายการลงในฟิลด์เหล่านั้นได้ ในแต่ละครั้งจนกว่าจะได้รับ "ชัดเจน" คัดลอกข้อมูล excel 50, 500 หรือ 5000 แถวและพยายามวางลงมันจะเกิดข้อผิดพลาดในแต่ละบรรทัด (โปรดแน่ใจว่าได้ระงับข้อความเพิ่มเติมเมื่อมันปรากฏขึ้น) แต่ autonumber จะเพิ่มขึ้นตามจำนวนที่คุณได้รับ ไปอีกครั้ง หากคุณใช้ระบบอัตโนมัติในวิธีนี้ขอแนะนำให้เพิ่มตัวเลขให้กับสิ่งที่ฐานข้อมูลการผลิตอยู่ก่อนที่จะเขียนทับมันด้วยสำเนาการพัฒนาของคุณ

นี่เป็นวิธีเริ่มต้นหมายเลขอัตโนมัติของคุณในบางสิ่งที่สูงกว่า 1 เช่นเดียวกับวันเก่าของการตั้งค่าการเยี่ยมชมหน้าเคาน์เตอร์ที่ 17,479 ในโฮมเพจ Geocities ของคุณเมื่อมีการเยี่ยมชมเพียง 16 ครั้งเท่านั้น โดยคุณ.


0

วิธีง่ายๆในการบรรลุสิ่งที่คล้ายกันคือมีเขตข้อมูล Autonumber (เช่น "ID") และเขตข้อมูลจากการคำนวณที่สอง (เช่น "ItemID") และป้อนสูตร "1000+ [ID]" สำหรับเขตข้อมูลจากการคำนวณ ฟิลด์ใหม่นี้จะติดตามฟิลด์ Autonumber โดยอัตโนมัติ แต่จะเริ่มจาก 1001 แทน 1


0

ฉันเชื่อว่ามันสามารถบรรลุช่วงการเพิ่มขึ้นที่กำหนดเองของคุณโดยการสร้างตารางที่ซ่อนอยู่ซึ่งจะทำให้ช่องว่างเริ่มต้นของการเพิ่มอัตโนมัติเริ่มจากศูนย์ถึงตัวเลือกของคุณเช่น ตารางนั้นจะเก็บ 0 ถึง 1050 จากนั้นคุณเริ่มต้นที่เพิ่มขึ้น 1055, 1060, 1065 ฯลฯ จากนั้นคุณจะซ่อนข้อมูลส่วนนี้จากตาราง หวังว่านี่จะช่วยได้ ดูเหมือนว่า Access ถูกออกแบบมาให้เริ่มต้นจากศูนย์เนื่องจากความขัดแย้งจะเกิดขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.