PDA

View Full Version : سوال: بهترين نوع فيلد براي مقادير پولي چيه؟



hanieh66
شنبه 03 مهر 1389, 14:56 عصر
سلام
بهترين نوع فيلد براي مقادير پولي چيه؟

نمي دونم كه در صورت استفاده از نوع money ممكنه به چه مشكلاتي بخورم براي همين منم مثله خيليا از نوع varchar استفاده مي كردم هميشه اما مي خوام بدونم درست ترينش كدومه؟

pezhvakco
شنبه 03 مهر 1389, 17:10 عصر
به نظر من چون ساختار داده ایی از نوع پول در همه زبان ها یکسان است، همون money که خود Sql داره بهتره.

استفاده از varchar دردسر ساز میشه در کارهای رو اون ها .

hanieh66
شنبه 03 مهر 1389, 18:37 عصر
به نظر من چون ساختار داده ایی از نوع پول در همه زبان ها یکسان است، همون money که خود Sql داره بهتره.

استفاده از varchar دردسر ساز میشه در کارهای رو اون ها .
2تا مسئله اينجا هست.

اول اينكه در regional settings در ويندوز حتما بايد فارسي نصب شده باشد؟

دوم اينكه من مي خوام در برنامم براي راحتي كار مشتري از "تومان" بجاي "ريال" استفاده كنم آيا اين قضيه مشكل خاصي بوجود نمي ياره ؟ مثلا در نمايش اطلاعات در ديتاگريدويو

pezhvakco
شنبه 03 مهر 1389, 19:00 عصر
ول اينكه در regional settings در ويندوز حتما بايد فارسي نصب شده باشد؟این که ستون رو از نوع پولی انتخاب نمایید به ویندوز و تنظیمات اون مربوط نمیشه . از نوع پولی استفاده میشه تا کار هایی که باید بر روی داده ها انجام بشه راحت تر و روان تر انجام بشه .


دوم اينكه من مي خوام در برنامم براي راحتي كار مشتري از "تومان" بجاي "ريال" استفاده كنم آيا اين قضيه مشكل خاصي بوجود نمي ياره ؟من واحد پول رو در هر ردیف نمایش نمیدم و در بالای ستون (عنوانش) مانند فاکتور ها نمایش میدم و با این کار نوشته هیچ کاری به داده ها نداره .

asdf2010
شنبه 03 مهر 1389, 19:11 عصر
با سلام به نظر من که استفاده از(numeric(10,5 که البته داخل اونو میتونی عوض کنی بهتره چون که هم فورمول نویسی اگه داشته باشی راحتتر میتونی عمل کنی و هم اگه در برنامت اگه حسابداری رو کار کنی . چون قسمت دوم این دیتا تایپ اعشای است و چون قیمت بعضی از کالا ها که روند نیست مثل 1000 شاید کسی بخواد در برنامه 1000.555 رو وارد کنه و باید با for و ریختن الگوریتم اونو درست کنی برای همین که هم راحتتر کد بنویسی و هم در گزاش گیری و در select هایی که میزنی میتونی به راحتی اون مقادیر رو گرد کنی.

hanieh66
شنبه 03 مهر 1389, 20:01 عصر
این که ستون رو از نوع پولی انتخاب نمایید به ویندوز و تنظیمات اون مربوط نمیشه . از نوع پولی استفاده میشه تا کار هایی که باید بر روی داده ها انجام بشه راحت تر و روان تر انجام بشه .

من واحد پول رو در هر ردیف نمایش نمیدم و در بالای ستون (عنوانش) مانند فاکتور ها نمایش میدم و با این کار نوشته هیچ کاری به داده ها نداره .

بله درست مي گيد من سوالم رو درست مطرح نكردم ولي فكر كنم به جوابم رسيدم.چيزي كه من متوجه شدم اينه كه اعداد و مقاديري كه در فيلد پولي قرار مي گيرند تنها يك عدد هستن و من مي تونم تعيين كنم كه مثلا "ريال" يا "تومان" يا ... باشن. همينطور كه گفتين مثلا در يه جايي روي فرم به كاربر مي گم كه واحد مورد استفاده چيه. (البته كاري كه دارم مي كنم اينه كه ابتداي نصب برنامه كاربر مشخص كنه كه از "ريال" يا "تومان" استفاده مي كند و اين قابل تغيير نخواهد بود)




با سلام به نظر من که استفاده از(numeric(10,5 که البته داخل اونو میتونی عوض کنی بهتره چون که هم فورمول نویسی اگه داشته باشی راحتتر میتونی عمل کنی و هم اگه در برنامت اگه حسابداری رو کار کنی . چون قسمت دوم این دیتا تایپ اعشای است و چون قیمت بعضی از کالا ها که روند نیست مثل 1000 شاید کسی بخواد در برنامه 1000.555 رو وارد کنه و باید با for و ریختن الگوریتم اونو درست کنی برای همین که هم راحتتر کد بنویسی و هم در گزاش گیری و در select هایی که میزنی میتونی به راحتی اون مقادیر رو گرد کنی.
آخه باز به نظر من (و خيليهاي ديگه كه پرسيدم) استفاده از نوع money روش استاندارش هست و تمام محاسبات لازم رو مي شه باهاش انجام داد. شما منظورتون چجور محاسبات پولي اي هست كه نمي شه با نوع money انجام داد؟

Rezahak
شنبه 03 مهر 1389, 20:51 عصر
برای انتخاب بهترین نوع فیلد باید شما به عنوان تحلیل گر (دقت کنید نه طراح) باید به دو سئوال پاسخ دهید:
1- بزرگترین مقداری که می خواهید با آن کار کنید چیست؟
2 - آیا به ذخیره اعداد اعشاری به عنوان پول رایج نیاز دارید؟

hanieh66
یک شنبه 04 مهر 1389, 11:25 صبح
برای انتخاب بهترین نوع فیلد باید شما به عنوان تحلیل گر (دقت کنید نه طراح) باید به دو سئوال پاسخ دهید:
1- بزرگترین مقداری که می خواهید با آن کار کنید چیست؟
2 - آیا به ذخیره اعداد اعشاری به عنوان پول رایج نیاز دارید؟
اولا اينكه بايد نوع money يا smallmoney رو انتخاب كنم و حالا جواب اين دو سوال :

من مي خوام قيمت مسكن رو نگه دارم و فكر كنم ديگه از چند صد ميليارد تومان بيشتر نباشه.پس با اين حساب بايد نوع money باشه چون رنج مقادير smallmoney به اين مقادير نمي رسه
فكر نكنم براي "تومان" نيازي به مقدار اعشار باشه. يعني مثل دلار نيست كه سنت داشته باشه.

با اين حساب نوع money بهترين انتخابه .درسته؟

Rezahak
یک شنبه 04 مهر 1389, 11:38 صبح
چون مقدار اعشاري لازم نداريد و طول اعدادتون هم از 12 رقم تجاوز نمي كنه bigint استفاده كنيد كه sql را بي جهت درگير محاسبات اعشاري نكنيد

hanieh66
یک شنبه 04 مهر 1389, 12:10 عصر
چون مقدار اعشاري لازم نداريد و طول اعدادتون هم از 12 رقم تجاوز نمي كنه bigint استفاده كنيد كه sql را بي جهت درگير محاسبات اعشاري نكنيد
خب من الان دقيق نمي دونم محاسبات اعشاري منظورتون چيه؟

اما واقعا يعني بجاي نوع استاندارد money براي مقادير پولي از bigint استفاده كنم؟ اين بر خلاف اصول طراحي نيست؟

devil00x
یک شنبه 04 مهر 1389, 14:58 عصر
من تو برنامه هام از نوع decimal استفاده می کنم.

tooraj_azizi_1035
یک شنبه 04 مهر 1389, 15:06 عصر
برای ذخیره قیمت مسکن که از میلیون تا میلیارد متغیره از نوع داده ای bigint استفاده کن. int نوع داده ای برای ذخیره مقادیر صحیح هست. و برای مقادیر بزرگتر از 2,147,483,647 (یعنی حداکثر مقداری که نوع int می تونه نگه داره) bigint گزینه درست است. ذخیره کردن جداکننده هزارگان (Thousand Separator) در Database مرسوم نیست و فقط در حین نمایش به کاربر می تونه تو خاصیت Format اون کنترل که مقدار رو نمایش میده ست بشه.
امیدوارم کمکت کنه.

tooraj_azizi_1035
یک شنبه 04 مهر 1389, 15:16 عصر
خب من الان دقيق نمي دونم محاسبات اعشاري منظورتون چيه؟

اما واقعا يعني بجاي نوع استاندارد money براي مقادير پولي از bigint استفاده كنم؟ اين بر خلاف اصول طراحي نيست؟


برای ذخیره قیمت مسکن که از میلیون تا میلیارد متغیره از نوع داده ای bigint استفاده کن. int نوع داده ای برای ذخیره مقادیر صحیح هست. و برای مقادیر بزرگتر از 2,147,483,647 (یعنی حداکثر مقداری که نوع int می تونه نگه داره) bigint گزینه درست است. ذخیره کردن جداکننده هزارگان (Thousand Separator) در Database مرسوم نیست و فقط در حین نمایش به کاربر می تونه تو خاصیت Format اون کنترل که مقدار رو نمایش میده ست بشه.
امیدوارم کمکت کنه. :قلب:

tooraj_azizi_1035
یک شنبه 04 مهر 1389, 15:17 عصر
خب من الان دقيق نمي دونم محاسبات اعشاري منظورتون چيه؟

اما واقعا يعني بجاي نوع استاندارد money براي مقادير پولي از bigint استفاده كنم؟ اين بر خلاف اصول طراحي نيست؟

برای ذخیره قیمت مسکن که از میلیون تا میلیارد متغیره از نوع داده ای bigint استفاده کن. int نوع داده ای برای ذخیره مقادیر صحیح هست. و برای مقادیر بزرگتر از 2,147,483,647 (یعنی حداکثر مقداری که نوع int می تونه نگه داره) bigint گزینه درست است. ذخیره کردن جداکننده هزارگان (Thousand Separator) در Database مرسوم نیست و فقط در حین نمایش به کاربر می تونه تو خاصیت Format اون کنترل که مقدار رو نمایش میده ست بشه.
امیدوارم کمکت کنه. :قلب:

hanieh66
دوشنبه 05 مهر 1389, 11:29 صبح
اوكي منم بيگ اينت استفاده مي كنم..
اميدوارم اينكارم توجيه منطقي درستي داشته باشه .چون نياز به ذخيره اعشار ندارم پس انواع دسيمال و ماني بخاطر محاسبات اعشاري مي شه صرف نظر شن و نوع بيگ اينت بهترين انتخاب هست در بين انواع باقيمانده مثل ورچر

tooraj_azizi_1035
دوشنبه 05 مهر 1389, 16:08 عصر
نوع داده ای Money برای ذخیره ارز استفاده می شه جائی که حساسیت قیمت تا اعشار هم اهمیت پیدا می کنه: http://msdn.microsoft.com/en-us/library/ms188688.aspx