ورود

View Full Version : سوال: عملیات روی ستونهای دیتاگرید



kashir
جمعه 30 مهر 1389, 22:53 عصر
سلام

فرض میکنیم سه ستون 1 و 2 و 3 داریم
میخوام داده های ستون 1 را با 2 جمع کنم و در 3 بریزم یعنی مثلا با زدن یه دکمه بشه تمامی داده ها را تبدیل کرد
جواب بدین ممنون میشم
(جستجو کردم چیزی پیدا نکردم)

nosrati1363
شنبه 01 آبان 1389, 02:11 صبح
سلام
من از این جور سوال ها خیلی خوشم میاد چون برای اولین با پرسیده میشن:کف:
اولا این عملیات روی سطرهاست اگر اشتباه نکنم . و باید بگم خیلی ساده است

اگه میخوای این کارو با یک button انجام بدی کافیه بنویسی


dim sum1=(dgv.rows(index).cell(0).value) + (dgv.rows(index).cell(1).value)
dgv.rows(index).cell(2).value = sum1 با یک حلقه for میتونی برای هر جند سطر که دوست داری این کارو انجام بدی . ولی اگه جوابت رو نگرفتی بیشتر توضیح بده تا جوابت رو بدم

kashir
شنبه 01 آبان 1389, 03:21 صبح
مرسی بابت جوابت
این شکلو ببین
http://up.iranblog.com/Files73/784ca38c866f479ca26a.JPG
من میخوام اختلاف روز بین تاریخ اولی و دومی رو بدست بیارم(البته تابعشو دارم) و بعد یه عملیاتی روش انجام بدم و نتیجه بعنوان امتیاز تو ستون امتیاز نمایش داده بشه
یه سوال دیگه: اگه این مرحله انجام شد چطوری میشه داده های ستون امتیاز رو تو بانک ذخیره کرد؟
و آخرین سوال: توی vb.net میشه select,update,delete و ... انجام داد میشه با دستورات sql این کارو انجام داد؟

omid-vbAuto
شنبه 01 آبان 1389, 03:33 صبح
آره همه کار میشه کرد.

اگه میخوای تو دیتا بیس هم ذخیره کنی فایلتو بفرست برات دوروس کنم.

kashir
شنبه 01 آبان 1389, 10:46 صبح
خدا خیرت بده ببینم چکار میکنی :لبخندساده:

kashir
شنبه 01 آبان 1389, 15:36 عصر
یعنی کسی نمیتونه مشکل منو حل کنه؟ :ناراحت:

kashir
شنبه 01 آبان 1389, 18:05 عصر
از اساتید کسی نمیتونه مشکل منو حل کنه؟
میخوام اختلاف تاریخ اول و دوم رو در موجودی ضرب کنم و تقیسم بر 1000 و در ستون امتیاز نمایش داده بشه
البته بعد از ثبت در ستون آخر در بانک نیز ذخیره بشه
کمک کنید :افسرده:

omid-vbAuto
شنبه 01 آبان 1389, 19:33 عصر
از اساتید کسی نمیتونه مشکل منو حل کنه؟
میخوام اختلاف تاریخ اول و دوم رو در موجودی ضرب کنم و تقیسم بر 1000 و در ستون امتیاز نمایش داده بشه
البته بعد از ثبت در ستون آخر در بانک نیز ذخیره بشه
کمک کنید :افسرده:


اولا فتیلی رو که گذاشتی واسه دانلود کار نمیکنه چیزائی از اونو پاک کردی.
ثانیا اگه تاریخ اول کوچکتر از تاریخ دوم باشه امتیازت منفی میاد.
ثالثا اون تابعی رو که برا زمان ساختی رو بده تا برات تکمیلش کنم.توضیح کامل بده که چی میخواهی تا بتونم کمکت کنم.

kashir
شنبه 01 آبان 1389, 22:14 عصر
دوست من عکسی که ضمیمه کردم رو ببینید
سطر دوم رو در نظر بگیرید
اختلاف دو تاریخ 6 روزه
میخوام 6 در موجودی سطر که 4000000 هست ضرب بشه و بر 1000 تقسیم بشه و در ستون امتیاز ثبت بشه
میخوام بعد زدن دکمه این وضعیت واسه همه سطرها اتفاق بیوفته
حالا اگه هم بشه اطلاعاتی که در ستون امتیاز قرار گرفت در بانک ثبت بشه چه بهتر
همه فایلو که نمیتونستم بزارم حجمش زیاد بود فقط فرم مربوطه و بانکمو گذاشتم

omid-vbAuto
یک شنبه 02 آبان 1389, 01:09 صبح
دوست من عکسی که ضمیمه کردم رو ببینید
سطر دوم رو در نظر بگیرید
اختلاف دو تاریخ 6 روزه
میخوام 6 در موجودی سطر که 4000000 هست ضرب بشه و بر 1000 تقسیم بشه و در ستون امتیاز ثبت بشه
میخوام بعد زدن دکمه این وضعیت واسه همه سطرها اتفاق بیوفته
حالا اگه هم بشه اطلاعاتی که در ستون امتیاز قرار گرفت در بانک ثبت بشه چه بهتر
همه فایلو که نمیتونستم بزارم حجمش زیاد بود فقط فرم مربوطه و بانکمو گذاشتم


بیا اینم چیزی که می خواستی.
موفق باشی.

kashir
یک شنبه 02 آبان 1389, 10:20 صبح
دوست من اولا که این فقط سطر دو رو محاسبه میکنه
بعدش من بانکم اکسس نیست
واسه بدست آوردن اختلاف روز منها کردین؟؟؟!!!
این جوابش نیست عزیزم :افسرده:

hero4000
یک شنبه 02 آبان 1389, 15:11 عصر
Public Function ShamsiDateDiff(ByVal Date1 As String, ByVal Date2 As String, Optional ByVal Seperator As String = "/") As Integer
Dim pc As New Globalization.PersianCalendar

Dim da1 = Date1.Split(Seperator)
Dim da2 = Date2.Split(Seperator)
If da1(0).Length < 3 Then da1(0) = "13" & da1(0)
If da2(0).Length < 3 Then da2(0) = "13" & da2(0)
Dim dt1 = pc.ToDateTime(da1(0), da1(1), da1(2), 0, 0, 0, 0)
Dim dt2 = pc.ToDateTime(da2(0), da2(1), da2(2), 0, 0, 0, 0)
Return DateDiff(DateInterval.Day, dt1, dt2)
End Function
فانکشن فوق رو تعريف کن و بعدش توي رويدادي که مي خواي محاسبه انجام بشه کدهاي زير رو بنويس


For i As Int32 = 0 To dt.Rows.Count - 1
Dim DiffDate As Int32 = 0
DiffDate = ShamsiDateDiff(DGV.Item(2, i).Value.ToString, DGV.Item(3, i ).Value.ToString)
SumRow = DiffDate * DGV.Item(1, i).Value
DGV.Item(4, i).Value = SumRow
Next

dt نام ديتاتيبل متصل شده به گريده ( که البته شما ميتونين از تعداد سطرهاي خود گريد استفاده کنين)
البته اين رو هم بگم من فرض کردم ستون اول مبلغ و ستون دوم و سوم تاريخها رو داره و ستون چهارم قراره ستون امتياز باشه
شما هر جور که گريدت رو طراحي کردي همونجوري استفاده کن

kashir
دوشنبه 03 آبان 1389, 00:51 صبح
از کد دوست خوبمون omid-vbAuto ایده گرفتم ولی نمیتونم تو بانک ذخیرش کنم
با زدن دکمه امتیاز تمامی سطرها محاسبه میشه


Dim Date1 As String
Dim Date2 As String
Dim DayCounter As String
For i = 0 To 5
Try
Date1 = Str(DataGridView1(5, i).Value) + "/" + Str(DataGridView1(4, i).Value) + "/" + Str(DataGridView1(3, i).Value)
Date2 = Str(DataGridView1(9, i).Value) + "/" + Str(DataGridView1(8, i).Value) + "/" + Str(DataGridView1(7, i).Value)
DayCounter = ShamsiDateDiff(Date1, Date2, "/")
''End Class


Dim emtiaz As Single
emtiaz = (Str(DataGridView1(6, i).Value) * DayCounter) / 10000000 + Str(DataGridView1(11, i).Value)
DataGridView1(10, i).Value = emtiaz
Catch ex As Exception

End Try
Next

omid-vbAuto
دوشنبه 03 آبان 1389, 01:23 صبح
دوست من عکسی که ضمیمه کردم رو ببینید
سطر دوم رو در نظر بگیرید
اختلاف دو تاریخ 6 روزه
میخوام 6 در موجودی سطر که 4000000 هست ضرب بشه و بر 1000 تقسیم بشه و در ستون امتیاز ثبت بشه
میخوام بعد زدن دکمه این وضعیت واسه همه سطرها اتفاق بیوفته
حالا اگه هم بشه اطلاعاتی که در ستون امتیاز قرار گرفت در بانک ثبت بشه چه بهتر
همه فایلو که نمیتونستم بزارم حجمش زیاد بود فقط فرم مربوطه و بانکمو گذاشتم


دوست من اگه کدی که نوشتم فقط سطر دوم رو مورد تحریک قرار میده به خاطر اینکه این جوری از من خواسته بودید.
از اون گذشته با یه دستور حلقه به تعداد سطرهات میشه برنامتو کامل کرد
در نهایت کاری که من کردم بر روی DataGridview بود وشما می تونید اونو تو Sql نیز save ویا update کنید.

kashir
دوشنبه 03 آبان 1389, 01:38 صبح
شما می تونید اونو تو Sql نیز save ویا update کنید.

save و update اینطوریش دردسره
هرکاری کردم نشد میتونی ردیفش کنی؟

hero4000
دوشنبه 03 آبان 1389, 08:37 صبح
دوست عزيز مگه اطلاعاتت رو از بانک نميخوني ديگه نيازي نيست توي بانک ذخيره کني

شما که فرمول محاسبه رو نوشتي کافيه که اطلاعات رو که از بانک ميخوني يک محاسبه کوچولو روش انجام بدي

ali_najari
دوشنبه 03 آبان 1389, 09:09 صبح
دوست عزيز Weblog من رو ببينيد من يه كد نوشتم واسه محاسبه اختلاف بين 2 تاريخ شمسي (ShamsiDataDiff) ميتوني از اون كد استفاده كني

hero4000
سه شنبه 04 آبان 1389, 08:05 صبح
دوست عزيز Weblog من رو ببينيد من يه كد نوشتم واسه محاسبه اختلاف بين 2 تاريخ شمسي (ShamsiDataDiff) ميتوني از اون كد استفاده كني

دوست عزيز توي پست 12 همون رو استفاده کردم نيازي به مراجعه به وبلاگ شما نيست :چشمک:

از قرار معلوم مشکل اين دوستمون حل شده

kashir
پنج شنبه 06 آبان 1389, 00:48 صبح
فقط یه چیزی مونده
اطلاعات هر سطر که تو ستون امتیاز ریخته شد رو چطوری تو بانکم ذخیره کنم؟؟ میشه؟ :متفکر:

ali_najari
پنج شنبه 06 آبان 1389, 08:26 صبح
دوست عزيز خوب يه حلقه بزار و بعد تمام اطلاعات مربوط به اون ستون رو توي جلدولت آپديت كن


For each Row as DatagridviewRow in DGV.Rows
DGV.Rows(i).cell(4).value.tostring()
Next

kashir
جمعه 07 آبان 1389, 00:27 صبح
یعنی با این دو خط کد میشه اطلاعات ستون امتیاز رو سطر به سطر تو ردیف خودش ذخیره کرد؟ داداش میخوام تو بانکم ذخیره بشه

ali_najari
جمعه 07 آبان 1389, 11:36 صبح
دوست عزیز من یه برنامه آماده میکنم تا ببینید که میشه با همین چند خط کد اطلاعات رو وارد Database کرد

kashir
شنبه 08 آبان 1389, 15:48 عصر
دوست عزیز من یه برنامه آماده میکنم تا ببینید که میشه با همین چند خط کد اطلاعات رو وارد Database کرد

همچنان منتظر برنامه شما هستیم :چشمک:

kashir
سه شنبه 11 آبان 1389, 20:17 عصر
داداش اگه نمیشه بیخیال شو، خودتو اذیت نکن :لبخندساده:

ali_najari
سه شنبه 11 آبان 1389, 23:13 عصر
دوست عزیز من یکم کارم زیاد بود این چند وقت
این برنامه رو شما تا فردا قبل از ظهر میتونید ببینید

kashir
سه شنبه 11 آبان 1389, 23:30 عصر
دوست عزیز من یکم کارم زیاد بود این چند وقت
این برنامه رو شما تا فردا قبل از ظهر میتونید ببینید

دمت گرم داداش، حالا که کمکم میکنی عجله نکن هر موقع سرت خلوت شد :تشویق:

ali_najari
چهارشنبه 12 آبان 1389, 11:53 صبح
دوست عزيز اين هم برنامه كه بهتون قول داده بودم
يكم بهم ريختس ولي خود گفتم اگر انجام ندم دوست خوبمون Kashir فكر ميكنن من دارم از زيرش در ميرم