نمایش نتایج 1 تا 7 از 7

نام تاپیک: پیدار کردن شناسه رکورد آزاد (حذف شده)

  1. #1

    پیدار کردن شناسه رکورد آزاد (حذف شده)

    سلام :
    تو بانک های sql چه طوری میشه رکورد هایی که کاربر حذف کرده رو شناسایی و دوباره استفاده کرد .
    یعنی تو یه برنامه که شماره رکورد ها شاخص و یکتا است، اگر کاربر چند رکورد را از داخل رکورد ها حذف کرد ، بشه آن شماره ها رو در insert های بعدی استفاده کرد .
    تشکر ...

  2. #2
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: پیدار کردن شناسه رکورد آزاد (حذف شده)

    سلام

    سوالات عجیب غریب ! اولا شما نگفتی داری از چه بانکی استفاده میکنی MSSQL یا MySql که البته 99% باید MSSQL باشه ! ببین دوست عزیز توی این بانک ها برخلاف Table های dbf که رکورد های حذف شده عملا حذف نمیشدند (من تا حالا از این نوع Table های قدیمی استفاده نکردم اما توی تبدیل برنامه های قدیمی متوجه شدم که این Table ها رکورد های Delete شده را عملا حذف نکرده اند و چیزی شبیه یک نشونه روشون میگذارند) رکورد حذف شده حذف میشه و فقط ازش Log موجوده که بشه Rollback کرد !

    میشه توضیح بعدی چرا باید از شماره یکتا Record های میانی که حذف شده اند دوباره استفاده کرد ، چون این کار سودی که نداره هیچ بلکه به نظر من اشتباهه ، مثلا فکر کن میخوای چهار مورد آخر که به پایگاه اضافه شده را نمایش بدی ، حالا اگه از شماره های یکتا میانی استفاده کرده باشی Sort این فیلد یکتا بهت جواب نمیده (نگو میشه یک فیلد Date ایجاد کرد که اینطوری داری بیخودی یک فیلد اضافه میکنی که Sort اون هم از فیلد یکتا کند تره).

    اما اگه واقعا میخوای این کار را بکنی Autoincrement را از روی فیلد بردار و در زمان Insert تصمیم بگیر باید چه عددی بدی به آخرین رکورد. (برای استفاده از شماره های میانی هم میتونی در زمان Delete شماره های حذف شده را جائی ذخیره کنی بعدش با یک Sort مناسب ازشون دوباره استفاده کنی) ولی لقمه را بیخودی نچرخون !

  3. #3

    نقل قول: پیدار کردن شناسه رکورد آزاد (حذف شده)

    دستت درد نکنه !
    تشکر ...
    1 ) از MSSQL استفاده میکنم .
    2 ) تو برنامه حسابداری بعضی وقت ها لازمه یه شماره سند حذف شده دوباره استفاده بشه برای حساب سازی .
    3 ) دستت برای راهنمایی ذخیره رکورد ها درد نکنه .
    4 ) دنبال یه روش برای پیدا کردن شماره های می گردم که حذف شده، با این توضیح که شماره ها به ترتیب هستند .

  4. #4
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: پیدار کردن شناسه رکورد آزاد (حذف شده)

    دوست عزیز ، بهترین کار اینه که یک فیلد به رکوردت اضافه کنی به عنوان isdeleted که حالت True و False داره ! حالا اگه قرار شد رکوردی حذف بشه شما فیلد را True میکنی و در زمان نمایش فقط False ها را نمایش میدی ، حالا اینطوری در واقع چیزی حذف نشده و اگه قرار شد ازش استفاده کنی ویرایشت را روی رکورد مربوطه انجام میدی و فیلد isdeleted را false میکنی ! رکورد با اطلاعات جدید برمیگرده.

  5. #5
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: پیدار کردن شناسه رکورد آزاد (حذف شده)

    به نظر من راه سریعترش همونه که Unique گفتن. یعنی یک فیلد برای ذخیره شماره های حذف شده داشته باشید.
    و راه دیگش اینکه قبل از Insert کردن بر روی شماره های Sort شده جستجو کنید.

    یعنی اگه اولین شماره 1 باشه :
    N := 1;
    for i := 0 to DB.RecordCount-1 do
    begin
    if N <> DB.FieldByName("Record Nummber').AsInteger then
    Break
    else N := N+1;
    end;


    خوب، همینجور که معلومه اگه بین شماره ها یکی حذف شده باشه با دستور Break حلقه شکسته میشه و مقدار حذف شده در N باقی میمونه.

    موفق باشید.

  6. #6

    نقل قول: پیدار کردن شناسه رکورد آزاد (حذف شده)

    درود :
    تشکر از Unique و chatbaz عزیز ...
    راه حل های جالبی بود .

  7. #7
    کاربر دائمی آواتار حسین شهریاری
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    ایران
    پست
    794

    نقل قول: پیدار کردن شناسه رکورد آزاد (حذف شده)

    سلام
    این مورد برای من هم پیش اومده بود.من اینطوری حلش کردم:اومدم یه جدول دیگه دقیقا معادل جدولی که اسنادم توی اون ذخیره میشد ایجاد کرده(مثلا RecycleDoc) و قبل از حذف سند دلیل حذف اون سند را هم از کاربر میپرسیدم و اون سند را توی جدول اسناد حذف شده درج میکردم.یه گزینه ای هم قرار داده بودم که کاربر عملا اسناد حذف شده را میدید و اگه دوست داشت دوباره اونا را بازیابی میکرد.تمام این کارا توسط یه select , یه Insert خیلی سریع انجام میشه.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •