PDA

View Full Version : خطایoverFlow



hoshy345
چهارشنبه 09 تیر 1389, 21:44 عصر
با سلام خدمت دوستان
دوستان من برای بدست اوردن میانگین قیمت کالا از این کد در یک loop استفاده میکنم تا زمانی که موجودی کالا بیشتر از صفر باشه بخوبی عمل میکنه ولی بعد از صفر شدن موجودی در رکود بعد از صفر هر عددی باشد خطایoverflow می دهد مشکل این کد چی هست با تشکر از همه دوستان
Avg = ((Avg * (Me.CLOSESTOCK - Me.QTYRCP)) + (Me.QTYRCP * Me.CostPrice)) / Me.CLOSESTOCK

alirezabahrami
پنج شنبه 10 تیر 1389, 08:51 صبح
با سلام خدمت دوستان
دوستان من برای بدست اوردن میانگین قیمت کالا از این کد در یک loop استفاده میکنم تا زمانی که موجودی کالا بیشتر از صفر باشه بخوبی عمل میکنه ولی بعد از صفر شدن موجودی در رکود بعد از صفر هر عددی باشد خطایoverflow می دهد مشکل این کد چی هست با تشکر از همه دوستان
Avg = ((Avg * (Me.CLOSESTOCK - Me.QTYRCP)) + (Me.QTYRCP * Me.CostPrice)) / Me.CLOSESTOCK

سلام
اين نوع خطا معمولاً زماني رخ ميدهد كه متغييري كه براي داده ات تعريف كرده ايد معتبر نباشد . مثلا شما براي يكي از فيلدهاي برنامه متغييري از نوع integer تعريف كرده ايد در حاليكه نتيجه اي كه در اين فيلد قرار ميگيرد خارج از محدوده متغير تعريف شده مي باشد .
شما بايد سايز فيلد مربوطه را عوض كنيد مثلاً اگر آن را از نوع integer تعريف كرده ايد آن را مثلاً با Long Integer يا Double و ... ( بسته به نتيجه داده )را عوض كنيد!
موفق باشيد

hoshy345
پنج شنبه 10 تیر 1389, 14:45 عصر
با تشکر از شما دوست عزیز
تمامی فیلدها و متغیرها از نوعDouble انتخاب شده اند .تمامی عملیات بدرستی انجام میشه زمانی که فیلدCLOSESTOCK صفر ميشه اين خطا در رکورد بعد از اون رخ میده و این در حالی است که عملیات بعد از اون هم بدرستی انجام میگیرد
با تشکر

bita_ziba77
شنبه 12 تیر 1389, 08:54 صبح
با تشکر از شما دوست عزیز
تمامی فیلدها و متغیرها از نوعDouble انتخاب شده اند .تمامی عملیات بدرستی انجام میشه زمانی که فیلدCLOSESTOCK صفر ميشه اين خطا در رکورد بعد از اون رخ میده و این در حالی است که عملیات بعد از اون هم بدرستی انجام میگیرد
با تشکر

با سلام
فكر ميكنم دليل آن در محاسبات مي باشد.
يعني چون مخرج عبارت صفر مي بشود (مقدار عبارت به صورت x/0 ) باعث خطا مي گردد.
فكر كنم با افزودن شرط If مشكل شما قابل رفع خواهد بود بدين صورت كه اگر CLOSESTOCK باشد ، مقدار صفر و يا مورد نظر را به عنوان نتيجه محاسبات نمايش دهد.

با تشكر