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

نام تاپیک: کار با dataset در برنامه نویسی شبکه

  1. #1

    کار با dataset در برنامه نویسی شبکه

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

  2. #2
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: کار با dataset در برنامه نویسی شبکه

    من هم همین مشکل رو دارم.

  3. #3

    نقل قول: کار با dataset در برنامه نویسی شبکه

    سلام دوست من
    من دقیقا نمی دونم ولی چیزی که به ذهنم میرسه رو می گم...
    راه حل اول:هنگام حذف رکورد یک پیغام به بقیه کلاینت ها بفرستید مبنی بر حذف رکورد
    راه حل دوم:وقتی که فرم حذف در یک کلاینت باز هست اجازه ویرایش رو به بقیه کلاینت ها نده(الگوریتمش با خودتون: میشه یک فیلد رو هنگام باز شدن فرم حذف 1 کرد و هنگامی که بسته شد 0 بشه)
    راه حل سوم:و هنگامی که یک رکورد در حال ویرایش هست(فرم ویرایش در حال اجراست اجازه حذف رکورد خاص رو نده(مثال:هنگامی که کلید رکورد رو جهت جستجو و بعد ویرایش انتخاب می کنید فیلدی رو مبنی بر در حال ویرایش بودن 1 کنید . حالا تو فرم حذف اگه اون کلید رو وارد کنید برای حذف شرط 1 یا 0 بودن این فیلد رو چک کنید اگر 1 هست اجازه پاک ندهید و اگر صفر هست پاک شود.)
    فکر کنم راه حل سوم بهتره

  4. #4
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: کار با dataset در برنامه نویسی شبکه

    این روش باعث می شه بانک همیشه در حال ویرایش باشه و کار زیادی از برنامه نویس و همچنین سیستم می بره. و احتمال خطا برنامه نویس هم زیاده.

    فکر می کنم بهترین راه برای این کار این باشه که قبل از حذف یا ویرایش چک کنیم این رکورد وجود دارد یا نه. در صورتی که وجود دارد که هیچ در غیر اینصورت به کاربر پیغام مناسب داده شود و عمل ویرایش یا حذف متوقف شود.

  5. #5

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط barbodsoft.com مشاهده تاپیک
    این روش باعث می شه بانک همیشه در حال ویرایش باشه و کار زیادی از برنامه نویس و همچنین سیستم می بره. و احتمال خطا برنامه نویس هم زیاده.
    میشه باگ ها شو رفع کرد تو چند روز---مهمترین بخشش اینه که اگه یک فیلد رو یک کردیم برق رفت چی ؟ اون یک می مونه که میشه حلش کرد

    نقل قول نوشته شده توسط barbodsoft.com مشاهده تاپیک
    فکر می کنم بهترین راه برای این کار این باشه که قبل از حذف یا ویرایش چک کنیم این رکورد وجود دارد یا نه. در صورتی که وجود دارد که هیچ در غیر اینصورت به کاربر پیغام مناسب داده شود و عمل ویرایش یا حذف متوقف شود.
    نه دیگه اینطوری که نمیشه شاید اون رکورد هنوز پاک نشده باشه و شروع کنه به ویرایش و قبل از آپدیت کردن و در حال اعمال تغییرات اونو پاک کنن!میشه همون آش و همون کاسه

  6. #6

    نقل قول: کار با dataset در برنامه نویسی شبکه

    بنظر این ره ها یه جور غیرمنطقی میاد
    فکر کنم زاه های بهتری در این مورد وجود داشته باشه

  7. #7
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط saeid.memfis مشاهده تاپیک
    نه دیگه اینطوری که نمیشه شاید اون رکورد هنوز پاک نشده باشه و شروع کنه به ویرایش و قبل از آپدیت کردن و در حال اعمال تغییرات اونو پاک کنن!میشه همون آش و همون کاسه
    عمل ویرایش و یا حذف در چند صدم ثانیه انجام می شه این چیزی که شما فرمودید احتمال 1 به میلیون هم نیست.

  8. #8

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط barbodsoft.com مشاهده تاپیک
    عمل ویرایش و یا حذف در چند صدم ثانیه انجام می شه این چیزی که شما فرمودید احتمال 1 به میلیون هم نیست.
    درست میگی
    ولی شما فکر کن که برای ویرایش اول باید کلید رکورد رو جهت جستجو زد و بعد از پر شدن فیلدها شروع به تغییر کرد..حالا اگه 10 تا فیلد رو خواسته باشه عوض کنه هر چقدر هم سریع بزنه 20 30 ثانیه ای طول میکشه(تازه این مال 10 تا فیلد بود) نظر من این زمان بود

  9. #9

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط ali190 مشاهده تاپیک
    بنظر این ره ها یه جور غیرمنطقی میاد
    فکر کنم زاه های بهتری در این مورد وجود داشته باشه
    اگه باگهاشو بگیری که مشکلی نداره
    درسته که تولید بار اضافه می کنه برای برنامه
    ولی با کامپیوترهایی که ما از اونا استفاده می کنیم دیگه به مسائلی مثل حافظه و ... هم میشه توجه نکرد

  10. #10
    کاربر دائمی آواتار mc_laren
    تاریخ عضویت
    آذر 1385
    محل زندگی
    بهبهان
    پست
    197

    نقل قول: کار با dataset در برنامه نویسی شبکه

    به نظر من اگه مشکلی که گفتین همینه یعنی فقط ترس از خطا دارین که منطقا نباید خطا رخ بده چون اگه بخواد ویرایش کنه وقتی شرط ویرایش تون که کد رکورد مورد نظر هست و اون هم از قبل پاک شده، پس رکوردی با اون کد پیدا نمیشه که بخواد ویرایش کنه و خطا بده. برای حذف کردن هم همین مسئله وجود داره.

  11. #11

    نقل قول: کار با dataset در برنامه نویسی شبکه

    پاسخها قانع کننده نیست
    از دیتاست و دیتا آداپتر بعیده در این خصوص متدی نداشته باشند
    هر چه باشه دات نت باید از vb6 قوی تر باشه
    من این کار ها رو سالهاست دارم بدون کوچکترین مشکلی در vb6 انجامش میدم

  12. #12
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط saeid.memfis مشاهده تاپیک
    درست میگی
    ولی شما فکر کن که برای ویرایش اول باید کلید رکورد رو جهت جستجو زد و بعد از پر شدن فیلدها شروع به تغییر کرد..حالا اگه 10 تا فیلد رو خواسته باشه عوض کنه هر چقدر هم سریع بزنه 20 30 ثانیه ای طول میکشه(تازه این مال 10 تا فیلد بود) نظر من این زمان بود
    زمان ویرایش زمانی هست که شما روی دکمه ویرایش یا حذف کلیک می کنی. حالا اگر کاربر داره نیم ساعت این فرم رو می بینه که چه تغییراتی به فرمش بده ... این زمان ویرایش نیست.
    شما چک می کنی بعد حذف یا ویرایش رو انجام می دی. کاملا هم منطقی هست.

  13. #13

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط barbodsoft.com مشاهده تاپیک
    زمان ویرایش زمانی هست که شما روی دکمه ویرایش یا حذف کلیک می کنی. حالا اگر کاربر داره نیم ساعت این فرم رو می بینه که چه تغییراتی به فرمش بده ... این زمان ویرایش نیست.
    شما چک می کنی بعد حذف یا ویرایش رو انجام می دی. کاملا هم منطقی هست.
    درسته
    من دیگه غیر از اینا چیز دیگه ای به ذهنم نمی رسه ...اگه به نتیجه برسه خوبه
    من یه برنامه دارم که همینطوری دورش زدم..اگه راه بهتری باشه خیلی راحت تره

  14. #14

    نقل قول: کار با dataset در برنامه نویسی شبکه

    از دوستان کسی تا بحال نرم افزار تحت شبکه با vb.net نوشته؟
    یاعلی

  15. #15

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط ali190 مشاهده تاپیک
    از دوستان کسی تا بحال نرم افزار تحت شبکه با vb.net نوشته؟
    یاعلی
    سلام
    بله..من نوشتم..یه برنامه مدیریت سهام بود که ریموت دسکتاپ و از این جور چیزا هم داشت...
    بانک هم رو سرور بود دیگه

  16. #16
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط ali190 مشاهده تاپیک
    از دوستان کسی تا بحال نرم افزار تحت شبکه با vb.net نوشته؟
    یاعلی
    خیلی ها نوشتن. دوست من این مسئله خیلی بغرنجی نیست. من از این روشی که استفاده می کنم. خیلی زود کاربر عادت می کنه و می فهمه چرا این اتفاق افتاده و کاملا هم طبیعی هست. تو زندگی عادی هم همچین اتفاقاتی می فته. (می سر یخچال میوه برداری می بینی قبلا دادش شکموت همه میوه ها رو خورده )

    این کاملا طبیعی و قابل درک هست.

  17. #17

    نقل قول: کار با dataset در برنامه نویسی شبکه

    سلام
    ممنون از همه عزیزانی که در این مورد نظر دادند
    میشه در این خصوص یک نمونه پروژه قرار دهید؟
    ممنون و متشکر از لطف شما
    یاعلی

  18. #18

    نقل قول: کار با dataset در برنامه نویسی شبکه

    برای این منظور شما اولا نباید کل رکوردها رو بیارید تو دیتاست چون با این کار دارید بصورت offline و بی خبر از بانک اطلاعات رو نمایش و یا ویرایش می کنید
    برای این کار شما باید در زمان ذخیره اطلاعات از صحت وجود رکورد و یا فیلدهای تغییر داده شده در بانک مطلع شوید چون ممکن هست دونفر یک رکورد را ویرایش کنن یکی نام و یکی نام خانوادگی رو تغییر بدن در این صورت تکلیف چیه ؟

    شما باید دقیقا فیلدی رو در بانک اصلاح کنید که واقعا یوزر تغییر داده شده
    و همچنین رکوردهایی رو در بانک اصلاح کنید که وجود داشته باشده که این روند باید بصورت دستی کنترل شود



    ASP.NET MVC / Entity Framework / Design Pattern
    XCode Objective-C IOS Developer



  19. #19
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: کار با dataset در برنامه نویسی شبکه

    سلام
    من می خواهم به اصل سئوال اشاره کنم :
    باید دقت کنیم که مفهوم DataSet شبیه یک DataBase کوچک در حافظه Client است و DataTable و DataView و DataRelation به مانند اشیاء بانک درون یک DataSet حالا نحوه حل مسئله به حساسیت پروِژه شما بر می گردد اگر هم زمانی و اثر انعکاس تغییرات کم است استفاده از اشیائی مثل DataTable و ... مشکلی نیست ولی اگر حساسیت آنقدر است که در صورت تغییر توسط یک کاربر اثر باید به دیگران منعکس شود بهترین کار Lock کردن Row های مورد نظر است بنابراین وقتی تعدادی Row در انحصار کاربری است باید هشدار به دیگر کاربران منعکس شود مثلا در SQLServer با شکل ذیل می توان تعدادی Row را Lock کرد(شبیه این دستور در اراکل هم وجود دارد)

    Set Tran Isolation Level Serializable
    Begin Tran
    Select * From T1 With (RowLock) Where A1=2

  20. #20
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط ASKaffash مشاهده تاپیک
    سلام
    من می خواهم به اصل سئوال اشاره کنم :
    باید دقت کنیم که مفهوم DataSet شبیه یک DataBase کوچک در حافظه Client است و DataTable و DataView و DataRelation به مانند اشیاء بانک درون یک DataSet حالا نحوه حل مسئله به حساسیت پروِژه شما بر می گردد اگر هم زمانی و اثر انعکاس تغییرات کم است استفاده از اشیائی مثل DataTable و ... مشکلی نیست ولی اگر حساسیت آنقدر است که در صورت تغییر توسط یک کاربر اثر باید به دیگران منعکس شود بهترین کار Lock کردن Row های مورد نظر است بنابراین وقتی تعدادی Row در انحصار کاربری است باید هشدار به دیگر کاربران منعکس شود مثلا در SQLServer با شکل ذیل می توان تعدادی Row را Lock کرد(شبیه این دستور در اراکل هم وجود دارد)

    Set Tran Isolation Level Serializable
    Begin Tran
    Select * From T1 With (RowLock) Where A1=2
    ممنون دوست عزیز من نمی دونستم می شه همچین کاری هم کرد.
    با این توضیحی که شما دادید چند سوال دیگر هم پیش می یاد.
    1- چطور سایر یوزرها می فهمند که رکوردی lock شده؟
    2- چطور باید از حالت lock خارج کرد؟
    3 - اگه برق بره یا برنامه بدون اینکه سطر های lock شده برگردونده بشن بسته بشه چیکار باید کرد؟
    4- آیا این روش cpu usege زیادی ندارد؟

  21. #21

    نقل قول: کار با dataset در برنامه نویسی شبکه

    وقتي رديفي قفل مي‌شه كسي متوجه نمي‌شه تا زماني كه بخواد رديف رو ويرايش يا حذف كنه كه با خطا مواجه مي‌شه

    اين روش هم به تنهايي مشكل رو حل نمي‌كنه
    باز هم بايد در برنامه پيش‌بيني بشه كه اگه موقع ويرايش يا حذف با قفل مواجه شد، عكس‌العمل مناسب انجام بده

  22. #22
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: کار با dataset در برنامه نویسی شبکه

    نقل قول نوشته شده توسط AMIBCT مشاهده تاپیک
    وقتي رديفي قفل مي‌شه كسي متوجه نمي‌شه تا زماني كه بخواد رديف رو ويرايش يا حذف كنه كه با خطا مواجه مي‌شه

    اين روش هم به تنهايي مشكل رو حل نمي‌كنه
    باز هم بايد در برنامه پيش‌بيني بشه كه اگه موقع ويرايش يا حذف با قفل مواجه شد، عكس‌العمل مناسب انجام بده
    پس با این تفاضیل قفل کردن فایده ای نخواهد داشت.

  23. #23
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: کار با dataset در برنامه نویسی شبکه

    سلام
    هنگام ارسال هر دستور Update یا delete از طریق برنامه کاربری شما یک Exception دریافت می شود (باtry و... ) که متناسب با عدد خطای دریافتی Lock شدن رکورد قابل تشخیص است فقط یک کم CommandTimeOut را کمتر کنید تا زیاد طولانی نشود

  24. #24

    نقل قول: کار با dataset در برنامه نویسی شبکه

    سلام
    ممنون و متشکر از دوستان عزیز بخصوص جناب کفاش عزیز
    میشه از شما بزرگورارن خواهش کنم یه مثال کوچیک در قالب یه نمونه پروژه ارائه نمائید تا ما مبتدی ها هم یه مقدار اصل قضیه رو درک کنیم
    ممنون و متشکر
    یاعلی

  25. #25

    نقل قول: کار با dataset در برنامه نویسی شبکه

    اگه اصولي بخواهيد كار كنيد
    بايد براي هر جدول يه فيلد كه آخرين تاريخ تغيير رو در خودش ذخيره مي‌كنه، اضافه كنيد

    موقعي كه كاربر اطلاعات رو براي ويرايش از پايگاه داده گرفت، اين تاريخ هم در سمت كاربر تغيير دهنده ذخيره بشه

    وقتي كه كاربر خواست اطلاعات رو در بانك ويرايش كنه، دستور Update رو علاوه بر شرط ستون كليدي، بر اساس تاريخ به‌روزرساني هم شناسايي كنيد

    اگه مقدار بازگشت داده شده توسط دستور Update برابر ۱ بود كه معلوم مي‌شه به‌روزرساني موفقيت‌آميز بوده و اطلاعات هم در اين بين تغيير نكرده
    اگه مقدار بازگشتي برابر ۰ بود معلوم مي‌شه كه كسي اطلاعات رو ويرايش كرده و تاريخ به‌روزرساني رو تغيير داده

    حالا بسته به نوع جدول و نوع كاربر و سياستي كه مدير برنامه مي‌تونه انتخاب كنه، ممكنه از ويرايش صرف‌نظر كنيد، اطلاعات ويرايش شده رو به كاربر نشون بديد و تصميم رو بر عهده‌ي كاربر بذاريد و يا اطلاعات رو دوباره بخواهيد ويرايش كنيد

  26. #26
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: کار با dataset در برنامه نویسی شبکه

    سلام دوستان
    من با توجه به روشهای که قبلا به کار می بردم و همچینی بحث های که اینجا شد. یک برنامه نوشتم که دوستان می تونن چک کنن و نتیجه رو همین جا بزارید.
    کارهای که انجام دادم.
    1- تاریخ آخرین ویرایش ثبت می شه.
    2- قبل از ثبت چک می شود که رکورد وجود داره یا نه.
    3- قبل از حذف چک می شود قبلا ویرایش یا حذف شده یا نه.
    4 - قبل از ویرایش چک می شود قبلا ویرایش یا حذف شده یا نه

    من سعی کردم در هیچ حالتی احتمال تداخل وجود نداشته باشد.
    فایل های ضمیمه فایل های ضمیمه

  27. #27
    کاربر دائمی آواتار barbodsoft.com
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    آمل
    سن
    44
    پست
    469

    نقل قول: کار با dataset در برنامه نویسی شبکه

    کد های برنامه بالا رو با کمی توضیحات جلوی هر کد که نیاز به توضیح هست قرار دادم. امیدوارم خوب بررسی کنید. در ضمن برای چک کردن لازم به استفاده از شبکه نیست شما می تونید با تغییر ساعت سیستم و همچنین دستکاری مستقیم تو دیتابیس این کار رو انجام بدید.
    مثال
    1- یک رکورد ثبت کنید.
    2- بدون اینکه برنامه رو ببندید . ساعت سیستم رو عقب ببرید.
    3- حالا برید رکوردی رو که ایجاد کردید رو حذف کنید. پیغام مناسب رو خواهید دید.

    مثال
    1-برنامه رو اجرا کنید
    2- برید تو برنامه sqlserver mangment و مستقیما یک رکورد رو حذف کنید.
    3- شما هنوز اون رکورد رو می تونید ببینید. این درحالی هست که حذف شد از دیتابیس
    4- اون رکورد رو ویرایش کنید. پیغام مناسب ظاهر خواهد شد

    فکر کنم کدها به اندازه کافی خوانا هست و امیدوارم مفید بوده باشه. منتظر نظرات سازنده شما هستم.


    Imports System.Data.SqlClient
    Public Class Form1
    Dim OCM As CurrencyManager
    Dim con As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\testdb.mdf;Integrated Security=True;User Instance=True")
    Dim SeeRecordTime As Date ' با این متغیر زمان پر شدن دیتاست رو نگه می داریم
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    con.Open()
    fileAgain()

    End Sub


    Private Sub fileAgain()
    Dim da As New SqlDataAdapter("select * from personal", con)
    Dim ds As New DataSet
    da.Fill(ds, "personal")
    Dim dv As DataView = New DataView(ds.Tables("personal"))
    OCM = CType(Me.BindingContext(dv), CurrencyManager)
    TxtId.DataBindings.Clear()
    TXTName.DataBindings.Clear()
    TXTTell.DataBindings.Clear()
    TXTModify.DataBindings.Clear()
    TxtId.DataBindings.Add("text", dv, "id")
    TXTName.DataBindings.Add("text", dv, "name")
    TXTTell.DataBindings.Add("text", dv, "tell")
    TXTModify.DataBindings.Add("text", dv, "modify")

    If OCM.Count = 0 Then
    TxtId.Text = ""
    TXTName.Text = ""
    TXTTell.Text = ""
    TXTModify.Text = ""
    Else
    OCM.Position = OCM.Count - 1
    showposition()
    End If
    SeeRecordTime = Now ' بعد از هر بار مقدار دهی دیتاست زمان اینکار در متغیر ذخیره می شود
    End Sub

    Private Sub BTNNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNNew.Click
    If BTNNew.Text = "جدید" Then
    TxtId.DataBindings.Clear()
    TXTName.DataBindings.Clear()
    TXTTell.DataBindings.Clear()
    TXTModify.DataBindings.Clear()
    BtnAdd.Enabled = True
    BTNDel.Enabled = False
    BTNEdit.Enabled = False
    BTNNew.Text = "انصراف"
    TxtId.Text = SelectMax()
    TXTName.Text = ""
    TXTTell.Text = ""
    TXTModify.Text = ""
    Else
    BtnAdd.Enabled = False
    BTNDel.Enabled = True
    BTNEdit.Enabled = True
    BTNNew.Text = "جدید"
    fileAgain()
    End If
    End Sub
    ''' <summary>
    ''' با این تابع بزرگترین کد دریافت می شود
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function SelectMax()
    Dim cmd As New SqlCommand("select max(id) from personal", con)
    Dim obj As Object = cmd.ExecuteScalar
    If obj IsNot DBNull.Value And obj IsNot Nothing Then
    Return CType(obj, Integer) + 1
    Else
    Return 1
    End If
    End Function

    Private Sub BtnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAdd.Click
    If TXTName.Text Is Nothing Or TXTTell.Text Is Nothing Then
    MessageBox.Show("لطفا اطلاعات رو بصورت کامل وارد نمایید")
    Exit Sub
    End If

    If SelectMax() <> Val(TxtId.Text) Then ' تو این دستور چک می شود آیا این کد قبلا توسط یوزر دیگری ثبت شد یا نه
    If MessageBox.Show("شماره کد قبلا ثبت شده - احتمالا از شبکه و توسط شخص دیگری" _
    & vbCrLf & "شما دو انتخاب دارید" & vbCrLf & _
    "1- روی بله کلیک کنید و اجازه بدهید سیستم کد جدیدی برای ثبت انتخاب کند" _
    & vbCrLf & "2- روی خیر کلیک کنید تا ثبتی انجام نشود", _
    "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No Then Exit Sub
    'اگه متن پیغام رو خوب بخونید به کاری هم که انجام می دهد پب خواهید برد
    End If

    Dim cmd As New SqlCommand("insert into personal(id,name,tell,modify)values(@id,@name,@tel l,@modify)", con)
    With cmd
    .Parameters.Add(New SqlParameter("@id", SqlDbType.BigInt)).Value = SelectMax()
    .Parameters.Add(New SqlParameter("@name", SqlDbType.NVarChar)).Value = TXTName.Text
    .Parameters.Add(New SqlParameter("@tell", SqlDbType.NChar, 10)).Value = TXTTell.Text
    .Parameters.Add(New SqlParameter("@modify", SqlDbType.DateTime)).Value = Now ' زمان ثبت در فیلد مورد نظر ذخیره می شود
    End With
    cmd.ExecuteNonQuery()
    MsgBox("ثبت با موفقیت انجام شد")
    BTNNew_Click(sender, e)

    End Sub

    Private Sub showposition()
    txt.Text = OCM.Position + 1 & " " & "از" & " " & OCM.Count
    End Sub

    Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click
    OCM.Position = 0
    showposition()
    End Sub

    Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click
    OCM.Position -= 1
    showposition()
    End Sub

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
    OCM.Position += 1
    showposition()
    End Sub

    Private Sub BtnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLast.Click
    OCM.Position = OCM.Count - 1
    showposition()
    End Sub

    Private Sub BTNDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNDel.Click

    Dim i As Integer
    Dim cmd As New SqlCommand("select modify from personal where id=" & Val(TxtId.Text) & "", con)
    Dim obj As Object = cmd.ExecuteScalar
    If obj IsNot DBNull.Value And obj IsNot Nothing Then 'چک می شود این رکورد قبلا حذف شده یا نه
    If SeeRecordTime < CType(obj, Date) Then ' این کد مشخص می کند که این رکورد توسط شخص دیگری ویرایش شد یا نه
    If MessageBox.Show("این رکورد در حین دیدن شما توسط شخص دیگری ویرایش شد" _
    & vbCrLf & "آیا با این وجد می خواهید حذف انجام شود؟", _
    "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No Then
    i = OCM.Position
    fileAgain()
    OCM.Position = i
    Exit Sub
    End If
    End If
    Else
    MsgBox("این رکورد قبلا حذف شده")
    fileAgain()
    Exit Sub
    End If

    cmd = New SqlCommand("delete personal where id=" & Val(TxtId.Text) & "", con)
    cmd.ExecuteNonQuery()
    fileAgain()
    End Sub

    Private Sub BTNEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNEdit.Click
    Dim i As Integer
    Dim cmd As New SqlCommand("select modify from personal where id=" & Val(TxtId.Text) & "", con)
    Dim obj As Object = cmd.ExecuteScalar
    If obj IsNot DBNull.Value And obj IsNot Nothing Then 'چک می شود این رکورد قبلا حذف شده یا نه
    If SeeRecordTime < CType(obj, Date) Then ' این کد مشخص می کند که این رکورد توسط شخص دیگری ویرایش شد یا نه
    If MessageBox.Show("این رکورد در حین دیدن شما توسط شخص دیگری ویرایش شد" _
    & vbCrLf & "آیا با این وجود می خواهید ویرایش انجام شود؟", _
    "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No Then
    i = OCM.Position
    fileAgain()
    OCM.Position = i
    Exit Sub
    End If
    End If
    Else
    MsgBox("این رکورد قبلا حذف شده")
    fileAgain()
    Exit Sub
    End If

    cmd = New SqlCommand("update personal(name=@name,tell=@tell,modify=@modify) where id=" & Val(TxtId.Text) & "", con)
    With cmd
    .Parameters.Add(New SqlParameter("@id", SqlDbType.BigInt)).Value = SelectMax()
    .Parameters.Add(New SqlParameter("@name", SqlDbType.NVarChar)).Value = TXTName.Text
    .Parameters.Add(New SqlParameter("@tell", SqlDbType.NChar, 10)).Value = TXTTell.Text
    .Parameters.Add(New SqlParameter("@modify", SqlDbType.DateTime)).Value = Now
    End With
    cmd.ExecuteNonQuery()
    i = OCM.Position
    fileAgain()
    OCM.Position = i
    End Sub

    End Class


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

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