من فیلدی از نوع text دارم که توش فقط عدد وارد میکنم( مثلا 2000 یا 3200 و...)
حالا می خوام توی کریستال ریپورت نوع این فیلد رو به integer(عددی) تغییر بدم.
با چه فرمولی توی کریستال ریپورت مقدار یه فیلد رو به integer تبدیل کنم.
Printable View
من فیلدی از نوع text دارم که توش فقط عدد وارد میکنم( مثلا 2000 یا 3200 و...)
حالا می خوام توی کریستال ریپورت نوع این فیلد رو به integer(عددی) تغییر بدم.
با چه فرمولی توی کریستال ریپورت مقدار یه فیلد رو به integer تبدیل کنم.
در اصل فیلدی دارم به اسم mablagh که نوع اون integer است و توی کریستال ریپورت از طریق Sum مجموع فیلد رو حساب میکنم و تا اینجا مشکلی ندارم.
اما وقتی دیتاتیبل رو به کریستال ارسال میکنم چون نوعش Stringه نمیتونه مقادیر فیلد رو جمع کنه.
Dim dt2 As New DataTable
dt2.Columns.Add("mablagh")
Dim i As Integer
For i = 0 To Me.DataGridView1.Rows.Count - 1
Dim values() As String = {Me.DataGridView1.Rows(i).Cells(0).Value}
dt2.Rows.Add(values)
Next
Dim cr As New CrystalReport2
cr.SetDataSource(dt2)
Me.CrystalReportViewer1.ReportSource = cr
تو این روش به جای اینکه مقدار رو مستقیما از جدول وارد دیتاتیبل کنم از دیتاگرید وارد دیتاتیبل میکنم و دیتاتیبل رو به کریستال پاس میدم.
مشکل هم همین جاست که توی کد زیر
dt2.Columns.Add("mablagh")
باید نوع فیلد مبلغ رو براش تعریف کنم و چون تعریف نشده به صورت اتوماتیک از نوع string در نظر گرفته میشه.
با کد زیر برای تعریف کردن نوعش دارم ور میرم اما فعلا نمیشه:
dt2.Columns.Add("mablagh", System.Type.GetType("system.xxx"))
از تابع ()VAL در کریستال ریپورت استفاده کنید.
ممنون .meh_secure
با کد زیر مشکلم حل شد.
dt2.Columns.Add("naghdi", System.Type.GetType("System.Int16"))
این کد نوع فیلدم رو به عدد صحیح تبدیل میکنه تا دیگه نیازی به فرمول توی کریستال نباشه.
ضمن اینکه از همه دوستان سپاسگذارم که به همدیگه کمک میکنید.:تشویق: