PDA

View Full Version : سوال: جلوگیری از ویرایش زمان ثبت تراکنش



barbimusic
دوشنبه 18 تیر 1397, 00:16 صبح
سلام دوستان عزیز .من داخل برنامم قسمت ویرایش تراکنش ها میخام کاری کنم که وقتی تراکنشی رو کاربر ویرایش کرد همه ی فیلدها به جز زمان(تاریخ) اون ویرایش بشه . چون نباید قاعدتا زمانش رو ویرایش کنه . من یک بار کدو گذاشتم داخل کانستراکتور که زمان رو اتوماتیک خودش ثبت کنه یک بار هم دستی توی قسمت ایجاد تراکنش زمان حال رو میگرفت و اضافه میکرد . ولی هر دو روش جواب نداد . ممنون میشم راهنمایی کنید . مرسی

Mahmoud.Afrad
دوشنبه 18 تیر 1397, 04:00 صبح
مسلما کنترلی که تاریخ را نمایش میده بایست redonly باشه و در کوئری هم شما نباید مقدار تاریخ را ست کنید.

barbimusic
دوشنبه 18 تیر 1397, 10:48 صبح
مسلما کنترلی که تاریخ را نمایش میده بایست redonly باشه و در کوئری هم شما نباید مقدار تاریخ را ست کنید.

سلام . من این کاری رو که گفتید انجام دادم ولی با ارور زیر موقع لاگین کردن بع برنامه مواجه میشم :

Schema specified is not valid. Errors:
The relationship 'Accounting_DBModel.FK_Accounting_AccountingTypes' was not loaded because the type 'Accounting_DBModel.Accounting_Transactions_' is not available.
The following information may be useful in resolving the previous error:
The required property 'DateTime' does not exist on the type 'Accounting.DataLayer.Accounting_Transactions_'.


The relationship 'Accounting_DBModel.FK_Accounting_Customers' was not loaded because the type 'Accounting_DBModel.Accounting_Transactions_' is not available.
The following information may be useful in resolving the previous error:
The required property 'DateTime' does not exist on the type 'Accounting.DataLayer.Accounting_Transactions_'.

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

کدی رو هم که شما گفتید به صورت زیر پیاده سازی کردم :

public partial class Thing
{
private readonly DateTime _CreatTIME;
public DateTime CreatTIME {
get
{
return _CreatTIME;

}

}
public Thing()
{
this._CreatTIME = DateTime.Now;
}



و اومدم کلاس تراکنش هام و کاربران برنامه رو فرزند Thing کردم که اتوماتیک زمان رو به ارث ببرن و نتونن تغیرش بدن

barbimusic
دوشنبه 18 تیر 1397, 11:47 صبح
سلام . من این کاری رو که گفتید انجام دادم ولی با ارور زیر موقع لاگین کردن بع برنامه مواجه میشم :

Schema specified is not valid. Errors:
The relationship 'Accounting_DBModel.FK_Accounting_AccountingTypes' was not loaded because the type 'Accounting_DBModel.Accounting_Transactions_' is not available.
The following information may be useful in resolving the previous error:
The required property 'DateTime' does not exist on the type 'Accounting.DataLayer.Accounting_Transactions_'.


The relationship 'Accounting_DBModel.FK_Accounting_Customers' was not loaded because the type 'Accounting_DBModel.Accounting_Transactions_' is not available.
The following information may be useful in resolving the previous error:
The required property 'DateTime' does not exist on the type 'Accounting.DataLayer.Accounting_Transactions_'.

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

کدی رو هم که شما گفتید به صورت زیر پیاده سازی کردم :

public partial class Thing
{
private readonly DateTime _CreatTIME;
public DateTime CreatTIME {
get
{
return _CreatTIME;

}

}
public Thing()
{
this._CreatTIME = DateTime.Now;
}



و اومدم کلاس تراکنش هام و کاربران برنامه رو فرزند Thing کردم که اتوماتیک زمان رو به ارث ببرن و نتونن تغیرش بدن

ارور بالا با پاک کردن ستون DateTime توی جدول کاربران و تراکنش هام حل شد ولی الان تمام تراکنش ها و زمان ساخت کاربران برنامه یکی شده و اونم زمان ورود به برنامه هست . !

Mahmoud.Afrad
دوشنبه 18 تیر 1397, 22:00 عصر
یک نمونه پروژه برای تست قرار بدید.

barbimusic
سه شنبه 19 تیر 1397, 09:08 صبح
یک نمونه پروژه برای تست قرار بدید.

سلام . پیام شخصی براتون ارسال کردم . ممنونم

Mahmoud.Afrad
سه شنبه 19 تیر 1397, 23:20 عصر
برای رفع خطاها یک بار مدل را از روی دیتابیس بروزرسانی کنید.


در مورد زمان، نیازی به ارثبری نیست. همونطور که خودتون کد نوشتید فقط در صورت Insert زمان را ست کنید. منظورم از readonly این بود که اگر زمان ثبت را هم به کاربر نمایش میدید اجازه تغییر ندیذ.