PDA

View Full Version : مشکل در پیدا کردن ماکزیمم اعداد در increment rate متفاوت



shervin110us
پنج شنبه 17 فروردین 1391, 10:23 صبح
سلام
مشکل اینجاست :

فرض کنید در یک حلقه ، عدد شمارشگر حلقه ، شماره ی دریف یک فایل اکسل رو بهمون نشون بده و بعد ما بخواهیم ماکزیمم مقدار ، یک ستون خاص رو که از بین تعداد مختلفی عدد هست پیدا کنیم .
1- اگر از روش if then استفاده کنیم ، چون داده سرت میشه ، پس محل ردیف رو نمیتونه دقیق بگه.
2- اگر از تابع max استفاده کنیم ، اصلا نمیتونه ردیف رو برگردونه

داده ها از یک فایل اکسل استخراج میشن ، توی یک دیتا گرید ریخته میشن و فعلا شماره ی ردیف دیتاگرید ،ربط داده شده به فایل اکسل تمپلیتی که برای ساخت فایل بعدی استفاده میشه. شماره ی ردیف برای انجام یک سری تغییرات لازم هست که باید در همان ردیفی انجام بشه که مقدار ماکزیمم وجود داره.

Hybrid
پنج شنبه 17 فروردین 1391, 10:33 صبح
سلام ، 2 راهی که به نظرم رسی رو میگم :

1 ) شما اول میاین مقدار اون ستون مورد نظر از ردیف اول رو داخل یک متغیر میریزین ، چون داخل حلقه هستین خود به خود به سطر دوم از فایل اکسل میرین ، اینبار میاین مقدار ستون مورد نظر از سطر دوم رو با متغیر مقایسه میکنین اگه بزرگتر بود جایگزین مقدار متغیر میشه ، اینکار به تعداد دفعات تکرار حلقه انجام میشه و در آخر عدد بزرگتر داخل اون متغیر قرار میگیره و شما میتونین ازش استفاده کنید.

2 ) بیاین همه ی عناصر ستون مورد نظر رو داخل یک لیست Generic ذخیره کنید ، و در آخر با استفاده از linq یا حلقه یا... داده ها رو سورت کنید و بعد عدد بزرگتر رو پیدا کنید.

اگه منظورتون فرق میکنه بیشتر توضیح بدین.

hakim22
پنج شنبه 17 فروردین 1391, 11:32 صبح
اونجوری که من توجه شدم شما هم مقدار ماکزیمم رو می خواهید و هم لازم دارید بدونید مربوط به کدام ردیفه !؟
اگر از اکسل استفاده می کنید خب یک خط دیگه هم بنویسید و ماکزیمم و محل اون رو با استفاده از توابع خود اکسل بدست بیارید.

از قابلیت سورت خود datagridview میشه راحت استفاده کرد.
شما با استفاده از sort و معرفی یک comparer خیلی سریع گرید را سورت کرده و بعد مقدار ماکزیمم را از روش های معمول بدست می آورید.
compaper یک اینترفیس هست که در واقع شما باید تابع درونش رو به دات نت معرفی کنید.

سری به این مطلب بزنید. روش کار م که همین است :
http://127.0.0.1:47873/help/0-3752/ms.help?method=page&id=M%3ASYSTEM.WINDOWS.FORMS.DATAGRIDVIEW.SORT(SYST EM.COLLECTIONS.ICOMPARER)&product=VS&productVersion=100&topicVersion=100&locale=EN-US&topicLocale=EN-US