صفحه 2 از 2 اولاول 12
نمایش نتایج 41 تا 49 از 49

نام تاپیک: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

  1. #41

    نقل قول: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

    ببینید قضیه اینه که شما datasource ی رو که به گزارشتون میفرستید همونی نیست که موقعه طراحی ازش استفاده کردید.
    الاحساب برای راه افتادن کارتون٬ در خط ۲۰۰ بعد از da.Fill(ds) دستور زیر رو اضافه کنید:
    ds.WriteXml("c:\\temp.xml",XmlWriteMode.WriteSchem  a);

    یک بار برنامه را اجرا کنید٬ بعد از اجرای این خط دستور٬ یک فایل XML در آدرسی که مشخص کرده اید (به عنوان مثال c:\temp.xml) ساخته خواهد شد.

    حالا یک گزارش بسازید و این فایل را به عنوان datasource آن استفاده کنید. اگه نمیدونید به چه شکل باید اینکار را انجام بدید٬ بگید تا توضیح بدم.
    گزارش جدیدتون رو به جای گزارشی که قبلا طراحی کردید استفاده کنید.
    بعد از این کار٬ دستوری که بهتون گفتم رو از کدتون حذف کنید٬ حالا برنامتون با کدی که قبلا داشتید کار میکنه.

    موفق باشید.

  2. #42
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

    دوست عزیز جناب mn_zandy63 کد شما خطای زیر صادر می شه.

    Access to the path 'D:\' is denied.


    دوستان من نمی دونم چرا حرف شما رو نمی فهمم. یعنی چی که من از همون DATASET که تو برنامه ساختم استفاده نمی کنم؟ شاید الان تو برنامه ای که دانلود می کنید نباشه ولی من بارها به شکل های مختلفی ازش استفاده کردم. یعنی به جای DS=NEW DATASET نوشتم DS=NEW RPTDS که RPTDS همون دیتاستی هست که تو پروژم دارم. من تو پروژم از این دیتا ست چندین گزارش تهیه کردم مشکلی نداشت فقط دو تا مشکل دارن. نکته ای که وجود داره اینه که اگه گزارش از فقط یک جدول گرفته بشه مشکلی نیست ولی اگر از چند جدول در یک گزارش استفاده بشه این مشکل وجود داره.

    دوستان خواهش می کنم روی این مسئله تمرکز کنید که چرا از یک جدول جواب می ده ولی از چند جدول نه؟

  3. #43
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

    دوستان من قسمتهای آخر کدم رو (ارسال به پر کردن دیتا ست و ارسال به کریستال) رو به شکل زیر اصلاح کردم ولی نشد . خواهش می کنم در نظر داشته باشید.

    Dim ds1 As RptDs
    ds1 =
    New RptDs
    da =
    New SqlDataAdapter(str_select, con)
    da.Fill(ds1.hesab)
    da.Fill(ds1.bed_best)
    Dim cr2 AsNew RptBedBest
    cr2.SetDataSource(ds)
    If CheckBox4.Checked = TrueThen
    cr2.SetParameterValue("name_co", name_co)
    Else
    cr2.SetParameterValue("name_co", "")
    EndIf
    If CheckBox5.Checked = TrueThen
    cr2.SetParameterValue("info", info)
    Else
    cr2.SetParameterValue("info", "")
    EndIf
    cr2.SetParameterValue("date1", shamsi())

    FrmRptFactor.CrystalReportViewer1.ReportSource = cr2
    FrmRptFactor.Text =
    " §ىکں©ںë ي «¢ںëکں©ںë"
    FrmRptFactor.Show()


    بازم ممنون از توجهی که دارید.

  4. #44
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059

    نقل قول: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

    سلام
    متاسفانه بخش زیادی از کد شما با اصول برنامه نویسی ساختار یافته مطابقت چندانی ندارد ...
    من در حد فرصتی که داشتم یکسری از کدها را اصلاح کردم و چون وقت کمی داشتم و نمیدانستم چه وارد کنم تا جستجو نتیجه دهد یک خط کد هم قبل از Fill اضافه کردم که باعث می شود کل مقادیر موجود دیتابیس برگردانده شود ...
    در حال حاضر بالاخره گزارش کار میکند، شما باید خط فوق را حذف کنید (پیدایش میکنید!)

    http://rapidshare.com/files/263354514/anbar.zip
    موفق باشید.

  5. #45

    نقل قول: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

    ببین دوست عزیز این که میگی دو تا جدول جواب نمیده دقیقا به همین دلیله.

    هر دستور Select فقط یک جدول خروجی میده٬ بنابراین وقتی شما با join بین چند تا جدول و انتخاب یک سری از فیلد هاشون و حتی فیلد های ترکیبی جدید٬ یک SELECT میزنی٬ در واقع یک جدول جدید به دست میاری با اون فیلد هایی که select کردی.
    ببین جدولهایی که توی دیتاست داری چیاست؟ کدومشون این فیلدهایی که تو دستور select داری توی یک جدول دارن؟
    خب شما داری یک جدول جدید توی یک دیتاست میریزی با یک سری فیلد که از دستور select به دست اومده.
    این جدول جدید حتی اگه توی دیتاست قبلیت ریخته بشه٬ هیچ کدوم از اون جدول ها نخواهد شد٬ بلکه جدول جدیدی اضافه میشه به اون دیتاست.
    خلاصه کلام اینکه٬ select ت مهمه که چه فیلدهایی رو select کنه٬ اگه همین Select رو (بدون توجه به شرط ها) توی دیتاست به عنوان یک جدول جدید اضافه کنی٬ اونوقت میتونی بر اساس اون گزارش ایجاد کنی. و همون رو fill کنی و به crystal report بفرستی. متوجه شدی چی میگم؟

    Access to the path 'D:\' is denied.
    معنیش اینه که Access نداری (مثلا ویندوز ویستا داری ویندوزت توی درایو D هست و کاربر ادمین نیستی) و هر دلیل دیگه ای (شاید مثلا D نداری یا D سی دی رامته). خب یه جای دیگه بریز. یه آدرس دیگه بده برای ذخیره فایل٬ مثلا desktop خودت٬ کاری نداره.

  6. #46
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

    سلام دوستان ممنون از کمکی که کردید بخصوص جناب h2 عزیز و همچنین mn_zandy63
    دمتون گرم. می گن خواستن تواستن هست بعد از 2هفته حرص خوردن به هر حال درست شد از ته دل خندیدم . خوب نباید هم زیاد خوشحال باشم باید برم مشکلم رو تو ado.net و sql از پایه درست کنم.

    یک سوال از جناب h2

    Using dbDA AsNew SqlDataAdapter(str_select, con)
    dbDA.Fill(dbDS.bed_best)
    dbDA.SelectCommand.CommandText = "SELECT * FROM [hesab];"
    dbDA.Fill(dbDS.hesab)
    EndUsing

    خط سوم برام گنگ هست یعنی شما دو بار select کردی؟ اگه 3 تا جدول بود یک بار دیگه هم برای جدول سوم باید خط سوم و چهارم تکرار می شد؟ من از CommandText هرگز استفاده نکردم. اگه می شه یک توضیح بفرمایید ممنون می شم.

    بازم تشکر می کنم بخاطر کمکی که انجام دادید.
    آخرین ویرایش به وسیله mina.net : سه شنبه 13 مرداد 1388 در 08:40 صبح

  7. #47
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059

    نقل قول: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

    سلام
    من از CommandText هرگز استفاده نکردم. اگه می شه یک توضیح بفرمایید ممنون می شم.
    هر DataAdapter میتواند 4 شی Command جداگانه داشته باشد برای SELECT و INSERT و UPDATE و DELETE

    وقتی شما مثل کد قبلی یک DataAdapter را میسازید، در واقع یک DataAdapter با فقط یک Command مربوط به SelectCommand ساخته میشود.

    Command ها وظیفه اجرای دستورات sql و سا sp ها را دارند که متن sql یا نام sp درون CommandText قرار میگیرد.

    در کد قبلی من میتوانستم برای select جدول دوم یک DataAdapter جدید new کنم ولی در جهت صرفه جویی CommandText بخش SelectCommand همان DataAdapter قبلی را که شامل str_select شده بود و دیگر نیازی به str_select نبود با دستور جدید SELECT * FROM hesab پرکرده و جدول دوم را هم fill کرده ام.

    خط سوم برام گنگ هست یعنی شما دو بار select کردی؟ اگه 3 تا جدول بود یک بار دیگه هم برای جدول سوم باید خط سوم و چهارم تکرار می شد؟
    چون گزارش کریستال شما با دو جدول طراحی شده بود شما باید هر دو جدول را جداگانه به DataSet اضافه و Fill کنید تا وقتی DataSet را تحویل کریستال میدهد، همه اطلاعات را در خود داشته باشد.

    طرز انجام عمل فوق مهم نیست، مهم آن است که در قبال هر جدول یک دستور Fill مناسب داشته باشد تا آن جدول را پر کند.

    اگر سه جدول بود به سه دستور Fill مناسب نیاز داشتیم.

  8. #48
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

    ممنون دوستان مشکلم حل شد. بعد از تکمیل این برنامه باید برم ado.net , sql رو به صورت خیلی کامل بخونم. بازم ممنون

  9. #49

    نقل قول: اضافه کردن یک TEMP TABLE به دیتا ست و گزارش گیری از آن

    Happy coding

صفحه 2 از 2 اولاول 12

برچسب های این تاپیک

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

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