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

نام تاپیک: آخرین رکورد ثبت شده توسط کاربر در بانک رو چطور پیدا کنم

  1. #1

    Arrow آخرین رکورد ثبت شده توسط کاربر در بانک رو چطور پیدا کنم

    با سلام خدمت همه

    چطور میشه آخرین رکوردی که در یه بانک ذخیره می شه رو پیدا کرد
    با Table1.EOF در ADO یا BDE میشه اینکارو کرد ولی راهی نیست که همیشه درست باشه مثلا
    ممکن بانک Sort شده باشه یا نه یا .... و دیتای که کاربر وارد کرده در آخر قرار نگیره
    روشهای ارائه شده چه با استفاده از ADO یا BDE چه با در SQLServer فرقی نداره ولی اگه هر دوش باشه معرکه اس

    البته من در حال حاضر یه فیلد GUID‌در بانکم تعریف کردم با ثبت کاربر به اون فیلد مقدار می دم بعد اون مقدار رو جستجو می کنم آخرین رکورد رو پیدا می کنم
    شاید بپرسید چرا
    چون فیلد کلیدی من AutoNumber است و اون برام مهمه

  2. #2
    ببینید در حالت عادی تفاوتی بین رکورد های درج شده در بانک وجود ندارد و مشخص نیست که کدوم اول وارد شده اند مگر اینکه همونطور که خودتون گفتید از فیلد autonumber استفاده کنید در سایر موارد رکوردها بر اساس کلید اصلی چیده میشوند. در حالت autonumber هم میتوانید از Query زیر برای پیدا کردن آخرین رکورد استفاده کنید

    select max(autonumberfield)
    from tablename
    آخرین ویرایش به وسیله mzjahromi : سه شنبه 14 آذر 1385 در 07:40 صبح
    You never know what you can do until you try

  3. #3
    کاربر دائمی آواتار MNosouhi
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان
    پست
    883
    چطور میشه آخرین رکوردی که در یه بانک ذخیره می شه رو پیدا کرد
    همه جا به جای دستور Insert از Append استفاده کنید . دستور Append رکورد جدید رو به انتهای جدول اضافه می کنه ، در اینصورت با متد Last می تونید به آخرین رکورد دست پیدا کنید . البته اگر جدولتون بر اساس فیلد خاصی سورت بشه ، این روش دیگه کارساز نیست و باید از یک فیلد عددی برای شناسایی آخرین رکورد استفاده کنید.
    برای سهولت می تونید یک متغیر تعریف کنید و هنگامی که برنامه اجرا میشه با کدی که آقای ذوالقدر عزیز گذاشتند شماره آخرین رکورد را به دست آورده و در متغیر ذخیره کنید ، حالا هر وقت که رکورد جدیدی اضافه می کنید ، یکی به متغیر اضافه کنید.

  4. #4

    Smile

    نقل قول نوشته شده توسط MNosouhi مشاهده تاپیک
    همه جا به جای دستور Insert از Append استفاده کنید . دستور Append رکورد جدید رو به انتهای جدول اضافه می کنه ، در اینصورت با متد Last می تونید به آخرین رکورد دست پیدا کنید . البته اگر جدولتون بر اساس فیلد خاصی سورت بشه ، این روش دیگه کارساز نیست و باید از یک فیلد عددی برای شناسایی آخرین رکورد استفاده کنید.
    برای سهولت می تونید یک متغیر تعریف کنید و هنگامی که برنامه اجرا میشه با کدی که آقای ذوالقدر عزیز گذاشتند شماره آخرین رکورد را به دست آورده و در متغیر ذخیره کنید ، حالا هر وقت که رکورد جدیدی اضافه می کنید ، یکی به متغیر اضافه کنید.
    تشکر از هر دو جواب

    من از دستورات SQL استفاده می کنم از Append نمی خوام استفاده کنم

    ضمنا در مورد جواب آقای ذوالقدر اون Group کردن برای چیه ؟

  5. #5
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736
    شما احتمالاً مشکلتان یک چیزه دیگه است.
    شما میخواهید که بعد از اضافه کردنه رکورد به داتابیس بتونید یکجوری بهش اشاره کنید، برایه اس*کیو*ال سرور از
    AutoNumberFiled خودش باید استفاه کرد، ۶ ماه پیش جواب این روش را فرستاده بودم، ولی این روش شما که از گوئید استفاده میکنید بهتره. استفاده از گوئید برایه فیلد کلیدی از استفاده از AuoNumber بهتر است.
    در ضمن روش نگه داشتن َخرین مقدار در یک متغییر برایه سیستمهایی که در شبکه باید کار کنند خوب نیست، ولی برایه برنامه*هایی تک کاربری درست کار میکنه.

  6. #6
    ضمنا در مورد جواب آقای ذوالقدر اون Group کردن برای چیه ؟
    ببخشید.
    اشتباه شد.
    تصحیح شد.
    You never know what you can do until you try

  7. #7
    تشکر از جوابهاتون

  8. #8
    کاربر تازه وارد آواتار ictboy
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    رشت
    پست
    35
    نقل قول نوشته شده توسط mzjahromi مشاهده تاپیک
    ببینید در حالت عادی تفاوتی بین رکورد های درج شده در بانک وجود ندارد و مشخص نیست که کدوم اول وارد شده اند مگر اینکه همونطور که خودتون گفتید از فیلد autonumber استفاده کنید در سایر موارد رکوردها بر اساس کلید اصلی چیده میشوند. در حالت autonumber هم میتوانید از Query زیر برای پیدا کردن آخرین رکورد استفاده کنید

    select max(autonumberfield)
    from tablename


    با سلام
    من تو برنامم می خوام فیلد کد را به صورت خودکار از داخل برنامه کد بدم ولی نمی خوام از AutoNumber استفاده کنم . از دستور Max تو SQL استفاده کردم . با این کار برای اولین بار درست کار می کنه ولی بعد از اینکه از برنامه خارج می شم و دوباره وارد می شم هر بار که این دستور فراخوانی می شه مقدار بزرگ رو بهم نمی ده . من باید چی کار کنم؟

  9. #9
    کدی که استفاده کردید رو بذارید اینجا
    You never know what you can do until you try

  10. #10
    کاربر تازه وارد آواتار ictboy
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    رشت
    پست
    35
    با سلام
    کدی که برای پیدا کردن آخرین مقدار جدول از آن استفاده می کنم همان کدی است که در چند پست قبلی دوستان گذاشتن . من این مورد رو خارج از پروژه ام نیز تست کردم. ولی اونجا هم یه مشکل دارم. من اولین کد را یک در نظر می گیرم و برای هر رکورد یک مقدار به اون اضافه می کنم ولی بعد از رکوردی که با کد 9 ثبت می کنم دستور Max بزرگترین کد را 9 در نظر می گیره. نمیدونم تونستم درست منظورم رو بیان کنم. به عبارت دیگه من کد 10 رو تو جدول دارم ولی دستور Max بزرگترین کد رو 9 نشون می ده.
    در هر صورت راهی برای درست کردن یک AutoNumber دستی اگه در نظر دارید ممنون میشم راهنماییم کنید.
    راستی اگه بخوام یک فیلد AutoNumber تو Sql Server داشته باشیم نوع فیلد رو باید چیزی بزاریم . من همه نوع فیلدها رو چک کردم چیزی دستم نیومد.
    متشکرم

  11. #11
    سلام
    فکر می کنم مشکل شما این است که نوع فیلد خود را text انتخاب کرده اید ، برای همین 9 را بزرگتر از 10 می داند ، شما نوع فیلد را به عددی تغییر دهید درست می شود .

  12. #12

    نقل قول: آخرین رکورد ثبت شده توسط کاربر در بانک رو چطور پیدا کنم

    یک فیلد از نوع bigint تعریف می کنی بعد در قسمت پایین identity رو yes می کنی .

  13. #13

    نقل قول: آخرین رکورد ثبت شده توسط کاربر در بانک رو چطور پیدا کنم

    دوست عزیز اگه از sql server استفاده میکنی بهترین راه حل استفاده از store procedure
    به این صورت که کوئری درح رو مینویسی و در اخر دستور
    Return @@Identity
    این دستور مقدار فیلد autonumber که درج کردی رو برات بازگشت میده من تو C#‎ از این استفاده کردم

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

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