PDA

View Full Version : مشگل در login کردن یه گزارش به سرور



ali_mnkt
چهارشنبه 19 فروردین 1388, 15:25 عصر
سلام به همه دوستان

من یه واسه برنامم یه گزارش با crystal report درست کردم . من این برنامه رو در یک کامپیوتر

نوشتم وهیچ مشگلی با نحوه اجرای فایل گزارش ندارم. اما هنگامی که این برنامه رو خواستم

در یک محیط تحت شبکه اجرا کنم در هنگام نمایش گزارش در crystal report viewer یه صفحه ای

باز شد که از من یه password می خواد . البته برنامه sqlserver 2005 که در سرور هست

که این گزارش اطلاعاتشو از اون می گیره password نداره . البته سیستم عاملی که در کامپیوتر

سرور استفاده می شه windows server 2003 هست که کد login داره این کد رو هم میزنم

ولی قبول نمی کنه . اولا می خوام این psswoerd که از من می خواد چیه ؟ و چطوری باید

پیداش کنم . من تصویر در خواست رو هم اینجا ضمیمه می کنم . ممنمون می شم راهنمایی

کنید چون خیلی گیرم.

mom alone
چهارشنبه 19 فروردین 1388, 19:56 عصر
سلام این مشکل تقریبا همه داشتن
و همه هم بدونه جستجو پرسیدن
شما هم اگه جستجو می کردی می فهمیدی
این صفحه برای وصل شدن به دیتا بیس هستش
شما اگه اینتگریتد سکورتی رو فعال کردی برای sql
پس اون تیک پایین فرم رو بزن و تموم
اگه مشکل حل نشد( اینتگریتد سکورتی رو فعال نکردی)
نام کاربری رو "sa" بده و پسورد رو هم که پسورد sa رو بده
این نام کاربر و پسورد sql server هستش
(جسارت نشه هااااااا می دونی یوزر sa چیه؟)
اگه مشکلت حل نشد بگو

ali_mnkt
چهارشنبه 19 فروردین 1388, 22:06 عصر
مرسی دوست عزیز از راهنماییت

می شه بگی دقیقا چطوری اون می شه اون تیک رو زد ؟ (اگه می شه مراحل رسیدن به اونو

توضیح بده ) ( خیلی گیر اینم که این صفحه رو از بین ببرم )


راستی user و pass مربوط به sa رو هم نمی دونم لطف کنی ممنون می شم

mom alone
چهارشنبه 19 فروردین 1388, 23:07 عصر
بایت اینتگریتد سکورتی و اون تیکی که گفتم
عزیزم تو همون فرمی که عکسشو گذاشتی
پایین اون فرم یه تیک داره اونو بزن و ادامه کار

بابت پسور sa
در منیجمنت استدیو یه قسمت سکورتی داره و درون اون قسمت logins(البته من برای 2008 گفتم اگه نسخه دیگه داری حکر می کنم همینجوری یا خیلی شبیه این)
در این قسمت کاربرانی که می تونن از sql استفاده کنن مشخص شده شما می تونی یه کاربر جدید بسازی
البته sql یه یوزر پیشفرض داره به نام saکه در همه نسخه ها هست
شما برو و پسوورد اونو ریست کن و سپس درون فرمی که عکسشو گذاشتی وارد کن

البته اگه نمی خای همیشه بیاد و کاربر درگیر اون بشه باید با کد این تنظیمات رو ست کنی
من سیشارپ کار می کنم و این کد برای تنظیم نام سرور و نام کاربر و پسوورد هست اگه شما از چیز دیگری استفاده می کنی از دیگر بچه ها در خواست کن تا برات بنویسند
البته اگه یه کم باهوش باشی می تونی معادل اونو برای خودت پیدا کنی(اگه ازسی شارپ استفاده نمی کنیااا)


این کد سی شارپ


CrystalDecisions.Shared.ConnectionInfo crDbConnection = new CrystalDecisions.Shared.ConnectionInfo();
crDbConnection.IntegratedSecurity = true;
crDbConnection.DatabaseName = "aloneabouzar";
crDbConnection.ServerName = ".";
CrystalDecisions.CrystalReports.Engine.Database crDatabase = rptCustomersOrders.Database;
CrystalDecisions.Shared.TableLogOnInfo oCrTableLoginInfo;
foreach (CrystalDecisions.CrystalReports.Engine.Table oCrTable in crDatabase.Tables)
{
oCrTableLoginInfo = oCrTable.LogOnInfo;
oCrTableLoginInfo.ConnectionInfo = crDbConnection;
oCrTable.ApplyLogOnInfo(oCrTableLoginInfo);
}



پس توجه کردی شما باید معادل این کد رو برای پروژت به دست بیاری(این کد سیشارپه)
اگه می خای دیگه ظاهر نشه؟
بازم مشکل داشتی بگو

ali_mnkt
پنج شنبه 20 فروردین 1388, 01:23 صبح
دوست عزیز من رفتم password کاربر sa رو تغییر بدم واسه همینم password ای که اونجا بود رو

پاک کردم وpassword خودم وارد کردم ( passworde مربوط به sa طولش 15 بود) و ok رو زدم.

وقتی اون پنجره رو بستم و دوباره باز کردم دیدم روباره همون password با طول 15 اونجاست

دوباره عوضش کردم ولی باز تغییری نکرده بود. آیا واسه تغییر password روش دیگه ای داره ؟

حتی یه login جدید تعریف کردم ولی password اونم مثل sa یه رشته به طول 15 باقی می مونه.


راستی اگه زحمتی نیست راجع به کدت یه توضیحی بده (یعنی من چه قسمت هاییشو تو

برنامه خودم باید تغییر بدم )

kiosksoft
پنج شنبه 20 فروردین 1388, 09:11 صبح
دوست عزیز

هنگام اتصال به یک سرور sql , پارامتر های تشخیص هویت جهت ارتباط با سرور ضروری هستند . برای انجام این کار قبل از بارگذاری گزارش باید این پارامتر ها ارسال شوند که شامل نام سرور ,کاربر,و کلمه عبور میباشد. نکته ای که اینجا باید رعایت کنید و بیشتر مربوط به کریستال ریپورت میباشد این است که هنگام ساختن گزارش اسم سرور در گزارش ثبت میشود,اگر برنامه به سیستم دیگه ای انتقال یابد چون نام سرور هم تغییر کردن با چنین مشکلاتی روبرو خواهید شد. برای حل مشکلات شبیه نام سرور سعی کنید از یک ODBC برای ساختن گزارش استفاده کنید. و برای مشکل در ارتباط با sql هم پارامتر ها ی تشخیص هویت رو بصورت داینامیک ارسال کنید.

اگر هم حل نشد بگید که نمونه براتون بزارم.

mom alone
جمعه 21 فروردین 1388, 17:49 عصر
نازت شم این که پسوورد رو به صورت 15 رقم نشون میده
همیشه ایجوری هست (برای امنیت بیشتر ،این کلک sql هست تا تعداد کاراکتر پسوورد مشخص نشه)
همین روشی که رفتی برای تغییر پسوورد درست بوده و پسوردت تغیر کرده است

در مورد کدم
اگه شما هم سی شارپ کار می کنی؟
این کد برات خوبه(فقط کافیه نام سرور و پسوورد رو تغییر بدی )
اگه از زبان دیگه استفاده می کنی کد روباید تغییر بدی جونم
توضیح دوستمون asp.net.csharp.ir هم خوبه اما اگه بخای برنامت کاربر پسند باشه و کاربر خیلی را حت باشه
از روش من استفاده که که به صورت پویا نام سرور و نام کاربر و پسوورد رو ست میکنم
البه من از اینتگریتد سکورتی استفاده مکنم
شما هم بگو به چه زبانی برنامه می نویسی
در ضمن جسارت نشه اینتگریتد سکورتی یهروش برای وصل شدن به sql هست از طریق ویندوز نه نام کاربری

ali_mnkt
شنبه 22 فروردین 1388, 01:38 صبح
با سلام مجدد

دوست عزیز(mom alone) من پسورد sa رو عوض کردم و در پنجره ای که در شکل نشون داده

بودم به جای log id نوشتم sa ودر قسمت password هم پسورد جدید sa رو گذاشتم.

اما تاثیری نداشت و دوباره login fail زد :ناراحت: واقعا دیگه عقلم کار نمی کنه !!!!!

ali_mnkt
یک شنبه 23 فروردین 1388, 01:13 صبح
دوستان هنوز مشگل من حل نشده کسی راه حلی نداره؟

محمدامین شریفی
یک شنبه 30 فروردین 1388, 16:46 عصر
دوستان هنوز مشگل من حل نشده کسی راه حلی نداره؟
آقا من خیلی زودتر از اینها میخواستم به تاپیک شما پاسخ بدم،ولی متاسفانه editor و "فرستادن پست" فارم برنامه نویس قاطی کرده بود(تمام بزرگان،از جمله آقا اکبر:بوس: هم این مشکل فارم را تایید میکنند)
دوست من این کد را ببنویس ببین مشکلت حل میشه:


reportDocument1.DataSourceConnections[0].SetConnection("SErver", "DataBase", "user", "password");


----------------------


اگر connection رو توی app.config یا web.config نوشتی و data set هات رو بوسیله آن connection وصل کردی.connection string را فقط توی app.config یا web.config تغییر بدهید.

----------------------

اینجا را ببین (http://www.dotnetjunkies.ddj.com/Article/790775A0-C493-46D8-ABE0-40CA588D33D3.dcik)،به احتمال زیاد مشکلت حل میشه.آقا علی گل،sql من دارای userName و password نیست،وگرنه واسط امتحان میکردم.

----------------------

پ.ن:انگار برخی پست ها در این تاپیک پاک شده است.دوستان در هنگام پاسخ دادن به تاپیک مراعات جو علمی این فارم بفرمایند.



ممنون

hojjat_gh
دوشنبه 14 اردیبهشت 1388, 12:15 عصر
با سلام
جناب شریفی میشه بگید در این کانکشن استرینگی که تعریف کردید سرور رو چی قرار بدیم تا ریپورت از mdf کنار فایل exe استفاده کنه

محمدامین شریفی
دوشنبه 14 اردیبهشت 1388, 21:55 عصر
با سلام
جناب شریفی میشه بگید در این کانکشن استرینگی که تعریف کردید سرور رو چی قرار بدیم تا ریپورت از mdf کنار فایل exe استفاده کنه
دوست گل من،:بوس:
شما باید بجای serverName نام سروری که در هنگام نصب sql مشخص کردید قرار دهید.
اگر sql ات فعال باشه بجاش علامت . میتونی قرار بدی
دوست من، sql ات را اجرا کن،نامش را هنگام login میبینی.توی وب هم در پنل مدیریتیت نام سرور را نوشه،که البته با همون .(بخوانید دات) هم کار میکنه.
یک راه راحت تر اینست که در منوی data گزینه show data source را بزنی و یک data source بسازی.بعدش میری توی web.config و یا app.config ببینی کانکشنت چگونه ساخته شده است.
پ.ن:میتونی اون data source را که ساختی را روی فرم بکشی و یک جدول تمیز توی فرمت ایجاد بشه.در ضمن میتونی روی هر کدام از field های این data source کلیک راست کنی و امکانات VS را ببینی.

پیروز باشی

hojjat_gh
سه شنبه 15 اردیبهشت 1388, 00:50 صبح
با تشکر از جوابتون
ولی اقای شریفی من یه سوال دارم
من تو اکسپرس با کد زیر به بانک mdf متصل میشم :

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Ostad.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
ولی حالا سوال من اینه فرض کنید من الان میخوام یه ریپورت بسازم اول از همه من باید کانکشن اونو معلوم کنم حالا فرض کنید من بخوام از یک mdf که تو پوشه دیباگ برناممه استفاده کنم(و نه از بانکهای اتچ شده تو خود اس کیو ال) چطوری میتونم به اون کانکت بشم و ازش استفاده کنم

محمدامین شریفی
سه شنبه 15 اردیبهشت 1388, 12:18 عصر
با تشکر از جوابتون
ولی اقای شریفی من یه سوال دارم
من تو اکسپرس با کد زیر به بانک mdf متصل میشم :

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Ostad.mdf;Integrated Security=True;Connect Timeout=30;User Instance=Trueولی حالا سوال من اینه فرض کنید من الان میخوام یه ریپورت بسازم اول از همه من باید کانکشن اونو معلوم کنم حالا فرض کنید من بخوام از یک mdf که تو پوشه دیباگ برناممه استفاده کنم(و نه از بانکهای اتچ شده تو خود اس کیو ال) چطوری میتونم به اون کانکت بشم و ازش استفاده کنم

CrystalReport11.DataSourceConnections[0].SetConnection(@".\SQLEXPRESS", "Ostad", true);
crystalReportViewer1.ReportSource = CrystalReport11;
استاد پرسشت حل شد؟

saeedsa
سه شنبه 11 مرداد 1390, 18:32 عصر
در اینجا دو حال پیش می آید یا گزارش subreport هست یا داکیومنت معمولی
ابندا باید داکیومنت گزارش و کانکشن اینفو را به توابع بدهد
نحوه پر کردن connectionInfo






ConnectionInfo ConnectionInfoRpt = new ConnectionInfo();
ConnectionInfoRpt.IntegratedSecurity = true;
ConnectionInfoRpt.DatabaseName = "database";
ConnectionInfoRpt.Password = "pass";
ConnectionInfoRpt.UserID = "user";
ConnectionInfoRpt.ServerName = SystemInformation.ComputerName.ToString();
Finassl rpt = new Finassl();



حالا نوبت به ارسال هم داکیومنت و کاننکشن است

ApplyLogOnInfoForSubreports(rpt, ConnectionInfoRpt);



تابع را فراخوانی می کنیم


private void ApplyReportLogon(CrystalDecisions.CrystalReports.E ngine.ReportDocument RptYears, ConnectionInfo sa)
{
foreach (CrystalDecisions.CrystalReports.Engine.Table tablex in RptYears.Database.Tables)
{
tablex.LogOnInfo.ConnectionInfo.AllowCustomConnect ion = true;
TableLogOnInfo tablelog = tablex.LogOnInfo;
tablelog.ConnectionInfo = sa;
tablex.ApplyLogOnInfo(tablelog);
}
}



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




private void ApplyLogOnInfoForSubreports(CrystalDecisions.Cryst alReports.Engine.ReportDocument rpt, ConnectionInfo ConnectionInfoRpt)
{
Sections Sections = rpt.ReportDefinition.Sections;
foreach (Section section in Sections)
{
ReportObjects reportObjects = section.ReportObjects;
foreach (ReportObject reportObject in reportObjects)
{
if (reportObject.Kind == ReportObjectKind.SubreportObject)
{
var subreportobject = (SubreportObject)reportObject;
ReportDocument SubReportDocument = subreportobject.OpenSubreport(subreportobject.Subr eportName);
ApplyReportLogon(SubReportDocument, ConnectionInfoRpt);
}
}
}
}













امیدوارم تونسته باشم مشکلی را حل کرده باشم