PDA

View Full Version : سوال: چطوری ConnectionString دیتابیسم رو به گزارش پاس بدم.



morteza271
شنبه 01 مرداد 1390, 07:00 صبح
سلام دوستان.
یه سوال در مورد گزارشگیری با Stimul دارم.میدونم اینجا جاش نیست ولی چیکار کنم فقط اینجاست که مهندسان زود جواب میدن.

من داخل گزارشم یه کانکشن درست کردم و یه مقدار پیش فرض ConnectionString بهش دادم و کار میکنه و مشکلی نداره.
مشکل من اونجاست که اگه بخوام برنامه رو ببرم روی یه سیستم دیگه که دیتابیسش فرق داره چیکار کنم؟
چطوری میتونم مقدار ConnectionString رو از داخل کد سی شارپ بهش پاس بدم.
هر کاری میکنم نمیتونم.
دوستان لطفا کمکم کنید.
با تشکر

morteza271
شنبه 01 مرداد 1390, 10:53 صبح
دوستان کسی نیست جواب ما رو بده؟
بدجوری بهش نیاز دارم!
از صبح دارم جستجو میکنم ولی چیزی گیرم نیومده.خواهشا کمک کنید.
با تشکر

a-erfani
دوشنبه 03 بهمن 1390, 13:27 عصر
سلام
من هم همين مشكل را دارم.
اگه ميشه راهنمايي فرماييد.

AliSaeedi_v
دوشنبه 03 بهمن 1390, 14:09 عصر
سلام جای دیتا بیس فرق داره یا کلا خود دیتابیس عوض میشه؟

gerdioz
دوشنبه 03 بهمن 1390, 14:40 عصر
سلام دوست عزیز اگه شما میخاید که مقداری رو در برنامه تغییر بدید باید اونو OverRide کنید که البته مشکل شما این نیست چون با هر بار بستن برنامه مقدار پیش فرض می گیره
شما باید برای برنامه تون تی ستاپ مسید اتصال رو دستی بدید و در یک فایل کد کنه و ذخیره منه حالا وقتی برنامه لود میشه از داخل فیل مقدار Connection String رو از فایل مقدار دهی میکنه

PetekDincos
دوشنبه 03 بهمن 1390, 15:16 عصر
با سلام
دوست عزیز شما موقع کار با StimulReport به نظر من برای گزارش گیری از دیتابیس بهتره کوئری مورد نظرتون رو در خود CodeBehind از دیتابیس واکشی کنید سپس این کوئری رو به خود گزارش پاس بدید و در خود گزارش یه Data Source ایجاد می کنید و با RegData کوئری رو به خود گزارش پاس می دید اگه نتونستی این کار رو انجام بدی بگو یه Sample درست کنم با تشکر

a-erfani
دوشنبه 03 بهمن 1390, 23:18 عصر
با سلام
نتونستم كاري كه شما گفتيد را انجام بدم.
من توي گزارشم يك store procedure را از sqlserver روي سيستم خودم load مي كنم و از داخل #c - سه تا پارامتر به گزارشم پاس ميدم و گزارش درست كار مي كنه.
حالا مي خوام روي سيستم ديگه اي برنامه را اجرا كنم ولي بايد connection string گزارش را از داخل برنامه #c تغيير بدم كه نشد. راههاي زيادي را هم امتحان كردم ولي نشد.
اگه لطف كنند و راهنمايي كنيد خيلي ممنون مي شم.

a-erfani
سه شنبه 04 بهمن 1390, 14:18 عصر
با سلام
دوست عزیز شما موقع کار با StimulReport به نظر من برای گزارش گیری از دیتابیس بهتره کوئری مورد نظرتون رو در خود CodeBehind از دیتابیس واکشی کنید سپس این کوئری رو به خود گزارش پاس بدید و در خود گزارش یه Data Source ایجاد می کنید و با RegData کوئری رو به خود گزارش پاس می دید اگه نتونستی این کار رو انجام بدی بگو یه Sample درست کنم با تشکر

دوست عزيز ممنون ميشم اگه راهنمايي كنيد.

AliSaeedi_v
سه شنبه 04 بهمن 1390, 14:24 عصر
میشه connection string رو بزارین ببینم؟

gerdioz
سه شنبه 04 بهمن 1390, 14:33 عصر
دوست عزیز چرا مساله رو سخت میکنید کانکشن رو در خارج از برنامه مثل فایل بررسی کنید جهت امنیت هش کنید چیزی دیگه هست حالا هم میشه موقع نصب برنامه فایل پیکره بندی بشه هم از خود برنامه

a-erfani
سه شنبه 04 بهمن 1390, 14:52 عصر
دوست عزیز چرا مساله رو سخت میکنید کانکشن رو در خارج از برنامه مثل فایل بررسی کنید جهت امنیت هش کنید چیزی دیگه هست حالا هم میشه موقع نصب برنامه فایل پیکره بندی بشه هم از خود برنامه

ممنون از پاسختون. ولي اگه ميشه يكم بيشتر راهنمايي كنيد.
ببيند من توي برنامه از اين چند خط كد استفاده مي كنم:

81363

كه در آن StiReport1 اسم گزارشم هست.

a-erfani
سه شنبه 04 بهمن 1390, 14:55 عصر
میشه connection string رو بزارین ببینم؟

"Initial Catalog=DbAnbar3;Integrated Security=False;Password=135;User ID=sa;Data Source=."

PetekDincos
سه شنبه 04 بهمن 1390, 14:57 عصر
با سلام
این نیز یه نمونه به شیوه ای که من گفتم و شیوه های مختلفی نیز می تونه وجود داشته باشه

AliSaeedi_v
سه شنبه 04 بهمن 1390, 14:59 عصر
سلام اینطوری بنویس امتحان کن
"server="+Environment.MachineName+";Initial Catalog=DbAnbar3;Integrated Security=False;Password=135;User ID=sa;Data Source"

a-erfani
سه شنبه 04 بهمن 1390, 15:46 عصر
سلام اینطوری بنویس امتحان کن
"server="+Environment.MachineName+";Initial Catalog=DbAnbar3;Integrated Security=False;Password=135;User ID=sa;Data Source"


ممنون از توجهي كه مي كنيد. ولي همانطور كه گفتم مشكل خود رشته connection string نيست بلكه ارسال اون به فايل گزارش (از قبل تهيه شده با برنامه StimulReport) مي باشد.

a-erfani
سه شنبه 04 بهمن 1390, 15:58 عصر
با سلام
این نیز یه نمونه به شیوه ای که من گفتم و شیوه های مختلفی نیز می تونه وجود داشته باشه

خيلي ممنون از مثالي كه زديد.من مثالتون را متوجه شدم فقط يك مشكل دارم اون هم اينه كه من نتيجه اجراي Store Proceder خودم را درون يك Datatable مي ريزم. نتيجه اجراي اين SP حدود 30 رديف داده مي شه. حالا چطوري ليستم را پر كنم
شما در دستور ليست خودتون مثلا 2 بار از new myclass استفاده كرديد حالا من چطور اين ليستم را پر كنم.
ممنون ميشم اگه باز هم لطف كنيد.

PetekDincos
سه شنبه 04 بهمن 1390, 16:04 عصر
خيلي ممنون از مثالي كه زديد.من مثالتون را متوجه شدم فقط يك مشكل دارم اون هم اينه كه من نتيجه اجراي Store Proceder خودم را درون يك Datatable مي ريزم. نتيجه اجراي اين SP حدود 30 رديف داده مي شه. حالا چطوري ليستم را پر كنم
شما در دستور ليست خودتون مثلا 2 بار از new myclass استفاده كرديد حالا من چطور اين ليستم را پر كنم.
ممنون ميشم اگه باز هم لطف كنيد.
با سلام
شما می تونید تو خود گزارش هنگام ایجاد DataSource تعیین کنید که کالکشن تون چی باشه مثلا Bussines Object و یا DataTable و... شما چون DataTable می گیرید تو خود گزارش هم کالکشن DataSource رو هم DataTable انتخاب کنید و نیازی به پرکردن لیست وجود نداره و همون DataTable رو با دستور RegData به گزارش پاس بدید با تشکر

a-erfani
سه شنبه 04 بهمن 1390, 16:30 عصر
با تشكر از همه دوستان كه وقت گذاشتيد. مشكل من با اضافه شدن اين خط به برنامه حل شد.


((StiSqlDatabase)report.Dictionary.Databases["con"]).ConnectionString = newConnectionString;