نمایش نتایج 1 تا 11 از 11

نام تاپیک: از دیتاگرید به کریستال ریپورت

  1. #1

    از دیتاگرید به کریستال ریپورت

    همونطور که می دونید:
    1- اگه بر روی نام یک فیلد در دیتاگرید ویو کلیک کنیم رکوردها بر اساس مقادیر اون فیلد مرتب میشند(صعودی یا نزولی).
    2- اگه بخوایم رکوردهای نمایش داده شده در یک دیتاگرید ویو رو به کریستال ریپورت ارسال کنیم میتونیم دیتاست مربوطه رو به کریستال ریپورت ارسال کنیم تا ...

    سوال: چه جوری به کریستال ریپورت بفهمونیم که کاربر بر روی فیلد مثلا "نام" در دیتاگرید ویو کلیک کرده و آنها رو به صورت نزولی یا صعودی مرتب کرده و تو هم همین کار رو بکن.

    خلاصه کلام: می خوام دقیقا اطلاعاتی که در دیتاگرید نمایش داده میشه(از نظر ترتیب رکوردها) به همون ترتیب در کریستال ریپورت نمایش بدم.

  2. #2
    کاربر دائمی آواتار meh_secure
    تاریخ عضویت
    دی 1383
    محل زندگی
    California
    پست
    964
    یک راه ساده اینه که اطلاعات درون دیتاگرید رو سطر به سطر درون یک datatable بریزید.( در زمان کلیک بر روی کلید گزارش یا ...)

  3. #3
    چه جوری میشه اطلاعات رو سطر به سطر درون Datatable ریخت ؟؟.....؟

    اگه میشه یه مثال ساده بزنید.

  4. #4
    با کد زیر تونستم فقط اطلاعات یکی از فیلدها(ستونها) رو توی دیتاتیبل منتقل کنم و نمی دونم چه جوری بقیه فیلدها رو هم به دیتاتیبل منتقل کنم.
    (جدول از دو فیلد name وID تشکیل شده و با کد زیر فقط اطلاعات فیلد ID به دیتاتیبل منتقل میشه و فیلد Name هیچ مقداری نداره)


    Dim dt As New Data.DataTable("mahyar")
    dt.Columns.Add("name")
    dt.Columns.Add("id")

    For i = 0 To DataGrid1.Rows.Count - 1
    dt.Rows.Add(DataGrid1.Rows(i).Cells(0).Value)
    Next


    چه جوری رکوردهای دیتاگرید ویو رو توی دیتاتیبل بریزم؟

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    شیراز
    پست
    70
    با عرض سلام خدمت شما mah.yar
    اگر امکان داره تکه کد یا یک مثال از فرستادن یک دیتا ست به کریستال ریپورت را اینجا بگذارید ممنون می شوم چون هرچه جستجو می کنم یک جواب درست و کامل را پیدا نمی کنم .محبت می کنید اگر با یک مثال راهنمایی نمایید .
    باسپاس فراوان

  6. #6

  7. #7
    نقل قول نوشته شده توسط forozeshfard مشاهده تاپیک
    با عرض سلام خدمت شما mah.yar
    اگر امکان داره تکه کد یا یک مثال از فرستادن یک دیتا ست به کریستال ریپورت را اینجا بگذارید ممنون می شوم چون هرچه جستجو می کنم یک جواب درست و کامل را پیدا نمی کنم .محبت می کنید اگر با یک مثال راهنمایی نمایید .
    باسپاس فراوان
    برای این کار شما می تونید ابتدا فرم گزارش گیری تون رو توی کریستال ریپورت بسازید(ابتدا جدول مورد نیاز رو Export و سپس فیلدهایی که نیاز دارید رو توی کریستال قرار دهید)... تا اینجای کار اگه برنامه رو اجرا کنید تما رکوردهای موجود در جدول در کریستال نمایش داده میشه. اما اگه به عنوان مثال : بخواهید از شماره دانشجویی که در Textbox1 نوشته شده گزارش بگیرید:

    dim con as new sqlconnection(......)
    Dim sqlda As New sqlDataAdapter("select * from student where stno='" & textbox1.tex & "'", con)
    Dim dataset As New DataSet
    sqldar.Fill(dataset, "student")


    Dim cr As New CrystalReport1
    cr.SetDataSource(dataset)
    CrystalReportViewer1.ReportSource = cr

  8. #8
    بعد از کلی کلنجار رفتن موفق شدم رکوردهای توی دیتاگرید رو(به همون ترتیبی که نمایش داده میشه) رو به کریستال ریپورت ارسال کنم(با این روش دیگه نیازی نیست بدونیم از چه دیتاستی برای پر کردن دیتاگرید استفاده شده).
    امیدوارم واسه بقیه هم مفید باشه:

    Dim dt As New Data.DataTable("mahyar")
    dt.Columns.Add("stno")
    dt.Columns.Add("name")

    For i = 0 To DataGrid1.Rows.Count - 1
    Dim value() As String = {DataGrid1.Rows(i).Cells(0).Value, DataGrid1.Rows(i).Cells(1).Value}
    dt.Rows.Add(value)
    Next

    Dim cr As New CrystalReport1
    cr.SetDataSource(dt)
    Me.CrystalReportViewer1.ReportSource = cr


    نکته: با استفاده از کد برای دیتاتیبل فیلد یا همون ستون میسازیم:
    dt.Columns.Add("stno")

  9. #9
    به نظر من روش خوبی نیست با این روش شما اطلاعات دیتا گرید را سطر به سطر وارد دیتاست می کند و..
    حالا شما می تونید اینکاررو بکنید خود گرید رو با استفاده از دیتا ست پر کنید و همون دیتا ست رو که الان پر هم هست رو به کریستال ارسال کنید
    حالا می مونه نوع مرتب سازی که باید ببینی کدوم یکی از روشها رو می تونی انجام بدین
    اول باید بفهمی که کدوم ستون مرتب شده که اینو می شه فهمید (هر بار که کاربر ستونی رو مرتب می کنه نام اون رو در یه متغیر نگه دار )
    بعد حالا یا این با استفاده از این نام دیتا ست خودت رو مرتب کن وعد به کریستال ببر یا این نام را به صورت پارامتر به کریستال ارسال کن و اونجا مرتب سازی رو انجام بده
    خلاصه من اگه جای شما بودم سعی می کردم راهی رو پیدا کنم که فقط یک بار اطلاعات رو تو دیتاست پر کنم چه بر ای نمایش در گراید و چه کریستال

  10. #10
    کاربر دائمی آواتار meh_secure
    تاریخ عضویت
    دی 1383
    محل زندگی
    California
    پست
    964
    بنده عرض کردم که یک راه ساده اینه.در این مورد هم که شما فرمودید باید بگم که دیتا گرید برای خودش یک دیتاویو داره که از طریق اون اطلاعات رو sort میکنه.

  11. #11
    اینم من پیدا کردم که دیگه نیازی به متغیر هم نیست خود گراید ویو یه متد داره که نشون میده با کدوم ستون sort شده

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •