PDA

View Full Version : ایجاد ستون محاسباتی در datagrid



ali190
جمعه 19 شهریور 1389, 22:37 عصر
باسلام و تبریک عید سعید فطر خدمت همه دوستان
میخواستم بپرسنم آیا میشه در همین datagrid ستون محاسباتی ایجاد نمود
مثلاً ستونی که حاصل انجام عملیاتی بر روی ستونها دیگست
مثلاً با حاصلضرب ستون1 در ستون 2 محاسبه و در این ستون نمایش داده بشه؟
میشه لطف کنید و فایل نمونه قرار دهید
ممنون

mds_boy
جمعه 19 شهریور 1389, 23:33 عصر
سلام
من هم عید سعید فطر رو تبریک میگم به همهی شما دوستان.
و اما جواب :
1- دیتاگرید فقط شی ای است برای نمایش رکوردها و فیلد ها نه چیزی که شما فکر میکنید.
2- راه حل این است که شما عمل مربوطه را در بانک خود انجام دهید سپس بعد از نتیجه حاصل را در دیتا گرید، فیلد 2 نمایش بدهید.
--
کد :

Adodc1.RecordSource=SELECT Sum(Fild1_Numbers) as Fild2 from Table1
Adodc1.refresh
DataGrid1.refresh

نکته : نمیشه، 1 فیلد مثلا 5 رکورده داشته باشی، و بعد از جمع کنارش در فیلد 2 نمایش بدی !
چرا چون نمیه که فیلد اولت داریا 5 رکورد و فیلده دومت داریای 1 رکورد باشه !!!
راهه حلش استفاده از Group By هستش، ولی اینم، فقط موقعی جواب میده که همه ی فیلدهای اولت دارای یک رقم باشن !
خلاصه، سرت گیج نره اینا رو میخونی، یکم قلمبست، تا خودت ننویسی زیاد سر در نمیاری، فقط همین کد رو استفاده کن و بعد از نتیجه رو در یک فیلد با نام fild2 ببین.
فقط میتونی نتیجه رو در فیلدی مجازی ببینی، که در اینجا Fild2 همان فیلدی است که بعد از پردازش ساخته میشود.


موفق و سربلند باشید

HjSoft
شنبه 20 شهریور 1389, 09:11 صبح
کافیه در Vsflex در ایونت AfterDataRefresh اینو بنویسین یا در دیتاگرید یه جایی که فیلتر انجام میشه یا بانک به روز میشه اینو قرار بدید :

rst.movefirst
dim sum as string
for i = 1 to rst.recordcount
rst.fieldS("sum") = val(rst.fieldS("numberone")) + val(rst.fieldS("numbertwo"))
rst.update
rst.movenext
next i

البته اگر اشتباه تایپی داشت منو ببخشید چون توی Notepad نوشتم .
از mds_boy هم معذرت میخوام که دوباره روی حرفشون حرف زدم .
این کد محدودیتی ندارد .

ali190
شنبه 20 شهریور 1389, 09:16 صبح
ممنون از توضیحاتت
من با اکسس خیلی راحتم و در اون به راحتی کوئریهام رو میسازم
من میتونم کوئری دلخواهم رو در اکسس بسازم و اون کوئری رو به دیتا رید نسبت بدم؟
چون در کوئری اکسس من میتونم بی نهایت ستون محاسباتی بسازم
کوئری ام رو در اکسس بسازم و اون کوئری رو به دیتاگرید نسبت بدم
فقط یه مشکلی هست که من نمیتونم کوئری هایی که در اکسس میسازم رو با تکست باکس یک فرم در vb پارامتریکش کنم
میشه یک فایل مثال قرار بدید؟
ممنون

mds_boy
شنبه 20 شهریور 1389, 11:18 صبح
ببخشید که من در اون بالا به جای ضرب جمع کردم !!!
منظورتون رو از شیفته بعد نمیفهمم، حاصل بره به فیلدی که شیفت بعدی هست، در یک جدول دیگر !؟
منظورتون از پارامتریکش کنم، چیه !!! ؟
اینو ببینو بجای لیبل، به تست باکسربط بده. اگه این طوری باشه !!!
---
این برنامه یکی از تست های من بوده، چیزای دیگه هم توش هسا، ولی شما در اینجا نتیجه جمع فیلد 1 را در یک لیبل میبینید.
در ضمن بانکه ان sql است، من دیگه از access استفاده نمیکنم.
خودتون اون بانک رو در sql server خود atach کنید.

returnx
شنبه 20 شهریور 1389, 11:20 صبح
این برنامه رو ببین شاید بدردت بخوره:
http://www.4shared.com/file/l4aIoQmE/Sum_Cloumn.html

ali190
شنبه 20 شهریور 1389, 12:49 عصر
سلام بچه ها
ممنون از نمونه هاتون
ولی من یک نمونه در رابطه با یک بانک اطلاعاتی میخوام
مثلاً من دوفیلد دارم
فیلد نام
فیلد نام خانوادگی
هدف ایجاد یک فیلد سوم در دیتا گیرید که از ترکیب دوفیلد قبل با اسم نام و نام خانوادگی بوجود بیاد.
البته یک فاصله هم بینشون باشه
ممنون

HjSoft
یک شنبه 21 شهریور 1389, 10:36 صبح
rst.field("sum") = rst.field("name") & " " & rst.field("family")

ali190
یک شنبه 21 شهریور 1389, 19:09 عصر
با تشکر از HjSoft
ولی بچه ها من تو این قضیه یک فیال نمونه میخواستم
اگر امکانش هست
یاعلی

HjSoft
یک شنبه 21 شهریور 1389, 22:08 عصر
شما نمونه برنامتو بفرست ، ما درستش میکنیم .

ali190
یک شنبه 21 شهریور 1389, 23:46 عصر
ممنون برادر از لطفتون
ولی من که نمونه خاصی ندارم
من تازه میخوام ای نقضیه رو یاد بگیرم
البته اگر کمکم کنید
ممنون