PDA

View Full Version : مشکل در dbnavigator



Batman
شنبه 30 تیر 1386, 21:15 عصر
با سلام
دوستان من میخوام زمانیکه کاربر داخل جدول یه مقداری رو تغییر میده بعد از کلیک روی nbpost چک بشه مثلا اگه مقدار فیلد بزرگتر از 10 هستش همون مقدار قبل از ویرایش دوباره درج بشه (یه چیزی شبیه به undo)
ممنونم

ghabil
شنبه 30 تیر 1386, 21:28 عصر
توی BeforePost دیتاستت مقادیر روچک کن و اگر درست نبودند یک خطا بده :


if DataSet.FieldByName('Code').AsInteger > 10 then
begin
DataSet.Cancel;
raise Exception.Create('مقدار وارد شده از 10 بزرگتر است');
end;

Batman
شنبه 30 تیر 1386, 21:52 عصر
آقای ghabil دستتون درد نکنه تستش میکنم

Batman
یک شنبه 31 تیر 1386, 08:24 صبح
آقای ghabil سوالی رو که نوشته بودم اصلاح میکنم
من میخوام بعد از ذخیره شدن اون مقدار چک بشه
و همین کد توی afterpost گذاشتم پیغام درست چاپ میشه اما مقدار هم تغییر میکنه (یعنی شرط اجرا نمیشه و مقادیر بزرگتر از 10 هم تغییر میکنند درحالیکه نباید چنین باشه) و درصورتیکه من میخوام مقدار قبل از ویرایش دوباره برگرده

ghabil
یک شنبه 31 تیر 1386, 10:45 صبح
آخه منطقی نیست که بعد از پست چک کنی ، چون پست اطلاعات رو به دیتابیس میفرسته ، منطقی اینه که اول درست بودن شرایط رو چک کنی بعد اطلاعات رو پست کنی .
اما اگر واقعا برای این کارت دلیل داری و میخوای اطلاعات تا دیتابیس برند و ذخیره بشند و بعد دوباره از توی دیتابیس پاک بشند و دوباره مقادیر قبلی نوشته بشند ، که بعیده دلیلی باشه اونوقت بگو تا چندتا راه بهت بگم، ضمنا بگو دیتابیست چیه ؟

Batman
یک شنبه 31 تیر 1386, 13:21 عصر
access
ببینید مثلا آقای x مقدار 2000 تومان پرداخت کرده حالا میخواهیم این مقدار رو ویرایش کنیم
بطور مثال کاربر 20000 تومان وارد میکنه حالا میخوام چک بشه اگه مقدار بزرگتر از مقدار کل خریدش در جدول status بود پیغام بده و همون مقدار قبلی برگرده
امیدوارم متوجه شده باشید

ghabil
یک شنبه 31 تیر 1386, 16:34 عصر
خب من متوجه نشدم چرا قبل از پست نمیتونی این رو تست کنی ؟ ببین همون کد بالارو مینویسم اینطوری تغییرش میدم :



function calcSum: Integer
begin
به هر روشی میخوای اینجا مجموع خرید رو حساب میکنی .
end;

procedure BeforePost....
begin
if CalcSum > 2000 then
begin
DataSet.Cancel;
raise Exception.Create('مقدار وارد شده از 10 بزرگتر است');
end
end;