امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
عدد پشت سر هم (مهم برای همه
نویسنده پیام
MasoudSobhi آفلاین
كاربر تک ستاره
*

ارسال‌ها: 30
موضوع‌ها: 6
تاریخ عضویت: اردیبهشت ۱۳۸۴

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #1
عدد پشت سر هم (مهم برای همه
سلام دوستان
من می خوام عددی بدست بیارم که تکرار توش نباشه بدین شرح که ربطی به ریکورد کانت من نداشته باشه و اگه عددی رو از دیتابیس قبلاً دیلیت کردم رو دوباره جایگزین کنه . مثلاً فرض کنید که من دارم یه برنامه حسابداری می نویسم که می خوام این خاصیت رو تو شماره فاکتور بزارم و اگه یه موقع شماره فاکتوری مثلاً پاک شد بتونه اونو جایگزین کنه . مثلاً طرف بیاد 160 تا ریکورد یا فاکتور وارد کنه بعدش بیاد فاکتور شماره 14 رو پاک کنه . می خوام وقتی ثبت جدید می خواد وارد کنه شماره 14 ی که پاک شده در رکورد 161 یعنی ثبت جدید وارد بشه . اگه راه حلی داره منو راهنمایی کنید.

دوستان حرفه ای شدیداً منتظر شما هستم

ط
۱۵-آذر-۱۳۸۷, ۱۹:۵۰:۵۸
وب سایت ارسال‌ها
پاسخ
Di Di آفلاین
مدير بخش هك و كرك
*****

ارسال‌ها: 2,358
موضوع‌ها: 116
تاریخ عضویت: اسفند ۱۳۸۵

تشکرها : 1816
( 4046 تشکر در 1321 ارسال )
ارسال: #2
RE: عدد پشت سر هم (مهم برای همه
شماره فاكتور اولين ركورد ديتابيس رو بخون و يكي بهش اضافه كن. بعد سرچ كن ببين همچين شماره اي وجود داره

يا نه. اگه وجود نداشت كه هيچ وگرنه يكي ديگه بهش اضافه كن و سرچ كن ببين همچين شماره اي وجود داره يا نه و

الي آخر .... نهايتا مي تونيد كوچكترين شماره فاكتور در دسترس رو براي فاكتورتون انتخاب كنيد.

۱۵-آذر-۱۳۸۷, ۲۰:۳۵:۱۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, mojtabamalaekeh
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #3
شماره گذاری پیوسته برای یک فیلد
روش های زیادی وجود داره.
با مرتب سازی، بدون مرتب سازی، با جستجو، بدون جستجو

اگه قطعه کد رو متوجه نشدی اونوقت فایل ضمیمه رو دانلود کن.

کد:
Private Sub Command1_Click()
    Dim RS As Recordset
    Dim NewID As Long
    Set RS = OpenDatabase("db1.mdb").OpenRecordset("Table1", dbOpenDynaset)
    NewID = 1
    If RS.RecordCount > 0 Then
        RS.Sort = "ID"
        Set RS = RS.OpenRecordset
        While Not RS.EOF And NewID = RS.Fields!ID
            RS.MoveNext
            NewID = NewID + 1
        Wend
    End If
    RS.Close
    MsgBox NewID
End Sub

با فرض اینکه شماره های 3, 2, 1, 5, 6, 8 موجود هستند ابتدا جدول مرتب میشه و داده ها به صورت 1, 2, 3, 5, 6, 8 در میان.
می بینید که 4 و 7 غایب هستند.
با قطعه کد بالا عدد 4 به شما برگردونده میشه.
اگر عدد 4 به جدول اضافه بشه، بار بعد عدد 7 به شما برگردونده میشه.


فایل‌(های) پیوست شده
.rar   Continual Numbering.rar (اندازه: 3.32 KB / تعداد دفعات دریافت: 62)


۱۶-آذر-۱۳۸۷, ۰۱:۱۴:۵۱
ارسال‌ها
پاسخ
تشکر شده توسط : Mr.pRoGraMmer, Salivan
amirjan آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,105
موضوع‌ها: 24
تاریخ عضویت: تير ۱۳۸۳

تشکرها : 348
( 697 تشکر در 251 ارسال )
ارسال: #4
RE: عدد پشت سر هم (مهم برای همه
میتونی این کار رو هم بکنی :
وقتی یه رکورد پاک میشه ، تو یه جا ، یه لیست تهیه کنی که رکورد های حذف شده رو ذخیره میکنه .
بعد هر وقت خواستی که یه رکود جدید بسازی ، اول به اون لیست مراجعه کنی ، اگر پر بود ، آخری رو بخونی و از لیست حذف کنی ، اگر هم خالی بود که یه شماره فاکتور جدید صادر کنی .
این روش بیشتر زمانی به کار میاد که دیتا بیس خیلی بزرگه و سرچ کردنش وقت گیره ...

سید امیر حسین حسنینی

Human knowledge belongs to the world ...
۱۶-آذر-۱۳۸۷, ۱۰:۵۹:۳۳
ارسال‌ها
پاسخ
تشکر شده توسط : mojtabamalaekeh, Di Di
Mr.pRoGraMmer غایب
کاربر با تجربه
****

ارسال‌ها: 1,084
موضوع‌ها: 58
تاریخ عضویت: اسفند ۱۳۸۷

تشکرها : 2031
( 2927 تشکر در 1008 ارسال )
ارسال: #5
RE: عدد پشت سر هم (مهم برای همه
سلام
اگر ميشه واسه جستجو كردن هم توضيح بديد

۰۴-خرداد-۱۳۸۸, ۱۰:۳۴:۰۰
وب سایت ارسال‌ها
پاسخ
ajlajlajl آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,192
موضوع‌ها: 70
تاریخ عضویت: مهر ۱۳۸۴

تشکرها : 932
( 2618 تشکر در 1020 ارسال )
ارسال: #6
RE: عدد پشت سر هم (مهم برای همه
برای دیتابیس های تا نسبتا بزرگ فکر کنم هزینه جستحو خیلی بالا میره. به نظر من اصلا صرفه نداره اینکار. همون بزرگترین کد + 1 به صرفه تره.

میزان رای دشمن است!
[تصویر:  cff100.png]
۰۴-خرداد-۱۳۸۸, ۱۴:۱۹:۵۳
وب سایت ارسال‌ها
پاسخ
red11011 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 89
موضوع‌ها: 14
تاریخ عضویت: فروردین ۱۳۸۸

تشکرها : 21
( 41 تشکر در 29 ارسال )
ارسال: #7
RE: عدد پشت سر هم (مهم برای همه
(۱۶-آذر-۱۳۸۷, ۱۰:۵۹:۳۳)amirjan نوشته است: میتونی این کار رو هم بکنی :
وقتی یه رکورد پاک میشه ، تو یه جا ، یه لیست تهیه کنی که رکورد های حذف شده رو ذخیره میکنه .
بعد هر وقت خواستی که یه رکود جدید بسازی ، اول به اون لیست مراجعه کنی ، اگر پر بود ، آخری رو بخونی و از لیست حذف کنی ، اگر هم خالی بود که یه شماره فاکتور جدید صادر کنی .
این روش بیشتر زمانی به کار میاد که دیتا بیس خیلی بزرگه و سرچ کردنش وقت گیره ...

این روش منطقی تر به نظر میاد
۰۵-خرداد-۱۳۸۸, ۰۸:۱۶:۳۹
ارسال‌ها
پاسخ


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS