PDA

View Full Version : سوال: سوالي در مورد Auto Number در پايگاه داده اكسس؟



alifatehi
دوشنبه 25 شهریور 1387, 02:48 صبح
سلام

پايگاه دادهاي دارم كه اتو نامبر جدول آن از 1 شروع نميشه.

پايگاه داده اي در محيط اكسس طراحي كردم بعد مقاديري را داخل جداول قرار دادم براي تست پايگاه داده حالا كه تست تمام شده و اطلاعات داخل فيلدها رو پاك كردم تمام ركورد ها

حالا كه مي خوام اطلاعات جديدي رو وارد كنم از Auto Number از انتهاي آن ركوردي كه گفتم پاك كردم شروع و از يك شروع نمي شود مشكل كجاست.

مثال : آخرين شماره كه قبل داشته عدد 7 است و بعد از پاك كردن تمام اطلاعات جداول . با وارد كردن اطلاعات جديد به جاي عدد 1 عدد 8 رو نشان مي دهد.
باتشكر

xxxxx_xxxxx
دوشنبه 25 شهریور 1387, 03:03 صبح
نوع فیلدو عوض کنید جدول رو save کنید . بعد دوباره نوع فیلدرو به Auto Number تغییر دهید

majjjj
دوشنبه 25 شهریور 1387, 08:05 صبح
وقتی یک فیلد با data type خودکار رو تغییر بدین این مشکل براتون پیش میاد بنابراین اگه میخواهی رکورد هاتون قابلیت حذف داشته باشن از این نمونه فیلد استفاده نکنید

maryamb
دوشنبه 25 شهریور 1387, 16:36 عصر
می تونید اون فیلد رو پاک کنید و از نو بسازید تا دوباره از یک شروع بشه.
ولی به قول دوستمون راه بهتر اینه که دستی و از داخل برنامه هر بار یکی به فیلدتون اضافه کنید و اونو از نوع اتو نامبر در نظر نگیرید

alifatehi
دوشنبه 25 شهریور 1387, 16:45 عصر
نوع فیلدو عوض کنید جدول رو save کنید . بعد دوباره نوع فیلدرو به Auto Number تغییر دهید


پيغام خطا مي ده چون RelationShips ايراد مي گيره.

alifatehi
دوشنبه 25 شهریور 1387, 16:51 عصر
می تونید اون فیلد رو پاک کنید و از نو بسازید تا دوباره از یک شروع بشه.
ولی به قول دوستمون راه بهتر اینه که دستی و از داخل برنامه هر بار یکی به فیلدتون اضافه کنید و اونو از نوع اتو نامبر در نظر نگیرید


دوست عزيز پروژه هاي زيادي ديدم كه از اتونامبر استفاده مي كردند و مشكلي هم نداشتند هم خوب ويرايش مي شدند و هم خوب آپديت پس مي بينيد را ه حلي دارد

alifatehi
دوشنبه 25 شهریور 1387, 16:54 عصر
اصلا يادم رفته بود مشكل رو با پشتيباني ماكروسافت در ميان بزارم اين راه حل را ماكروسافت پيشنهاد داده است.

پيشنهاد ماكروسافت (http://support.microsoft.com/kb/812718)


راه حل ديگه داخل همين انجمن است.

كه توسط اقاي مهدي قرباني ارائه شده است.

لينك تاپيك (http://barnamenevis.org/showpost.php?p=411912&postcount=156)

arkia
جمعه 01 آذر 1387, 02:21 صبح
یعنی میشه توی برنامه شماره اتوماتیک رو ریست کرد همچنان که بقیه فیلد ها سر جاشونن؟

vbhamed
جمعه 01 آذر 1387, 23:26 عصر
سلام
به نظر من از فيلد AutoNumber براي شناسايي ركورد فقط استفاده كنيد نه استفاده به عنوان يك فيلد واقعي
در اينصورت مهم نيست از چند شروع بشه

babak_delphi
سه شنبه 05 آذر 1387, 18:58 عصر
این احتمال وجود نداره که با زیاد شدن تعداد رکوردها این فیلد با مشکل مواجه بشه؟
طور دیگه مطرح می کنم : فیلد AutoNumber تا چند رکورد قابل افزایشه؟

xxxxx_xxxxx
سه شنبه 06 اسفند 1387, 19:20 عصر
این احتمال وجود نداره که با زیاد شدن تعداد رکوردها این فیلد با مشکل مواجه بشه؟
طور دیگه مطرح می کنم : فیلد AutoNumber تا چند رکورد قابل افزایشه؟
خير؛ فيلد AutoNumber از نوع Long Integer هست. (ماكزيمم يك عدد 10 رقمي)

mpmsoft
چهارشنبه 07 اسفند 1387, 07:49 صبح
دوست عزيز فيلد Auto Number در صورتي که رکوردي در تيبل نباشد بعد از Compact کردن مجدد از 1 شروع مي شه

ولي فرض کنيد که يک تيبل داريد که مقدار آي دي اون از 30 شروع شده و حالا اون رکورد رو که آي ديش 30 هست رو به يک تيبل خالي که از 1 شروع مي شه انتقال بديد مجدد از 30 شروع مي شه

Ali0541
شنبه 31 مرداد 1388, 20:45 عصر
ببخشيد كه تاپيك قديمي رو فعال كردم منم يه همچين مشكلي دارم
آيا دوستان راه حل تازه اي دارند؟
ممنون:لبخند::لبخند::لبخند:

ali2449
شنبه 13 تیر 1394, 13:07 عصر
با سلام خدمت دوستان عزيز
من فايلي را طراحي كرده و يكي از فيلد هاي آن را تو اتونامبر قراردادم ولي بعد از ثبت تعدادي از ركورد ها از اتو نامبر بصورت رديفي خارج ميشود مثلا وقتي در ركورد 80 با رديف و اتو نامبر 80 هستم و ميخواهم ركورد 81 رو وارد كنم اتو نامبرم 83 رو نشون ميده
ميخواستم اگه امكان داره دوستان در اين امر راهنماييم كنند كه چيكار كنم لازم به توضيح ميدونم كه بكم رديف رو حذف كردم و رديف جديدي را وارد كردم id را حذف كردم و دوباره ايجاد كردم ركود جديد را در رديف يك نشون نداد و در آخرين ركورد نمايش داد

vbhamed
شنبه 13 تیر 1394, 23:46 عصر
سلام
کار AutoNumber همینه که تضمین کنه Id تکراری ایجاد نشه حتی اگر Id حذف شده باشه
در مورد حذف فیلد Id هم بازم سیستم کارش رو درست انجام داده چون رکورد شما آخرین رکورد درج شده در جدول بوده

شما بهتره بگین هدفتون از انجام این کارها چیه تا برای اون بشه راهی ارائه کرد

میلاد علوی
چهارشنبه 12 خرداد 1395, 16:32 عصر
چون دیدم کسی جواب دوستان رو بلد نبود تاپیک رو بالا آوردم
راه حل اینکه Auto Number رو ریست کنید اینه که از بقیه ستون هاتون در صورتی که بهشون نیاز دارید کپی بگیرید مثلا توی اکسل بعد همه داده های داخل تیبل رو حذف کنید از منوی آپشن اکسس گزینه Compact & Repair رو بزنید
و تمام اوتونامبر شما ریست شده :چشمک:

vbhamed
چهارشنبه 12 خرداد 1395, 22:50 عصر
سلام
با حذف فیلد از جدول و ایجاد مجدد اون هم می‌تونید اینکار رو انجام بدید

Kybord
چهارشنبه 23 آبان 1397, 21:13 عصر
سلام
ببخشید برای بنده مشکلی پیش اومده امیدوارم تجربه شماکمک حالم باشه <3
بنده در طول برنامه نویسی برای یک برنامه حسابداری به یک مشکل سخت گرفتار شده ام
در بانک اطلاعاتی " اکسس - acces " فیلد کلید را فیل " آیدی - ID "قرار دادم
بعد از اجرا برنامه و تست به این مشکل برخردم وقتی مثلا ده محصول با شناسه مختلف ثبت میکنم مثلا از شناسه شماره یک تا ده
وقتی شماره هشت را پاک کنم بر روی ذخیره کلیک کنم فیلد حذف میشود ولی در ثبت فیلد جدید شماره شناسه از شماره یازده شروع میشود

خیلی مشغولم کرده این کد

میخواستم بدونم راه حل بهتری هست ؟
یا کدی هست بتونم بنویسم برنامه بره تو اکسس و گزینه commpact & repair رو بزنه بعد هر حذف ؟؟

لطفا کمکم کنید واقعا دردسر ساز شده برام

j.behzadii@gmail.com

اگه ممکنه اینجا جواب بدید یا به ایمیلم پیام بدهید ممنون <3

vbhamed
پنج شنبه 24 آبان 1397, 07:55 صبح
سلام
ببخشید برای بنده مشکلی پیش اومده امیدوارم تجربه شماکمک حالم باشه <3
بنده در طول برنامه نویسی برای یک برنامه حسابداری به یک مشکل سخت گرفتار شده ام
در بانک اطلاعاتی " اکسس - acces " فیلد کلید را فیل " آیدی - ID "قرار دادم
بعد از اجرا برنامه و تست به این مشکل برخردم وقتی مثلا ده محصول با شناسه مختلف ثبت میکنم مثلا از شناسه شماره یک تا ده
وقتی شماره هشت را پاک کنم بر روی ذخیره کلیک کنم فیلد حذف میشود ولی در ثبت فیلد جدید شماره شناسه از شماره یازده شروع میشود

خیلی مشغولم کرده این کد

میخواستم بدونم راه حل بهتری هست ؟
یا کدی هست بتونم بنویسم برنامه بره تو اکسس و گزینه commpact & repair رو بزنه بعد هر حذف ؟؟

لطفا کمکم کنید واقعا دردسر ساز شده برام

j.behzadii@gmail.com

اگه ممکنه اینجا جواب بدید یا به ایمیلم پیام بدهید ممنون <3

سلام
خب این نشون میده شما مفهوم فیلد کلید رو کامل درک نکردید
اون داره دقیقا کار درست رو انجام میده، اینکار باعث میشه تضمین بشه هیچ موقع داده های تکراری به وجود نمیان
فرض کنید شما از فیلد کلید به عنوان شماره فاکتور استفاده کردید
به یک نفر فاکتور دادید، فاکتورش رو بعدا حذف کردید و به یک نفر دیگه فاکتور دادید طبق همون شماره کلید قبلی، حالا بعد از مدتی هر دو نفر مراجعه میکنن برای حسابرسی و هر دو میگن شماره فاکتور ما مثلا 100 هستش
اینجا تداخل پیش میاد و اصلا کلید نباید اونکارو انجام بده که شماره حذف شده رو دوباره به شما بده

اول اینکه شما از فیلد کلید فقط به عنوان کلید رکورد و ارتباط با جدول دیگه استفاده کنید نه فیلد اطلاعاتی مثل شماره فاکتور یا ...
اگر مثلا نیاز به فیلد شماره فاکتور دارید باید یک فیلد دیگه بزارید و برای اینکه هر بار بدونید چه شماره فاکتوری استفاده کنید میتونید با تابع Max بیشترین مقدار شماره فاکتور داخل جدول رو بگیرید و یکی بهش اضافه کنید

هر چند در این حالت هم اگر چند تا فاکتور آخر حذف بشن باز شماره تکراری پیش میاد ولی برای این هم باید فکری کنید مثلا آخرین شماره فاکتور رو در جایی دیگه ذخیره کنید که با حذف اون فاکتور هم شماره بمونه یعنی کاری که همون فیلد کلید انجام می‌داد، شاید بگین خب اینطوری که همون مشکل اولیه من ایجاد شد، بله درسته اما اون مشکل نیست، اون تضمینی برای ایجاد داده های غیر تکراری است و اصلا هیچ لزومی هم نداره فاکتورها همیشه پشت سر هم باشه شماره هاشون، در صورت نیاز باید برای خودتون شماره ردیف تعیین کنید

hassan_ml75
یک شنبه 02 دی 1397, 11:16 صبح
دوست عزیز اگه میخوای از اتو نامبر به عنوان کلید استفاده بکنی از کد زیر استفاده بکن من خودم استفاده میکنم هیچ مشکلی ندارم باهاش.
T1.Text = Adodc2.Recordset.RecordCount + Val(1)
این روشو من تو چند تا از برنامه هام استفاده کردم نتیجه گرفتم حتما به دردت میخوره.:قلب:

vbhamed
پنج شنبه 06 دی 1397, 17:50 عصر
دوست عزیز اگه میخوای از اتو نامبر به عنوان کلید استفاده بکنی از کد زیر استفاده بکن من خودم استفاده میکنم هیچ مشکلی ندارم باهاش.
T1.Text = Adodc2.Recordset.RecordCount + Val(1)
این روشو من تو چند تا از برنامه هام استفاده کردم نتیجه گرفتم حتما به دردت میخوره.:قلب:

با این روش اگر رکورهای قبلی پاک بشه رکورد تکراری ایجاد میشه اونم به مرور زیاد میشه