PDA

View Full Version : ذخیره نتیجه یک فیلد محاسباتی



m_reza
جمعه 28 مرداد 1384, 16:31 عصر
سلام<o =""></o>

می می خواهم نتیجه یک فیلد محاسباتی را روی یک فیلد معمولی ذخیره کنیم بطوریه روی تمامی رکوردها اعمال بشه . (دقیقا مانند دستور Update در SQL). به عنوان مثال اگر دوفیلد name و name_calc داشته باشیم و فیلد اول یک فیلد معمولی و فیلد دوم یک فیلد محاسباتی باشد ،‌ می خواهم همانطور که در هنگام Active کردن Table تمامی موارد روی فیلد محاسباتی اعمال می شود ، همان لحظه تمامی تغییرات نیز بر روی فیلد name ذخیره شود . <o =""></o>
<o =""></o>


با تشکر




<o =""></o>

hkiani
دوشنبه 31 مرداد 1384, 09:32 صبح
سلام

فکر می‌کنم این دستور اس‌کیو‌ال مناسب باشد:

update YourTableName set simple_fieldname = (select ... as calc_fieldname from ... where ...) where ...
لازم به ذکر است که ساب‌کوری باید یک مقدار واحد را برگرداند (چون در یک فیلد نمی‌توان بیش از یک مقدار ذخیره کرد). البته ساب‌کوری به ازای هر رکورد یک‌بار اجرا می‌شود.

اگر جزئیات بیشتری بیان کنید شاید بهتر بتوانم راهنمایی کنم.

m_reza
چهارشنبه 02 شهریور 1384, 23:28 عصر
فیلد محاسباتی خروجی یک تابع است و بدلیل استثناعات زیاد مسئله و استفاده از آرایه ها و ... امکان پیاده سازی آن در اسکیوال وجود نداره و اگر هم داشته باشه خیلی سخته. بنابراین از کدهای اسکیوال نمی توانم استفاده کنم. فعلا از کد زیر برای حل آن استفاده کردم..





ADOTable1.Edit;<o =""></o>

while not(ADOTable1.Eof) do<o =""></o>


begin<o =""></o>

ADOTable1.FieldByName('xxx').asstring:=function_x( ADOTable1.FieldByName('xxx').asstring);<o =""></o>


ADOTable1.Next;<o =""></o>

end;<o =""></o>


ADOTable1.Post;




از روش Adotable.UpdateBatch() هم استفاده کردم اما زیاد تغییری در سرعت ذخیره اطلاعات حاصل نشد.<o =""></o>