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

نام تاپیک: نمايش چند جدول در كريستال ريپورت و لود عكس

  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوستان برنامه نويس
    من در گزارش گيري با كريستال ريپورت مبتديم و با vb.net 2005 دارم برنامه مي نويسم
    مي خوام چند فيلد از مثلا دو جدول را تو يه dataset بريزم و بعد اونو در كريستالم نشون بدم اما با اين كه خطايي نمي ده در فيدها ي ريپورتم هم چيزي نشون نمي ده
    كدم هم در زير آوردم:

    Dim da1 AsNew SqlDataAdapter("select users.name,vahed.cost from users inner join vahed on users.num_vahed=vahed.num_vahed", con2)
    con2.Open()
    da1.Fill(dst,
    "users")
    con2.Close()

    تو ريپورتم هم فيلدهاي مورد نظرم رو از جدولشون كشيدم رو صفحه ولي نمي دونم چرا چيزي نشون نمي ده

    اگه دو تا da هم تعريف كنم كه هر كدوم فيلدهاي يه جدول رو نشون بده باز درست نمي شه چون هر فيلد يكي يو با همه فيلدهاي اوون يكي نشون ميده

    Dim da1 AsNew SqlDataAdapter("select name from users", con2)
    con2.Open()
    da1.Fill(dst,
    "users")
    con2.Close()
    Dim da2 AsNew SqlDataAdapter("select cost from vahed", con3)
    con3.Open()
    da2.Fill(dst,
    "vahed")
    con3.Close()

    پس چطوري بايد اطلاعات دو جدول رو در كريستال نشون داد؟؟؟

    يه سوال ديگه اين كه واقعا كريستال ريپورت picture box ،vb.net نداره؟؟من هر چي ابزاراشو نگاه مي كنم چيزي براي نمايش و لود عكس نمي بينم حالا اگه بخواهيم يه عكسي رو كه آدرسش در پايگاه ذخيره شده رو در كريستال لود كنيم تكليف چيه؟؟؟و يا اصلا از يه مسيري به غير از پايگاه و از يه فولدر بخوايم بياريم چيكار بايد بكنيم؟

    هم اكنون نيازمند ياري سبزتان هستم.

    ضمنا من سرچ كردم ولي جوابم رو پيدا نكردم!

  2. #2
    کاربر دائمی آواتار sara.f
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    آنجا که دروغ نباشد!
    پست
    809

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    نقل قول نوشته شده توسط mononok مشاهده تاپیک
    سلام دوستان برنامه نويس
    من در گزارش گيري با كريستال ريپورت مبتديم و با vb.net 2005 دارم برنامه مي نويسم
    مي خوام چند فيلد از مثلا دو جدول را تو يه dataset بريزم و بعد اونو در كريستالم نشون بدم اما با اين كه خطايي نمي ده در فيدها ي ريپورتم هم چيزي نشون نمي ده
    كدم هم در زير آوردم:

    Dim da1 AsNew SqlDataAdapter("select users.name,vahed.cost from users inner join vahed on users.num_vahed=vahed.num_vahed", con2)
    con2.Open()
    da1.Fill(dst, "users")
    con2.Close()

    تو ريپورتم هم فيلدهاي مورد نظرم رو از جدولشون كشيدم رو صفحه ولي نمي دونم چرا چيزي نشون نمي ده

    اگه دو تا da هم تعريف كنم كه هر كدوم فيلدهاي يه جدول رو نشون بده باز درست نمي شه چون هر فيلد يكي يو با همه فيلدهاي اوون يكي نشون ميده

    Dim da1 AsNew SqlDataAdapter("select name from users", con2)
    con2.Open()
    da1.Fill(dst, "users")
    con2.Close()
    Dim da2 AsNew SqlDataAdapter("select cost from vahed", con3)
    con3.Open()
    da2.Fill(dst, "vahed")
    con3.Close()

    پس چطوري بايد اطلاعات دو جدول رو در كريستال نشون داد؟؟؟

    يه سوال ديگه اين كه واقعا كريستال ريپورت picture box ،vb.net نداره؟؟من هر چي ابزاراشو نگاه مي كنم چيزي براي نمايش و لود عكس نمي بينم حالا اگه بخواهيم يه عكسي رو كه آدرسش در پايگاه ذخيره شده رو در كريستال لود كنيم تكليف چيه؟؟؟و يا اصلا از يه مسيري به غير از پايگاه و از يه فولدر بخوايم بياريم چيكار بايد بكنيم؟

    هم اكنون نيازمند ياري سبزتان هستم.

    ضمنا من سرچ كردم ولي جوابم رو پيدا نكردم!
    سلام دوست عزیز.
    من با C#‎ برنامه می نویسم و می تونم با کد نویسی عکس را نشون بدم و اطلاعات دو جدول را.
    اما متاسفانه visual basic بلد نیستم.

  3. #3
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام
    هنگام ساختن report تو كريستال اونجايي كه جدول ها رو انتخاب مي كنيد يك گزينه به نام add command است كه اون رو كه بزنيد يك صفحه باز مي شه كه مي تونيد توش كد بنويسيد
    تو اون كد تون را بنويسيد با استفاده از inner join
    مثلاً


    select users.* , vahed.* from vahed inner join on users.num_vahed=vahed.num_vahed

  4. #4
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    دوباره سلام
    سلام دوست عزیز.
    من با C#‎‎ برنامه می نویسم و می تونم با کد نویسی عکس را نشون بدم و اطلاعات دو جدول را.
    اما متاسفانه visual basic بلد نیستم.
    دوست من اگه بتونيد به همون #‍‍C جواب سوالاي منو بدين من شايد با سواد كمم بتونم به vb ترجمش كنم
    هنگام ساختن report تو كريستال اونجايي كه جدول ها رو انتخاب مي كنيد يك گزينه به نام add command است كه اون رو كه بزنيد يك صفحه باز مي شه كه مي تونيد توش كد بنويسيد
    تو اون كد تون را بنويسيد با استفاده از inner join
    من نگاهي انداختم ولي متوجه نشدم كه add command كه گفتيد كجاست شما مطمئنيد در vb.net 2005 هست؟ اگه جوابتون مثبته لطفا بيشتر توضيح بديد اين add command كجاست !
    اگه منظورتون وقتي هست كه مثلا يه crystal اضافه مي كنيم و يه ويزارد مي ياد كه جدولارو انتخاب مي كنيم من اوونجا add command نديدم!

  5. #5
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام
    ضميمه را ببينيد
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 01.JPG‏ (29.1 کیلوبایت, 159 دیدار)
    • نوع فایل: jpg 02.JPG‏ (66.3 کیلوبایت, 171 دیدار)

  6. #6
    کاربر دائمی آواتار sara.f
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    آنجا که دروغ نباشد!
    پست
    809

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    این لینک برنامم در این سایته، شاید کمکت کنه.
    https://barnamenevis.org/showthread.php?t=180720

  7. #7
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    aa_shiyari_1386 عزيز خيلي ممنون از صرف وقت و حوصلت

    اما اين add command در روش ويزاردي ايجاد crystal report قرار داره من از اول اين روش را كنار گذاشتم و كد نويسي دستي كردم و dataset رو در ريپورتم ريختم چون اين روش ويزاردي با تغيير سيستم ريپورتاش دچار مشكل ميشه و همين كه من در دستورات select از فرم ها مقاديري براي where مي گيرم كه اگه قرار باشه ويزاردي كار كنم اين كار ممكن نيست به همين دليلم براي نمايش چند جدول در ريپورت بايد دنبال يه روش دستي باشم
    بازم ممنون
    راستي يه سوال فرعي:
    من از كجا بدونم vb.net 2005، crystal report ورژنش چنده تو محلي كه نصب شده ديدم ولي چيزي نبود!

  8. #8
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوست عزيز
    من با همين روش تمام گزارشات يك نرم افزار را گرفتم
    و از چندين پارامتر در شرط آن در where گذاشتم
    شما وقتي اون صفحه add command را مي زنيد سمت راست يك سري دكمه هست كه يكي از اونها creat هستش كه مي تونين يك پارامتر جديد ايجاد كنيد و اين پارامتر را در شرط where بگذاريد و از داخل نرم افزار به اون پارامتر پاس كنيد.

    يك مثال مي زنم شايد به درد بخوره:


    SELECT TblOperate2.RequestNum, TblOperate2.RequestRow, TblBase2.Name, TblOperate.FarEntranceDate, TblOperate.RequestDate, TblOperate2.ObjectCount, TblOperate2.ObjectBuyCount, [ObjectCount]-[ObjectBuyCount] AS mod, TblBase4.Name
    FROM TblBase4 INNER JOIN (TblOperate INNER JOIN (TblBase3 INNER JOIN (TblBase2 INNER JOIN TblOperate2 ON TblBase2.Code = TblOperate2.ObjectCode) ON TblBase3.Code = TblOperate2.SuplierCode) ON TblOperate.RequestNum = TblOperate2.RequestNum) ON TblBase4.Code = TblOperate.RequesterCode
    WHERE (((TblBase2.GCode) Between {?GCode1} And {?GCode2}))
    GROUP BY TblOperate2.RequestNum, TblOperate2.RequestRow, TblBase2.Name,TblOperate.FarEntranceDate , TblOperate.RequestDate, TblOperate2.ObjectCount, TblOperate2.ObjectBuyCount, [ObjectCount]-[ObjectBuyCount], TblBase3.Code, TblOperate.EntranceDate, TblOperate2.ObjectCount, TblBase4.Name
    HAVING ((([ObjectCount]-[ObjectBuyCount])<>0) AND ((TblBase3.Code)={?num}) AND ((TblOperate.{?datetype}) Between {?Date1} And {?Date2}))
    {?sort};




    دوست عزيز اين كوئري رو من در يكي از گزارشام ساختم و اونهايي كه داخل }؟{ هستش پارامتر هام هست كه از داخل برنامه براش مي فرستم و خودش نتيجه كوئري رو توي ريپورت مي ريزه و من فقط در برنامه آدرس بانك و پارامترها رو براش مي فرستم

  9. #9
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام
    من با همين روش تمام گزارشات يك نرم افزار را گرفتم
    و از چندين پارامتر در شرط آن در where گذاشتم...
    خب اگه بخواهيم برنامه رو براي اجرا به سيستم ديگه اي ببريم اوون وقت چون مسير ريپورتش رو ويزاردي تعيين كرديم مشكل نداره؟؟؟؟
    يا شايدم ممكنه اين مشكل با exe كردن برنامه از بين بره؟
    ميشه در اين باره هم توضيح بدين!
    sara.f عزيز برنامتو ديدم خيلي خوب بودو به درد من مي خورد ولي مشكلم زبانش نبود ورژنش مشكل ساز بود چون به نظر مي رسه 2008 باشه ولي visual studio من 2005 هستش

  10. #10
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام
    در اينجا سعي مي كنم يك آموزش اجمالي بدم. اميدوارم براي دوستان مفيد باشه
    ما 2 تا جدول داريم كه مي خواهيم تو كريستال ريپورت بياريم
    جداول ما به شرح زير است:


    article : code * name * unit
    buy : number * article_code * buy_count * price
    حالا مي خواهيم اين 2 را وارد كريستال كنيم و يك گزارش بر اساس كالا بگيريم و در گزارشمون كد كالا را از كاربر بگيريم و بر اساس آن كد شماره فاكتور ( number ) ، نام كالا (name) ، واحد كالا ( unit ) ، مقدار خريد ( buy_count ) ، قيمت ( price ) را نشون بديم.

    براي اينكار تو اون صفحه add command را مي زنيم. و يك پارامتر به نام article_code و با نوع number و با مقدار پيش فرض 1 ايجاد مي كنيم.
    بعد كوئري زير را مي نويسيم:

    SELECT buy.number, buy.article_code, buy.buy_count, buy.price, article.name, article.unit
    FROM article INNER JOIN buy ON article.code = buy.article_code
    WHERE buy.article_code = {?article_code};



    بعداً گزارشمون را به صورت دلخواه فيلدهاشو مي چينيم


    تا اينجاي كار تموم است

    حالا بايد بريم سراغ برنامه
    در برنامه يك crystal report document روي صفحه مي زاريم ( در اينجا به اسم crystal1 )


    با پراپرتي FileName آدرس و نام فايل كريستالي كه ساختيم رو مي ديم.

    crystal1.FileName = Application.StartupPath & "\crystal.rpt"


    crystal.rpt نام فايل كريستالي است كه ساختيم

    حالا بايد آدرس بانك رو بهش بديم ( در اينجا بانك access مي باشد ولي sql هم مي تونه باشه )

    crystal1.DataSourceConnections.Item(0).SetConnecti on(Application.StartupPath + "\crystal.mdb", "", False)

    در اينجا crystal.mdb نام بانكمون هست.
    نكته: اينجا فقط دادن آدرس بانك كافيه و نيازي نيست كه query بهش بديم. زيرا قبلاً تو كريستال query را نوشتيم و خودش نتيجه را بر مي گرداند.

    البته مي تونيم يك سري مجموعه ركورد كه در داخل datatable هست هم بدهيم


    حالا نوبت پاس دادن پارامترها مي باشد.

    crystal1.SetParameterValue("article_code", Val(TextBox1.Text))



    تا اينجاي كار تموم است.

    حالا يك عدد crystalreportviewer روي فرم مي ذاريم براي نمايش گزارش و اينطوري به crystal1 نسبتش مي ديم:

    CrystalReportViewer1.ReportSource = crystal1




    و حالا گزارش پخ


    فايل هاش رو هم تو ضميمه گذاشتم

    اين پروژه كه گذاشتم با 2008 و vb هستش اگه C#‎ هم خواستي بگو بذازم
    فایل های ضمیمه فایل های ضمیمه

  11. #11

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوست عزیز
    چند تا نکته، 1 اینکه کریستال ریپورت برای VB و C#‎ هیچ فرقی با هم ندارند. یعنی اصلا ربطی به زبون برنامه نویسیت نداره.


    اگه کریستال ریپورتت همونیه که با خود Visual Studio 2005 نصب شده، همونطور که اینجا نوشته ورژن 10.2 هست.

    برای PictureBox هم که احتمالا توی پروژه ای که دوستمون گذاشتند دیدی، از منوی Insert میتونی Picture بذاری داخل صفحه. اگه روش کلیک راست کنی، از Format Graphic در زبانه Picture میتونی Graphic Location رو ببینی، مقدار اون رو میتونی از دیتابیس یا پارامتر یا هرجای دیگه بخونی و آدرس عکس بر روی هارد رو بهش بدی.

    در مورد ویزارد، استفاده از ویزارد هیچ ربطی به مشکل در جابجایی گزارش نداره. و البته روشی رو که دوستمون نشون دادن با استفاده از ADO هست، در حالی که شما با استفاده از DataSet رفتی.
    هر کدوم روش خودشه، مزایا و معایب خودشو داره، اما همون روشی که رفته بودی مشکلی نداشت.
    در حالتی که دو تا DataTable رو Fill میکردی، باید از منوی DataBase گزینه DataBase Expert رو انتخاب میکردی. میرفتی به زبانه Links و دو تا فیلد num_vahed رو از یک طرف میگرفتی و به اون طرف میکشیدی، اینطوری همون Innerjoin برقرار میشد و دیگه به ازای هر رکورد از این یکی همه رکوردهای اون یکی نشون داده نمیشد.
    حالت اول هم که میگی هیچیو نشون نمیداده دلایل مختلفی میتونه داشته باشه، مثلا اگه از همون گزارشی که برای حالت دوم استفاده میکنی، برای حالت اول هم استفاده کنی، قاعدتا جواب نمیگیری، چون datasourceش وقتی که طراحی شده (اونطور که از نوشته شما بر میاد احتمالا با دو تا جدول) با اون چیزی که داره براش ارسال میشه (با یک جدول) متفاوت هست. اما میتونه دلایل دیگه هم داشته باشه که در این لحظه به ذهن من نمیرسه.

    موفق باشی.

  12. #12
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    و سلامي دوباره

    خيلي ممنون از كمكتون با جوابتون مشكلم تا حدود زيادي حل شد فقط دو جا اشكال دارم در مورد روش ADO تو اين قسمت اسم سرور و پايگاهم رو دادم ولي نمي تونه لود كنه خودش هم در tooltip گفته اسم سرور و اسم پايگاه پس چرا لود نمي كنه؟

    crystal1.DataSourceConnections.Item(0).SetConnecti on(
    "computer1\myhome", "\apartment.mdf", True)

    و در مورد
    در حالتی که دو تا DataTable رو Fill میکردی، باید از منوی DataBase گزینه DataBase Expert رو انتخاب میکردی....
    هم بايد بگم در سرچ هايي كه كردم database expert رو ديدم ولي در vs خودم نمي بينم
    يعني من اصلا منوي data base ندارم! شايد ورژنم 2005 هست به خاطر اينه حالا اين لينكو چطوري برقرار كنم! دليل اين هم كه نتونستم از پست هاي قبلي جواب بگيرم هم همين بود چون همه برنامه ها 2008 بود و براي من باز نمي شد
    در كل روش aa_shiyari_1386 خيلي خوب بود ولي من چطوري بايد آدرس پايگاهم رو بدم تا لود بشه؟
    (شكلك تشكر فراوان)

  13. #13

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوست عزیز،
    در مورد سوال اولت مربوط به کانکشن تجربه زیادی ندارم، چون من هیچ وقت با ارتباط مستقیم کریستال با دیتابیس موافق نبودم به همین دلیل از این روش استفاده نکردم، چون این کار کلا لایه بندی رو میبره زیر سوال، ارتباط مستقیم پایین ترین لایه برنامه که دیتابیس هست با بالاترین لایه که لایه نمایشِ.
    در مورد منوی DataBase، شما داخل Visual Studio از منوی Crystal Reports قاعدتا باید منوی Database رو داشته باشید، بقیه اش که دیگه طبق روالی که بهت توضیح دادم.

    موفق باشی.

  14. #14
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    بازم سلام

    بالا خره data base expert رو پيدا كردم و لينكشو درست كردم اما دستور inner join عمل نمي كنه و چيزي نشون نمي ده من مراحل كارم رو مي نويسم لطفا ببينيد كجا اشتباه مي كنم:
    1.اول يه add، dataset مي كنم و جدول هايي كه مي خواهم توش مي كشم
    2.بعد يه كريستال add مي كنم و از قسمت project data/ado.net data set جدولهاي ديتا ست را در كريستال انتخاب مي كنم كه به صورت پيش فرض كريستال رو با اين جدول ها نشون بده
    3.در فرمم يه crystal viewer مي يارم و در لودش اين كد را قرار مي دهم:

    Dim strcon AsString = "Data Source=computer1\myhome;Initial Catalog=apartment;Integrated Security=True"
    Dim con AsNew SqlConnection(strcon)
    Dim dst AsNew DataSet
    Dim orpt AsNew crystal_report1
    Dim da AsNew SqlDataAdapter("select vahed.tel,users.name from vahed inner join users on vahed.num_vahed=users.num_vahed", con)
    con.Open()
    da.Fill(dst,
    "vahed")
    con.Close()
    orpt.SetDataSource(dst)
    Me.CrystalReportViewer1.ReportSource = orpt

    توي database expert هم لينكا برقرار هستند
    فيلدهاي مورد نظرم هم در ريپورتم مي يارم
    حالا چرا نشون نمي ده؟

  15. #15
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوست عزيز


    crystal1.DataSourceConnections.Item(0).SetConnecti on("computer1\myhome", "\apartment.mdf", True)



    به جاي كد فوق مي تونين از كد زير هم استفاده كنيد


    crystal1.SetDataSource(dst)


    dst هم قبلاً بايد با اطلاعات جدولتون پر شده باشه
    آخرین ویرایش به وسیله zoofa : سه شنبه 31 شهریور 1388 در 21:32 عصر

  16. #16
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام
    يه سوالي هم داشتم اين كه من هميشه database هاي sql ام رو در همون مسير نصب sql server يعني C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data قرار مي دم و در برنامه ازش استفاده مي كنم اگر هم سيستمم رو عوض كنم دوباره database رو به اين مسير در اوون سيستم مي برم و بعد در attach ,sql server مي كنم يا نه كارم غلطه و بايد بعد از ايجاد پايگاه در sql اونو dettach كنم و به solution اضافه كنم از add existing.. وبعد از همين مسير در sql بيام و attach كنم شايد به خاطر اينه كه نمي تونه بشناسه ..
    چون بعضي از پروژه هاي بچه ها رو مي بينم در solution ديتا بيسشون اضافه شده
    البته فكر نمي كنم به اين خاطر باشه كه نمي شناسه چون من دارم اسم سرور بهش ميدم خودش بايد تشخيص بده!

  17. #17

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوست عزیز،
    نمیتونم دقیق نظر بدم تا پروژت رو نبینم، اما چیزی که به نظر میرسه احتمالا اشتباه کردی:
    از اینکه گفتی دیتاست رو ساختی، توش جدولهات رو کشیدی، پس شما Typed Dataset داری، درسته؟ پس چرا کوئری نوشتی، dataadapter ساختی و با اون دیتاستت رو پر کردی، هیچ کدوم احتمالا لازم نبود.
    دقت کن، که شما داری جدولی به اسم Vahed رو توی دیتاستت پر میکنی، در حالی که احتمالا اون دو تا جدولی که توی دیتاستت ساختی و در کریستال ریپورت ازش استفاده کردی، دو تا جدول دیگه است (که پرشون نمیکنی با این دستور اینجا). متوجه شدی؟ به همین خاطر هست که گزارشت خالیه.
    ببین دوست من، اون مدل که دو تا کوئری داشت، منطبق تر بود، شما از اون استفاده کن نزدیک تر میشی به جواب احتمالا. اما در کل یک سری ایرادات داری که برات توضیح میدم، اگه پروژت رو بذاری خیلی دقیق تر میتونم صحبت کنم.
    پروژت رو اگه میتونی فولدر obj و bin (اگه چیز اضافه ای توش نذاشتی) پاک کن، rar کن و بذار اینجا، یک نیگاه بهش بندازیم، دقیق بهت بگم باید چیکار کنی.

    در مورد دیتابیس، خیر برای این مشکل شما اهمیتی نداره محل قرارگیری فایل database.

  18. #18
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    mn_zandy63 عزيز حق با شماست خودم هم مي دونم يه جايي دارم اشتباه مي كنم واوونم اوونجايي هست كه:
    من وقتي در لود فرمي كه crystal report viewer رو گذاشتن اين كد رو مي نويسم:

    Dim strcon AsString = "Data Source=computer1\myhome;Initial Catalog=apartment;Integrated Security=True"
    Dim con AsNew SqlConnection(strcon)
    Dim dst AsNew DataSet
    Dim orpt AsNew crystal_report1
    Dim da AsNew SqlDataAdapter("select vahed.tel,users.name from vahed inner join users on vahed.num_vahed=users.num_vahed", con)
    con.Open()
    da.Fill(dst,
    "vahed")
    con.Close()
    orpt.SetDataSource(dst)
    Me.CrystalReportViewer1.ReportSource = orpt

    براي اين اين روش رو ميرم كه در هر سيستمي راحت بتونم datasoure رو تغيير بدم و ريپورتم رو نشون بده
    خب قبل از اين كد من بايدمسلما يه كريستال داشته باشم
    خب اين كريستال هم ديگه نبايد براش يه ديتا ست ديگه تعريف كنم چون قراره از اين ds اين كد استفاده كنه
    ولي پس در dataset fields ديگه هيچ فيلدي وجود نداره كه من روي صفحه گزارشم بيارم
    چون كريستال رو blank آوردم
    مشكلم اوون قسمتيه كه كريستال رو مي خوايم اضافه كنيم چطور بايد اضافه كرد ...
    نمي دونم منظورم رو رسوندم يا نه! خودم هم گيج شدم
    فقط شما به من بگيد كريستال رو با كدوم data source اضافه مي كنيد كه فيلدها رو در database fields نشون بده تا بتونم رو صفحه بيارم

  19. #19
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    دوست من اين مثالو نگاه كنيد چطور من فيلدهاي مورد نظرم رو در كريستال نشون بدم؟

    فقط به بي سوادي من نخنديدا!

    خواستم پايگاهم رو هم بريزم نشد دو تا جدول users و malek كه هردو فيلدnum_vahed رو به صورت مشترك دارند بقيه فيلدها هم هرچي شد
    فایل های ضمیمه فایل های ضمیمه

  20. #20
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوست عزيز مشكل اين روشي كه من گفتم چيه؟

    با خوندن پست 15 https://barnamenevis.org/showpo...9&postcount=15
    فكر كنم مشكلتون حل بشه

  21. #21
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام
    سلام دوست عزيز مشكل اين روشي كه من گفتم چيه؟
    دوست من اين كد پايين عاليه راحت تو هر سيستمي ميشه تغييرش داد
    crystal1.DataSourceConnections.Item(0).SetConnecti  on("computer1\myhome", "\apartment.mdf", True)

    ولي به شرط اين كه عمل كنه و بشناسه در مورد اين يكي كدم بايد بگم
    crystal1.SetDataSource(dst)

    خب اگه قرار باشه يه ديتاست درست كنم كه توش فيلدهايي كه مي خوام بيارم همون روش قبلي ميشه كه كدش رو بالا آوردم و مشكل خاص خودش رو داره در صورتي كه تو روشي كه شما گفتيد ديگه نيازي به آوردن ديتاست نبود و ويزاردي خودش كار مي كرد
    نمي دونم منظورم رو رسوندم ؟
    فقط من مي خوام چند تا جدولو تو كريستال نشون بدم طوري كه از جايي اين مسيرش قابل تغيير باشه تا روي يه سيستم ديگه مي رم نشون بده!
    راستي يه سوال ديگه وقتي برنامه نصب و exe مي سازيم چطوري تشخيص مي خواد بده؟
    منظورم اينه كه ممكنه ديگه نيازي به تغيير مسير روي هر سيستم نباشه وبا exe كردن مشكل حل بشه!

  22. #22
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوست عزيز
    تو روشي كه بهت گفتم اينطوري dataset رو پر كن با sql زير ببين مشكل حل مي شه؟

    Dim da AsNew SqlDataAdapter("select vahed.*,users.* from vahed , users", con)


    بعد با پراپرتي setdatasource اين dataset رو بهش بده به عنوان داده ها ببين مشكل حل مي شه

  23. #23

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    نقل قول نوشته شده توسط aa_shiyari_1386 مشاهده تاپیک
    سلام دوست عزيز مشكل اين روشي كه من گفتم چيه؟

    با خوندن پست 15 https://barnamenevis.org/showpo...9&postcount=15
    فكر كنم مشكلتون حل بشه
    سلام دوست من، ایشون مشکلشون نحوه ساخت گزارش در زمان طراحی هست فعلا.
    موفق باشید

  24. #24

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    نقل قول نوشته شده توسط mononok مشاهده تاپیک
    دوست من اين مثالو نگاه كنيد چطور من فيلدهاي مورد نظرم رو در كريستال نشون بدم؟

    فقط به بي سوادي من نخنديدا!

    خواستم پايگاهم رو هم بريزم نشد دو تا جدول users و malek كه هردو فيلدnum_vahed رو به صورت مشترك دارند بقيه فيلدها هم هرچي شد
    سلام دوست عزیز، فایلت رو گرفتم، نیگاش میکنم.

  25. #25

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوست من،
    خب موردی نداره، کدی که نوشتید میتونه برای ارسال اطلاعات به گزارش به کار بره.
    اما این کد در زمان اجرا معنی و مفهوم داره، در زمان طراحی، به صرف اینکه این کد رو نوشتید که کریستال نمیتونه بفهمه چی قراره براش ارسال شه.
    من یکی از روشها رو از بین روشهای بسیاری که برای ساخت گزارش در کریستال هست رو بهتون توضیح میدم، شما فعلا یک گزارش بسازید و تست کنید، کم کم راه میفتید.
    یک نکته دیگه، فعلا نگران بحث جابجایی نرم افزارتون نباشید، کم کم، قدم قدم
    شما از TypedDataSet استفاده کنید برای شروع. دیدم که یک ConnectionString توی پروژتون ذخیره شده. خب.
    بعضی از بخشهایی رو که توضیح میدم ممکنه خودتون بلد باشید، ببخشید دیگه، من نمیدونم دقیقا چه چیزهایی رو میدونید یا نمیدونید.
    اول یک DataSet بسازید، (بر اساس توضیحات قبلیتون حدس میزنم خودتون بلد باشید، اما برای احتیاط توضیح میدم )
    روی پروژه کلیک راست کنید، Add -> New Item رو کلیک کنید، DataSet رو انتخاب کنید. فرض میکنم همان نام پیشفرض را انتخاب کنید (DataSet1)
    در صفحه باز شده، در یک نقطه خالی کلیک راست کنید، یا از منوی Data، و بر روی Add -> TableAdapter کلیک کنید، در اینجا باید یک ConncetionString بسازید، که من دیدم در پروژتون داشتید، میتونید از همون استفاده کنید، (apartmentConnectionString)
    در صفحه بعد، Use SQL Statement رو انتخاب کنید، چون میخواهیم از همون کوئری که الان دارید استفاده میکنید استفاده کنیم.
    در صفحه بعد همان کوئری که در حال حاظر در کدتان دارید وارد کنید:
    select malek.name,users.name from malek inner join users on malek.num_vahed=users.num_vahed

    در صفحه بعد نام توابع باید انتخاب شود، همان Fill و GetData خوب است، در صفحه بعد بر روی کلید Finish کلیک کنید.
    حالا یک DataTable در صفحه اضافه شده است، نامش DataTable1 است. روی نام آن کلیک راست کنید و Rename را انتخاب کنید. نام آن را malek بگذارید.
    خب، حالا یک گزارش جدید به پروژه اضافه کنید، فایل کریستالی که در حال حاضر دارید از پروژه پاک کنید.
    بر روی پروژه کلیک راست کنید، Add -> NewItem و در پنجره باز شده Crystal Reports را انتخاب کنید، فرض کنیم از همان نام پیشفرض استفاده کنید، CrystalReports1.
    پنجره Wizard باز میشود، میتوانید از این ویزارد استفاده کنید.
    بیایید از ویزارد استفاده کنیم، در صفحه اول Ok کنید، در پنجره باز شده، در پنل سمت چپ، در زیر My Connections، میتوانید دیتاستی که ساختیم را مشاهده کنید، (DataSet1) (در این مورد خاص شما مثلا test_me.DataSet1). در زیر آن، malek را مشاهده خواهید کرد، آن را انتخاب کرده و بر روی کلید < کلیک کنید تا این جدول به پنل سمت راست اضافه شود، در صفحه بعد بر روی کلید << کلیک کنید تا همه فیلد ها اضافه شوند.
    فعلا برای سادگی همینجا بر روی کلید Finish کلیک کنید.
    شما یک گزارش خواهید داشت با تمام فیلدهای کوئری که داشتید.
    خب، گزارش هم ساخته شد، البته لازم نیست حتما از Wizard استفاده کنید، اگه ایرادی داشتید، بگید تا بهتون توضیح بدم.

    خب، حالا میمونه کد، که لازم نیست اون کد قبلیتون رو بنویسد.
    کد تابع Load فرمتون رو به این شکل بنویسید:
            Dim da As New DataSet1TableAdapters.malekTableAdapter()
    Dim ds As New DataSet1
    da.Fill(ds.malek)

    Dim orpt As New CrystalReport1
    orpt.SetDataSource(ds)
    Me.CrystalReportViewer1.ReportSource = Orpt


    حالا پروژتون رو تست کنید.
    میتونید روش کار کنید، این فقط شروعی بود برای کار بیشتر و پیدا کردن روشهای بهتر.

    هرجا سوالی داشتید در خدمتم
    موفق باشید.

  26. #26

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    این پستها رو هم ببینید به نظر جالب میان
    http://www.barnamenevis.org/sh...ad.php?t=25507

    موفق باشید

  27. #27
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام

    mn_zandy63 , aa_shiyari_1386 خيلي ممنون از راهنماييتون

    من آموزشي كه داديد رو عمل كردم وجواب گرفتم خوبه ديگه نيازي به آوردن دستي فيلدها نيست و خودش اين كارو انجام ميده
    الانم اوون پست جالب رو نگاه كردم آموزش هايي كه توش هست رو استفاده مي كنم و يه دور انجام مي دم تا كريستال رو ياد بگيرم
    اگه مشكلي داشتم و يا جواب سوالم رو كامل نگرفتم دوباره وقتتون رو مي گيرم

    (شكلك تشكر فراوان و آرزوي موفقيت)

  28. #28

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    موفق باشید دوست عزیز

    Happy Coding...

  29. #29
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آبان 1386
    پست
    114

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    دوباره سلام

    من آموزش هايي كه توي اوون پست و لينكايي كه به ساير قسمتها داشت بررسي كردم و حتي vb.6 رو هم نصب كردم تا كريستال اوونو هم ببينم اما vb.6 براي كريستل از component و dll هاي خاصي استفاده مي كنه كه مسلما vb.net اونارو نداره در نتيجه براي من مفيد نيست ولي از بين يكي از آموزش ها مقاله اي در vb.net پيدا كردم كه خيلي خوب بود و اگه ادامه ساير مقالاتش هم بود فكر كنم مشكلم حل مي شد دوستمون kablayi از منبع persian developer مقاله رو آورده بودن اما چون منبع خيلي خوب ذكر نشده بود و كمي هم قديمي بود پيدا كردن اصل منبع مشكله من مقاله رو در ضميمه آوردم و طبق اون عمل كردم به راحتي كدش قابل حمله و براي يه جدولي خوب جواب ميده اما طبق معمول براي دو جدولي چيزي نشون نمي ده
    اينم كدش:

    Imports System.Data.SqlClient
    Imports System.IO.Directory
    PublicClass Form1
    PrivateSub CrystalReportViewer1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Load
    Dim strReportPath AsString = GetCurrentDirectory()
    If strReportPath.Substring(strReportPath.Length - 9) = "bin\Debug"Then
    strReportPath = strReportPath.Substring(0, strReportPath.Length - 10)
    EndIf
    strReportPath &= "\CrystalReport1.rpt"
    Dim rpt AsNew CrystalDecisions.CrystalReports.Engine.ReportDocum ent
    rpt.Load(strReportPath)
    Dim dstData As DataSet = fncGetData()
    rpt.SetDataSource(dstData)
    CrystalReportViewer1.ReportSource = rpt
    EndSub
    PrivateFunction fncGetData() As DataSet
    Dim strConn AsString = "Data Source=.\SQLEXPRESS;AttachDbFilename=" & _
    GetCurrentDirectory.Substring(0, GetCurrentDirectory.Length - 10) & _
    "\apartment.mdf;Integrated Security=True;User Instance=True"
    Dim sqlConnection1 AsNew SqlConnection(strConn)
    Dim strQuery AsString = "Select users.name,sharzh.mablagh from users inner join sharzh on users.num_vahed=sharzh.num_vahed"
    Dim sqlDataAdapter1 AsNew SqlDataAdapter(strQuery, sqlConnection1)
    Dim dstData AsNew apartmentDataSet
    sqlDataAdapter1.Fill(dstData, "users")
    Return dstData
    EndFunction

    تو اين كد همون طور كه aa_shiyari_1386 فرمودن از

    rpt.SetDataSource(dstData)

    استفاده شده و همون طور كه من هم در جوابشون گفتم تو پر كردن ديتا ست مشكل كد اول خودمو داره و چيزي نشون نمي ده
    من هنوز جواب يه سوالمو نگرفتم نمي شه كدمون قابل حمل نباشه ولي برنامه رو كه exe كنيم تو هر سيستمي نشون بده؟
    در هر حال من هنوز به دنبال جوابم مي گردم و از دوستاني كه چيزي مي دونن خواهش مي كنم كه كمكم كنن
    با تشكر
    فایل های ضمیمه فایل های ضمیمه

  30. #30

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    سلام دوست عزیز، نمونه کدی که آوردید به نظر مشکلی برای قابلیت حمل نداره.
    شما توی همه پستهاتون نگران این قضیه اید در حالی که واقعا مشکل شما این نیست، شما مشکلتون طراحی گزارش هست. جای دیگه ای بهتون گفتم شما فعلا نگران این بحث نباشید و بهش فکر نکنید، گزارش ساختن رو که دستتون اومد در اون مورد بحث میکنیم.

    گفتید با چند تا جدول مشکل دارید، آیا مشکلتون با همین کدی هست که اینجا آوردید؟
    آیا فایل گزارشتون رو طراحی کردید؟ فیلدها رو داخل گزارش آوردید؟
    در این صورت شما در فایل گزارشتون چند تا جدول دارید؟ موقع طراحی از چه طریق فیلدها رو داخل designer گزارش آوردید؟

    ببینید شما موقعی که میخواهید گزارش رو طراحی کنید اگه قراره یک DataSet رو با دستور SetDataSource به گزارش بفرستید، حتما باید قبل از طراحی فیلدهایی که قراره به گزارش فرستاده بشه رو تعیین کنید.
    اگه مثل پست قبلی که براتون نوشتم از TypedDataSet ها استفاده کنید که باید همین کوئری یا یک کوئری مثل این که همین فیلد هارو خروجی بده، به دیتاست اضافه کنید و به همون روشی که در پست قبلی نشون دادم عمل کنید.
    اگه هم مثل این کد بخواهید با استفاده از Command و DataAdapter یک UnTypedDataSet رو Fill کنید و برای گزارش ارسال کنید، چند راه دارید که به عنوان نمونه یک روش رو براتون توضیح میدم.
    شما تابعی به نام fnGetData نوشتید در پست قبل. اون رو اجرا کنید، و خروجی اون رو بوسیله دستور WriteXML در یک فایل xml ذخیره کنید. به این شکل:
            Dim dstData As DataSet = fncGetData()
    dstData.WriteXml("c:\testdata.xml", XmlWriteMode.WriteSchema)

    به این ترتیب شما یک فایل XML دارید که نمونه ای از خروجی کوئری شما در آن قرار دارد، (به عنوان مثال در آدرس c:\testdata.xml، حالا یک فایل گزارش به پروژه اضافه کنید، Use the report wizard رو Ok کنید، در صفحه بعد، Create New Connection رو دابل کلیک کنید، ADO.NET (XML) رو دوبار کلیک کنید، در قسمت File path آدرس فایل XML رو که در مرحله قبل ساختیم بدید یا با کلیک بر روی کلید ... فایل رو انتخاب کنید، بقیه کار مثل همان روشی است که در پست قبل توضیح دادم.

    اگه جایی رو متوجه نشدید سوال کنید در خدمتم.

    موفق باشید

  31. #31

    نقل قول: نمايش چند جدول در كريستال ريپورت و لود عكس

    نقل قول نوشته شده توسط zoofa مشاهده تاپیک
    سلام
    در اينجا سعي مي كنم يك آموزش اجمالي بدم. اميدوارم براي دوستان مفيد باشه
    ما 2 تا جدول داريم كه مي خواهيم تو كريستال ريپورت بياريم
    جداول ما به شرح زير است:


    article : code * name * unit
    buy : number * article_code * buy_count * price
    حالا مي خواهيم اين 2 را وارد كريستال كنيم و يك گزارش بر اساس كالا بگيريم و در گزارشمون كد كالا را از كاربر بگيريم و بر اساس آن كد شماره فاكتور ( number ) ، نام كالا (name) ، واحد كالا ( unit ) ، مقدار خريد ( buy_count ) ، قيمت ( price ) را نشون بديم.

    براي اينكار تو اون صفحه add command را مي زنيم. و يك پارامتر به نام article_code و با نوع number و با مقدار پيش فرض 1 ايجاد مي كنيم.
    بعد كوئري زير را مي نويسيم:

    SELECT buy.number, buy.article_code, buy.buy_count, buy.price, article.name, article.unit
    FROM article INNER JOIN buy ON article.code = buy.article_code
    WHERE buy.article_code = {?article_code};



    بعداً گزارشمون را به صورت دلخواه فيلدهاشو مي چينيم


    تا اينجاي كار تموم است

    حالا بايد بريم سراغ برنامه
    در برنامه يك crystal report document روي صفحه مي زاريم ( در اينجا به اسم crystal1 )


    با پراپرتي FileName آدرس و نام فايل كريستالي كه ساختيم رو مي ديم.

    crystal1.FileName = Application.StartupPath & "\crystal.rpt"


    crystal.rpt نام فايل كريستالي است كه ساختيم

    حالا بايد آدرس بانك رو بهش بديم ( در اينجا بانك access مي باشد ولي sql هم مي تونه باشه )

    crystal1.DataSourceConnections.Item(0).SetConnecti on(Application.StartupPath + "\crystal.mdb", "", False)

    در اينجا crystal.mdb نام بانكمون هست.
    نكته: اينجا فقط دادن آدرس بانك كافيه و نيازي نيست كه query بهش بديم. زيرا قبلاً تو كريستال query را نوشتيم و خودش نتيجه را بر مي گرداند.

    البته مي تونيم يك سري مجموعه ركورد كه در داخل datatable هست هم بدهيم


    حالا نوبت پاس دادن پارامترها مي باشد.

    crystal1.SetParameterValue("article_code", Val(TextBox1.Text))



    تا اينجاي كار تموم است.

    حالا يك عدد crystalreportviewer روي فرم مي ذاريم براي نمايش گزارش و اينطوري به crystal1 نسبتش مي ديم:

    CrystalReportViewer1.ReportSource = crystal1




    و حالا گزارش پخ


    فايل هاش رو هم تو ضميمه گذاشتم

    اين پروژه كه گذاشتم با 2008 و vb هستش اگه C#‎ هم خواستي بگو بذازم
    سلام
    میتونین این مشکلم رو حل کنین :

    اشکال در استفاده از 2 جدول در کریستال ریپورت


    ممنون

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

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