PDA

View Full Version : سئوال در مورد کار سنگین توی جدول vsflexgrid8.0



محمد زارع
دوشنبه 29 مرداد 1386, 14:15 عصر
سلام

من در یک مرحله از برنامه باید روی داده های یک جدول که دارای حدود 30000 ردیفه یک سری عملیات محاسباتی انجام بدم که خیلی وقت گیره.(عملیات شامل خواندن 4 سل از داده های جدول در یک ردیف و انجام محاسبه و نمایش نتیجه در 4 سل دیگه تو همون ردیفه، این کار در تمام جدول ردیف به ردیف اجرا میشه، کل این فرایند الان در حدود 5.5 دقیقه زمان میبره!!!):قهقهه:

ضمناً من برای این کار از vsflexgrid8.0 استفاده کردم.
لطفاً اگه راهی بنظرتون میرسه که باعث سریعتر شدن اجرای برنامه بشه راهنمایی کنید.

یه سئوال دیگه: آیا در این نوع جدول راهی هست که بشه یه ستون رو بصورت اتوماتیک شماره بدیم؟ (مثل شماره ردیف جدول)


با تشکر.
زارع.

ehsan_ansaripoor
دوشنبه 29 مرداد 1386, 18:52 عصر
دوست عزیز سلام
به نظر من برای این کار اگر به جاری FlexGrid از اطلاعات خود Dataset استفاده کنی سریعتر به نتیجه می رسی در ضمن معمولا Grid ها خاصیتی به نام VirtulData داره که در صورت True بودن سریعتر عمل می کنه.

اگر از یک FieldAutoNumber استفاده کنی احتمالا می تونی از دستورات Sql داخل حلقه استفاده کنی به اینصورت که اعداد مضرب 4 را تا آخر حلقه بری به اینصورت 30.000 رکورد برای محاسبه میشه 7.500 رکورد.

راستی جناب زارع VsFlexGrid8 را از کجا گیر آوردید؟ :خوشحال:

محمد زارع
سه شنبه 30 مرداد 1386, 10:11 صبح
سلام
جناب انصاری پور از راهنمایی تون ممنونم.
من برنامه رو با دو حالت Virtual Date=True/False اجرا کردم ولی فرق زیادی از لحاظ زمانی نداشت.
در مورد Field Auto Number چیزی نمیدونم.ممنون میشم اگه راهنمایی کنید.

راستی اکتیوایکس VsFlexGrid8 رو از همین فروم برنامه نویس گیر آوردم. اگه پیدا نکردید بگید حتماً براتون میزارم.

با تشکر
زارع.

ehsan_ansaripoor
سه شنبه 30 مرداد 1386, 11:14 صبح
دوست عزیز اگر تمامی محاسبات شما رکورد به رکورد انجام میشه می تونی به فرض اینکه شما 4 ستون A,B,C,D داشته باشید و بخواهید 4 ستون دیگه E,F,G,H را بدست بیارید به اینصورت عمل کنی دستور SQL مربوط به DataAdapter


Select A,B,C,D,(A-B)AS E,(A+B)AS F,(A*C)AS G,(A/D)AS H FROM TABLE1

وارد می کنید.
درضمن فیلد Auto Number فیلدی است که شماره های مسلسل وار می زنه و برای یکسری کارها فوق العادست ولی با توجه به مشکل شما بعید می دونم کمکی به شما بکنه.
اگر متوجه نشدید یا مشکلی داشتید توضیح بیشتری در مورد محاسبه ستون هاتون بدید تا براتون یک مثال UpLoad کنم.

در ضمن جناب آقای زارع بنده هر چی گشتم کنترل vsflexgrid8.0 را پیدا نکردم. اگر محبت کنید بی نهایت سپاسگذار می شم.

محمد زارع
سه شنبه 30 مرداد 1386, 11:39 صبح
سلام مجدد.

متاسفانه من الان در محل کارم هستم و اکتیوایکس مورد نظر رو در منزل دارم. در اسرع وقت حتماً میفرستم.

موفق باشید.

محمد زارع
سه شنبه 30 مرداد 1386, 16:44 عصر
سلام

فایل رو براتون میفرستم.
امیدوارم مورد استفاده قرار بگیره.

موفق باشید
زارع

ehsan_ansaripoor
سه شنبه 30 مرداد 1386, 23:56 عصر
جناب آقای زارع یک دنیا ممنون. واقعا لطف کردید.
فقط مطمئنید از این کنترل در VB.Net استفاده کردی.آخه در VB2005 نمی تونم بهش DataSource بدم.

محمد زارع
چهارشنبه 31 مرداد 1386, 10:54 صبح
آقای انصاری پور سلام

من در برنامه خودم از تابع Loadgrid این کنترل استفاده کردم و داده ها رو که بصورت فایل تکست بود رو لود کردم، حالا مشکل من بعد از لود کردن داده ها است یعنی جایی که باید عملیات روی داده ها انجام بدم که خیلی وقت گیره، در مورد فرمایش شما هم خودم با این خاصیت کنترل تا الان کار نکردم.

موفق باشید.
زارع.

محمد زارع
شنبه 03 شهریور 1386, 11:59 صبح
آقای انصاری پور سلام

من خودم در مورد دستورات SQL خیلی کار نکردم و نتونستم به نتیجه قابل قبولی برسم.
یک نمونه از فایل ورودی رو براتون میگذارم. اگه زحمتی نیست یه نمونه کد برای انجام کار محاسباتی روی مثلاً چند سل از هر ردیف با دستورات SQL برام بگذارید تا به قول معروف گوشی دستم بیاد. خیلی حیاتیه!
فقط یک نکته: برای لود جدول از دستور زیر استفاده کنید:
AxVSFlexGrid1.LoadGrid("Address Of input File", VSFlex8.SaveLoadSettings.flexFileCommaText)

باتشکر.
زارع.