pezhvakco
سه شنبه 16 آذر 1389, 20:45 عصر
دو تا جدول در پایگاه داده Sql است .در یکی داده هایی وجود داره . با استفاده از کد دستورات Sql تعدادی خاص از ردیف های جدول اول را در جدول دوم که خالی است کپی می کنم .
در برنامه، ADODataSet2 که به جدول دوم وصل است همه ستونهای جدول اضافه شده و یک ستون از نوع Calculated به نام Mande هم اضافه کردم .در رویداد OnCalcFields مربوط به ADODataSet2 کد دستور زیر را برای محاسبه همین ستون نوشتم :
procedure ADODataSet2CalcFields(DataSet: TDataSet);
begin
Mande_Radif:=Mande_Radif + (ADODataSet2.FieldByName('bestankar').AsCurrency - ADODataSet2.FieldByName('bedehkar').AsCurrency);
ADODataSet2.FieldByName('Mande').AsCurrency:=Calcu _Mande_Sn;
end;متغییر Mande_Radif پیش از اضافه شدن ردیف ها از جدول اول به دوم برابر صفر می شود .
این روش برای محاسبه مانده ردیف ها کار می کنه .
در ادامه یک DBGridEh1 هم برای نمایش داده های ADODataSet2 روی فرم است .
در برنامه بعد از کپی شدن داده ها بین جدول ها ستون Mande ردیف مقدرا گذاری می شود توسط برنامه
حالا مشکل =>
اگر کاربر بر روی ردیف های DBGridEh1 پایین رود، زمانی که چند ردیف ابتدایی از دید خارج شود و کاربر دوباره به ردیف های بالا برگردد مقدار ستون مانده همان ردیف ها تغییر کرده و همان کار محاسبه ستون Mande که در رویداد OnCalcFields نوشته شده بوده انجام می شود با این تفاوت که چون مقدار متغییر Mande_Radif دیگر صفر نیست، مقدار ستون داده ای اشتباه دارد . اگر این کار (بالا و پایین رفتن ردیف ها در جدول) چند بار انجام شود، ستون مانده باز هم تغییر می کند .
پرسش =>
1) اینکه روش من برای محاسبه ستون مانده درست است یا نه .
2) چگونه این مشکل محاسبه دوباره و چند باره ستون مانده رو درست کنم .
پیشاپیش سپاس از همه ...
نمونه ساختار جدول اولیه =>
در برنامه، ADODataSet2 که به جدول دوم وصل است همه ستونهای جدول اضافه شده و یک ستون از نوع Calculated به نام Mande هم اضافه کردم .در رویداد OnCalcFields مربوط به ADODataSet2 کد دستور زیر را برای محاسبه همین ستون نوشتم :
procedure ADODataSet2CalcFields(DataSet: TDataSet);
begin
Mande_Radif:=Mande_Radif + (ADODataSet2.FieldByName('bestankar').AsCurrency - ADODataSet2.FieldByName('bedehkar').AsCurrency);
ADODataSet2.FieldByName('Mande').AsCurrency:=Calcu _Mande_Sn;
end;متغییر Mande_Radif پیش از اضافه شدن ردیف ها از جدول اول به دوم برابر صفر می شود .
این روش برای محاسبه مانده ردیف ها کار می کنه .
در ادامه یک DBGridEh1 هم برای نمایش داده های ADODataSet2 روی فرم است .
در برنامه بعد از کپی شدن داده ها بین جدول ها ستون Mande ردیف مقدرا گذاری می شود توسط برنامه
حالا مشکل =>
اگر کاربر بر روی ردیف های DBGridEh1 پایین رود، زمانی که چند ردیف ابتدایی از دید خارج شود و کاربر دوباره به ردیف های بالا برگردد مقدار ستون مانده همان ردیف ها تغییر کرده و همان کار محاسبه ستون Mande که در رویداد OnCalcFields نوشته شده بوده انجام می شود با این تفاوت که چون مقدار متغییر Mande_Radif دیگر صفر نیست، مقدار ستون داده ای اشتباه دارد . اگر این کار (بالا و پایین رفتن ردیف ها در جدول) چند بار انجام شود، ستون مانده باز هم تغییر می کند .
پرسش =>
1) اینکه روش من برای محاسبه ستون مانده درست است یا نه .
2) چگونه این مشکل محاسبه دوباره و چند باره ستون مانده رو درست کنم .
پیشاپیش سپاس از همه ...
نمونه ساختار جدول اولیه =>