PDA

View Full Version : سوال: درخواست یوزر و پسورد هنگام نمایش گزارش کریستال



xminxmin
یک شنبه 17 مرداد 1389, 08:49 صبح
سلام دوستان
خواهش می کنم حوصله کنید و مشکل من رو تا آخر بخونید. این ممکنه مشکل خیلی ها باشه.
نکات آموزشی خوبی هم داره.:خجالت:

درضمن خواهشمندم به من نگید برم جستجو کنم و یا مخصوصا من رو به اینجا (http://www.developercenter.ir/forum/showpost.php?p=55405&postcount=1) نفرستید!!!:گریه:
همه جا رو زیر و رو کردم. حتی فروم ها و سایت های غیر فارسی!

مشکل تو نمایش و چاپ یک فاکتور ناقابل هست!:گیج:
من یه برنامه نوشتم که گزارشگیری با کریستال داره. برنامه با وی بی دات نت2008 نوشته شده و گزارش هم با کریستال خودشه. بانک هم Access هست.

همه کدهام درسته. یعنی توی محیط برنامه نویسی همه چیز عالیه و گزارش نمایش داده میشه.
مشکل اینجاست که وقتی از برنامه Setup می سازم.و اون رو روی کامپیوتر های دیگه و حتی روی کامپیوتر خودم که باهاش برنامه رو نوشتم نصب می کنم کار نمی کنه.
بانک رو میشناسه. همه چیز درسته. فقط موقع نمایش گزارش از من LoginID و Password می خواد. بعلاوه ServerName و DatabaseName که بصورت پیشفرض خودش آدرس فایل Access رو توش نوشته.
من توی کد این چیزها رو بهش دادم:افسرده:
اینها تعاریف اولیه هستند:

Public DatabaseName As String = Application.StartupPath & "\DBAccess.mdb"
Public dbUserID As String = "Admin"
Public dbPassword As String = "َAccessPassword"

پسورد همون پسوردی هست که روی فایل Access گذاشتم. یوزر به انتخاب خودم Admin هست. (درسته؟)
اصلا وقتی به فایل Access پسورد می دید. ID اون چی هست؟؟؟؟؟؟؟؟؟؟:متفکر:

این کد مربوط میشه به نمایش گزارش


'SHOW FACTOR PAGE
Dim rpt As New repFactor
frmFactorReport.crvFactor.ReportSource = rpt
frmFactorReport.crvFactor.Refresh()

frmFactorReport.ShowDialog()
rpt.Dispose()


این هم کدی برای قبل از بالا آمدن گزارش


Private Sub crvFactor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles crvFactor.Load
ConfigureCrystalReports()

End Sub


ااین هم کد تابع:


Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine

Public Sub ConfigureCrystalReports()
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
SetDBLogonForReportFactor(myConnectionInfo)
myConnectionInfo.ServerName = DatabaseName
myConnectionInfo.DatabaseName = DatabaseName
myConnectionInfo.UserID = dbUserID
myConnectionInfo.Password = dbPassword
myConnectionInfo.IntegratedSecurity = 1

End Sub

Public Sub SetDBLogonForReportFactor(ByVal myConnectionInfo As ConnectionInfo)
Dim myTableLogOnInfos As TableLogOnInfos = frmFactorReport.crvFactor.LogOnInfo
For Each myTableLogOnInfo As TableLogOnInfo In myTableLogOnInfos
myTableLogOnInfo.ConnectionInfo = myConnectionInfo
Next
End Sub

به نظرم کد ها درسته
شاید این وسط من یه چیزی رو جا انداختم و در جریان نیستم!:عصبانی++:

موارد:
1- من Merge_Module های کریستال رو نصب می کنم.(CRRedist2008_x86)
2- روی کامپیوتر مقصد حتی VB.Net رو کامل نصب کردم! (با کریستال)
3- جدول مربوط به گزارش قبل از این کد ها Fill میشه
4- کد به روز رسان گزارش رو در رویدادهای قبل از بالا آمدن هم نوشتم. مثل RefreshReport و اینها... مشکل اینجا هم نیست!
5- پارامتر myConnectionInfo.IntegratedSecurity با این که دقیقا نمی دونم چیه با 0 و 1 امتحان کردم نشد. (فقط می دونم مربوط به امنیت هست و این که گزارش با چه پسوردی با بانک ارتباط برقرار کنه. امنیت ویندوز یا خود DB )
5- وقتی به فایل Access پسورد می دید. ID اون چی هست؟؟؟؟؟؟؟؟؟؟:بامزه:

یه چیز جالب!!! :لبخند: من وقتی سورس برنامه رو کامل منتقل می کنم به یه کامپیوتر دیگه. موقه Run برنامه همین مشکل رو دارم! یعنی موقع نمایش گزارش پسورد می خواد!!! توی محیط برنامه نویسی!!!!!!!:عصبانی++::عصبانی::ع صبانی++:

ممنون که حوصله کردید و همه حرفام رو خوندید. اگر کسی می تونه کمک کنه ممنونش می شم. من زیاد وقت ندارم. باید دو سه روزه پروژه رو تحویل بدم. :متفکر:
منتظرم.:لبخندساده:

Mani_rf
یک شنبه 17 مرداد 1389, 09:07 صبح
نمی خوام نا امیدت کنم اما :
متاسفانه من هم همین مشکل را باهاش داشتم و هرچی هم تلاش کردم به جایی نیرسیدم ، در آخر مجبور شدم به سرغ Stimulsoft Reports.Net 2010.1 برم. البته الان اصلا پشیمون نیستم ، چون کارکردن باهاش بسیار راحت تره ، محیط اون User Friendlyتره، گزارشات بسیار سریع تر آماده میشن، موقع آماده شدن گزارش خروجی را با هر پسوندی که فکرش را بکنید ذخیره میکنه. و ...
اگر هنوز گزارشاتت را آماده نکردی بهت پیشنهاد میکنم که از Stimulsoft Reports.Net استفاده کنی.

armin8651
یک شنبه 17 مرداد 1389, 09:44 صبح
منم خیلی کار کردم برای این موضوع ولی هنوز به نتیجه ای نرسیدم
در ارتباط با Stimulsoft Reports هم اگه آموزش خوبی دارید لطفآ بذارید.

Mani_rf
یک شنبه 17 مرداد 1389, 10:07 صبح
منم خیلی کار کردم برای این موضوع ولی هنوز به نتیجه ای نرسیدم
در ارتباط با Stimulsoft Reports هم اگه آموزش خوبی دارید لطفآ بذارید.

اگر با کریستال بتونید کار کنید، نهایتا 2روز طول میکشه که به استفاده از Stimul عادت کنید. برای آموزش هم در بخش ابزار های گزارش گیری سایت آموزشی خوب وجود دارد که یکی از دوستان زحمت اون را کشیده.

1006corp
یک شنبه 17 مرداد 1389, 17:15 عصر
سلام

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

اما در مورد Server.mappath که پرسیده بودید در دات نت این روش برای آدرس دهی در دایرکتوری اصلی نرم افزار شماست که به کل زیر شاخه های دایرکتوری اصلی دسترسی پیدا میکنید از این روش برای آدرس دهی فایل های گزارش به کریستال استفاده می کنیم.

در مورد Page_Init هم که در نامه تان پرسیده بودید باید بگم اولین حادثه قبل از بالا آمدن فرم شماست و این اجازه رو میده که به طور مثال کدهای اتصال به دیتابیس رو قبل از بالا آمدن فرم اجرا کنید.

اما در مورد اینکه گفتید با تمام این کارها بازهم از شما یوزر و پسورد میخواد باید بگم اولا من هیچ وقت با دیتا اکسس کار نکردم چون میدونم این خودش دردسر سازه و نکته دوم اینه که در property های crystal viewer گزینه هست که مشخص میکنه که آیا همواره باید از کاربر اطلاعات لاگین پرسیده شود یا خیر اسم این تنظیمات رو دقیق نمیدونم ولی براحتی میتونید پیدا کنید.


درکل توصیه میکنم دیتا رو به sql ببرید و در مورد نرم افزار stimul هم که در یک صفحه جداگانه کلی توضیحات لینک دانلود و آموزش تصویری گذاشتم انتخاب نرم افزار بسته به علاقه شخصی و سطح کار شماست


موفق باشید

Mani_rf
یک شنبه 17 مرداد 1389, 17:30 عصر
سلام

اول از همه باید بگم که اگر شما می خواهید یه برنامه خوب داشته باشید کلا اکسس رو فراموش کنید به چند دلیل : مهمترین اونها اینه که یک سری دستورات اس کیو ال اصلا به سادگی در اکسس قابل اجرا نیستن و نمونه بزرگ آن شکل پیاده سازی یک جستجوی ساده است یا فیلتر پیشرفته برای گزارش ها.



انتخاب بانک اطلاعاتی باید بر اساس نیاز باشد نه شهرت، دستورات SQL از یک استاندارد پیروی می کنن که در همه بانک ها مشترکند، دستورات اضافی که بانک های بزرگتر مانند SQL Server و Oracel دارند برای اسکیل های بزرگ بانک است.


نکته دوم اینه که فایل دیتا شما از هر کامپیوتر به کامپیوتر دیگه بره همین قصه پیش میاد و برای رفعش شما باید سیستم دیتا رو تغییر بدید و بطور مثال اون رو بروی odbc ببرید و یوزر و پسورد اون رو برای اتصال به دیتا بگذارید تو کد. دردسر های این قضیه زیاده

این نکته درباره Stimul Report صدق نمی کنه.




اما در مورد اینکه گفتید با تمام این کارها بازهم از شما یوزر و پسورد میخواد باید بگم اولا من هیچ وقت با دیتا اکسس کار نکردم چون میدونم این خودش دردسر سازه و نکته دوم اینه که در property های crystal viewer گزینه هست که مشخص میکنه که آیا همواره باید از کاربر اطلاعات لاگین پرسیده شود یا خیر اسم این تنظیمات رو دقیق نمیدونم ولی براحتی میتونید پیدا کنید.


من این گزینه را هم امتحان کردم اما فقط برروی سیستم جاری جواب میداد و در سیستم مقصد مشکل پابرجا بود.

DoDoklak
یک شنبه 17 مرداد 1389, 18:15 عصر
دوستان وقتی یک مشکلی رو نمیتونید حل کنید به معنی ضعف یک نرم افزار به خصوص نیست

من خودم قبلا که با اکسس کار میکردم هیچ وقت دچار مشکل نشدم نه با اکسس نا با کریستال.

البته مورد درخواست Login ,Password به خاطر اینه که کریستال نمیتونه بانک اطلاعاتی رو پیدا کنه

شاید بگید بقیه برنامه کار میکنه و فقط کریستال کار نمیکنه و این به خاطر اینه که کریستال به صورت ایستاتیک مقدار دهی شده نه به صورت دینامیک .شما فرض کن تو سیستم خودتون بانک اطلاعاتی تو مسیر D:\Program\db.mdb باشه اگر تو سیستم مقصد هم یک همچین مسیری بزاری میبینی کریستال کار میکنه
در کل این ضعف از کریستال نیست مشکل در زمان طراحی هستش



این کد مربوط میشه به نمایش گزارش

کد HTML:
'SHOW FACTOR PAGE Dim rpt As New repFactor frmFactorReport.crvFactor.ReportSource = rpt frmFactorReport.crvFactor.Refresh() frmFactorReport.ShowDialog()


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

یک نکته در باره برنامه مقایسه Stimulsoft Reports.Net و Crystal Report

نرم افزار Stimulsoft Reports.Net برنامه خوبیه ولی آنقدر هم که روش مانور میدن نیست
الان شاید شما تو کریستال نتونی گزارش داینامیک طراحی کنی و یا یکم طراحی باهاش برات سخت باشه
ولی به این نکته توجه کن که کریستال داخل VS نسخه Express و محدودشه

در حالی که نسخه تجاریش که جدا از vs هستش هم طراحی داینامیک داره و هم امکان طراحی گزارشات پیچده داره که با نرم افزاری مثل Stimulsoft Reports.Net به سختی میتونی طراحی کنی و هم محیط طراحی خیلی راحت تری نسبت به نسخه Express داره

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

vbworm
یک شنبه 17 مرداد 1389, 20:13 عصر
نمی خوام نا امیدت کنم اما :
متاسفانه من هم همین مشکل را باهاش داشتم و هرچی هم تلاش کردم به جایی نیرسیدم .

حالا با اجازه اساتید مشکل همه رو حل میکنیم :
CRV همون CrystalReportViewer هست :چشمک:
CrystalReport1 هم پیش فرض اسم ریپورت من هست.



Dim Crys As New CrystalReport1
Dim YRTable As String = "Your Table Name"
Dim logOnInfo As New TableLogOnInfo()
logOnInfo = Crys.Database.Tables.Item(YRTable).LogOnInfo
Dim connectionInfo As New ConnectionInfo()
connectionInfo = Crys.Database.Tables.Item(YRTable).LogOnInfo.Conne ctionInfo
connectionInfo.DatabaseName = "DataBase Address"
connectionInfo.ServerName = ""
connectionInfo.Password = "Your Password"
connectionInfo.UserID = "Admin"
Crys.Database.Tables.Item(YRTable).ApplyLogOnInfo( logOnInfo)
CRV.ReportSource = Crys

mc_laren
دوشنبه 18 مرداد 1389, 00:18 صبح
با عرض سلام و خسته نباشی
من حدود دو سالی هست که با کریستال و اکسس کار می کنم و تا با حالا چند بار این مشکل برام پیش اومده مخصوصا وقتی از پایگاه داده با رمز عبور استفاده کردم ولی از وقتیکه با روش پائین کار کردم دیگه این خطا رو ندیدم



"rptDocument.FileName = Application.StartupPath + "\rep_cus.rpt
(rptDocument.SetDataSource(dst
CrystalReportViewer1.ReportSource = rptDocument


تکه کد بالا را درون Form Load و یا Form Shown فرم گزارشت قرار بده مطمئن دیگه خطا نمیبینی چون من دو ساله دیگه نمی بینم.

اما چند نکته در مورد تکه کد بالا :
dst دیتاستی می باشد که نتیجه حاصل از کوئری مورد نظر شما درون آن قرار دارد ولی این نکته رو توجه داشته باشید که اسم جدولی که برای دیتاست هنگام fill کردن انتخاب می کنید باید حتما با نام جدول قرار داده شده در گزارشت یکی باشه و گرنه دوباره همون خطای قبلی رو میده.

rptDocument هم نام شی ای از نوع reportDocument مباشد.

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

armin8651
دوشنبه 18 مرداد 1389, 10:28 صبح
این مورد رو یه نفر تو قالب یه فایل برنامه بزاره خیلی خوب میشه ، اینجوری فکر کنم مشکل همه حل بشه، ممنون

xminxmin
دوشنبه 18 مرداد 1389, 12:21 عصر
با سلام و تشکر از همه دوستان
مشکل حل شد. البته من همین الان صحبت های شما رو خوندم و بلافاصله دارم جواب می دم. یعنی راه حل ها رو هنوز امتحان نکردم. باید بگم مشکل فقط اینه که Crystal آدرس کامپیوتر منبع رو داره. روی مقصد دنبال همون آدرس میره! پویا نیست (حداقل کد من پویا نیست). اینو همون موقع بلافاصله بعد از نوشتن سوالم فعمیدم. اومدم دیدم دوست خوبم DoDOklak گفتند که ازشون ممنونم. بصورت دستی و کاملا غیر حرفه ای روی سیستم مقصد برنامه رو راه انداختم و جواب داد. با تعریف همون آدرس روی سیستم مقصد!
دارم تلاش می کنم با راهنمایی دوستان و مطالبی که الان دارم تو تاپیک میبینم اون رو هم حل کنم

و اما...

دوست عزیز :لبخندساده:1006corp
با کمال تشکر از شما باید بگم معنی اون روبدادهایی که شما نوشته بودید رو می دونستم! می خواستم ببینم از کجا آوردید! چون اونها به Syntax های دیگه ای هستند نه Init. مثل InitReport و مشابه...
درمورد Server هم باید بگم با ید یه جایی ، یه چیزی تعریف یا Import بشه والا همینطوری که Server رو نمیشه بکار گرفت. شایدم من اطلاعاتم کمه.
برنامه من یه برنامه کوچیکه و اکسس جوابگو هست! اکسس رو کوچک ندونید دوست من

دوستان عزیز Mani_rf و vbworm و mc_laren
ممنونم و حتما از مطالبتون استفاده می کنم. در اولین فرصت تست می کنم و جواب نهایی رو می دم. چون این مشکل خیلی هاست!

arsalansalar
دوشنبه 18 مرداد 1389, 13:19 عصر
اگه درست نشد از كد زير استفاده كن:


Dim str AsString = "Select * from table"
Dim dt AsNew DataTable
Dim db AsNew DataBase
dt = db.MySelect(str)
Dim rr AsNew Reports
rr.ShowReports(dt, "reports\CrystalReport87.rpt")

singel
دوشنبه 18 مرداد 1389, 14:37 عصر
Dim dap1 As New OleDb.OleDbDataAdapter
Dim dset1 As New DataSet
dap1.SelectCommand = New OleDb.OleDbCommand
dap1.SelectCommand.Connection = cnt
Dim sqltext As String
sqltext = "select * from list_daryaft_pardakht where noe='1' and date_d_p>='" + date1 + "' and date_d_p<='" + date2 + "' order by date_d_p"
Dim rpt As New cry_kol
rpt.DataSourceConnections.Item(0).SetConnection("c:\data_base.mdb", "list_daryaft_pardakht", "user", "pass")
dset1.Dispose()
dset1 = New DataSet
dap1.SelectCommand.CommandText = sqltext
dset1.Clear()
dap1.Fill(dset1, "list_daryaft_pardakht")
rpt.SetDataSource(dset1)
frm_report.CrystalReportViewer1.ReportSource = rpt
frm_report.ShowDialog()


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

xminxmin
دوشنبه 18 مرداد 1389, 16:25 عصر
ممنون از همه
یه طورایی همه راه ها درسته. اما همه راه ها مال وقتی هست که گزارش تنها از یک جدول استفاده کنه.
اما در حالاتی که از جند جدول برای گزارش استفاده می کنید مثلا یه فاکتور فروش که شماره فاکتور از یه جدول ، لیست اقلام از یه جدول ، متن زیر فاکتور از یه جدول و... هست دیگه نمی شه از این راه ها رفت.
ممکنه این باشه که بیایم کوئری رو تشکیل بدیم و اونو توی یه جدول مجازی fill کنیم. اما شما در موقع ساخت گزارشات خودتون از یه سری جدول استفاده کردید و فیلد های اونا رو توی گزارش قرار دادید!

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

برای این می گم غیر حرفه ای هست که شما برای نمایش یه گزارش دو سه مرتبه داری جداول رو پر می کنی تا دست آخر به نتیجه برسی! در ضمن داشتن جداول اضافی باعث افزونگی در DB میشه

ممنون اگر در این مورد هم نظر بدید

تونستم منظورم رو برسونم؟

mc_laren
دوشنبه 18 مرداد 1389, 23:15 عصر
یه طورایی همه راه ها درسته. اما همه راه ها مال وقتی هست که گزارش تنها از یک جدول استفاده کنه.
اما در حالاتی که از جند جدول برای گزارش استفاده می کنید مثلا یه فاکتور فروش که شماره فاکتور از یه جدول ، لیست اقلام از یه جدول ، متن زیر فاکتور از یه جدول و... هست دیگه نمی شه از این راه ها رفت.


میشه متن زیر رو بخونی



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

مربوط به صفحه قبل می باشد

singel
سه شنبه 19 مرداد 1389, 07:14 صبح
در حالاتی که از جند جدول برای گزارش استفاده می کنید مثلا یه فاکتور فروش که شماره فاکتور از یه جدول ، لیست اقلام از یه جدول ، متن زیر فاکتور از یه جدول و... هست دیگه نمی شه از این راه ها رفت.

من هم هیچ مشکلی با چند جدوله بودنش ندارم

dana_p
سه شنبه 19 مرداد 1389, 19:31 عصر
سلام دوستان، من مشکل مطرح شده تو این تاپیک رو دارم و نتونستم حلش کنم، من با SQL کار میکنم، تو گزارشام هم از چند تا جدول استفاده کردم، همه چی رو کامپیوتر خودم درسته، ولی تو یه کامپیوتر دیگه درست نیست، یعنی همون user و password میپرسه و ...

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

1- نمتونم برم سراغ یک ابزار گزارش گیری دیگه و باید مشکلمو با کریستال ریپورت حل کنم.
2- گزارشم از چند تا جدول استفاده میکنن و اسم خاصی ندارن.
3- sql server 2005 و visual studio 2008 استفاده میکنم.

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

dana_p
چهارشنبه 20 مرداد 1389, 07:58 صبح
سلام، مشكل من حل شد.
ديگه نيازي نيست دوستان وقت بزارن و اين مشكلو حل كنن.
ممنون.

pourang_us
چهارشنبه 31 شهریور 1389, 18:20 عصر
دوستان عزیز
من هم تقریبا مثل اکثر شما به این مشکل برخورد کردم. خیلی هم جستجو کردم اما جواب مشخص و کاملی نگرفتم تا اینکه با راهنمایی چند تا از دوستان و کمی مطالعه خودم راه حل ساده ای رو برای این کار پیدا کردم و دارم استفاده میکنم.
شما زمانی که گزارش جدیدی در کریستال ریپورت میسازید در ابتدای امر در اونجا یک کانکشن درست میکنید و در اون کانکشن مسیر بانک اطلاعاتی خودتون رو مشخص میکنید و سپس نسبت به انتخاب جداول یا View ها اقدام میکنید.
حالا اگر در سیستم عامل ویندوز مد نظر باشد شما میتوانید از

Control Panel ->Administrative Tools->ODBC Data Source Administrator

بانک خود را با یک نام کانکشن دلخواه اضافه کنید
اینبار به کریستال رفته و در زمانی که میخواهید کانکشن تعریف کنید ODBC(RDO) 0 را انتخاب نماید
در لیست باز شده نام کانکشنی را که ساخته بودید میبینید ان را انتخاب کرده و باز کنید و جداول خود را خواهید دید . مابقی مراحل مانند قبل است.
حالا هر زمانی و در هر سیستمی که میخواهید فقط کافی است مسیر بانک را در ODBC تغییر دهید.
اما یک تجربه نمیدونم به چه دلیل وقتی شما یک بار کانکشن را تعریف کرده باشدی با این روش میسر کانکشن حتی در زمانی که شما Set Data Source Location میکنید تغییر نمیکند. . باز هم از شما مسیر بانک قبلی و نام کاربری و کلمه عبور میخواهد.



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


موفق باشد

ad.davachi
سه شنبه 23 اسفند 1390, 11:43 صبح
لطفا به من کمک کنید من روی یک سرور با گزارش گیری مشکلی ندارم
اما روی یک سرور دیگه ازم یوزر نیم و پسورد میخواد
تا حالا کسی به این مشکل برخورده؟
وقتی کنسل میزنم گاهی این اررور میاد
Retrieving the COM class factory for component with CLSID {5FF57840-5172-4482-9CA3-541C7878AE0F} failed due to the following error: 80070005

swallow.pa
سه شنبه 23 اسفند 1390, 19:39 عصر
با عرض سلام و خسته نباشی
من حدود دو سالی هست که با کریستال و اکسس کار می کنم و تا با حالا چند بار این مشکل برام پیش اومده مخصوصا وقتی از پایگاه داده با رمز عبور استفاده کردم ولی از وقتیکه با روش پائین کار کردم دیگه این خطا رو ندیدم



"rptDocument.FileName = Application.StartupPath + "\rep_cus.rpt
(rptDocument.SetDataSource(dst
CrystalReportViewer1.ReportSource = rptDocument


تکه کد بالا را درون Form Load و یا Form Shown فرم گزارشت قرار بده مطمئن دیگه خطا نمیبینی چون من دو ساله دیگه نمی بینم.

اما چند نکته در مورد تکه کد بالا :
dst دیتاستی می باشد که نتیجه حاصل از کوئری مورد نظر شما درون آن قرار دارد ولی این نکته رو توجه داشته باشید که اسم جدولی که برای دیتاست هنگام fill کردن انتخاب می کنید باید حتما با نام جدول قرار داده شده در گزارشت یکی باشه و گرنه دوباره همون خطای قبلی رو میده.

rptDocument هم نام شی ای از نوع reportDocument مباشد.

در ضمن بجای دیتاست از دیتا تیبل و همچنین DataSource دیتا گرید هم می تونه استفاده کنی فقط به شرطیکه نام جدول با نام جدول در گزارشت یکی باشه ، من با همین روش گزارش مربوط به فاکتور که از سه جدول تشکیل شده رو چاپ می کنم.
موفق باشید.
دوستان ببخشید
من هم از همین روش استفاده می کنم منتها روی sql server که بدون پسورده :متعجب:

ad.davachi
چهارشنبه 24 اسفند 1390, 00:46 صبح
منم ازین کد استفاده میکنم روی یکی از سرورها بازم یوزر پسورد می خواد ولی روی یکی نمی خواد
یکی به من بگه چکار کنم؟آبروم داره میره

mgh64120
چهارشنبه 24 اسفند 1390, 17:42 عصر
سلام دوستان عزيز
براي رفع اين مشكل در كريستال ريپورت در پايگاه داده SQLServer، ابتدا در قسمت اعلان :

Imports CrystalDecisions.Shared
و در ادامه به طور مثال :


Dim cf As ConnectionInfo = New ConnectionInfo()
cf.IntegratedSecurity = False
cf.UserID = "Sa"
cf.Password = "123"
cf.ServerName = "SQLEXPRESS"
cf.DatabaseName = "DBName"
.
.
.
CrystalReportViewer1.LogOnInfo(0).ConnectionInfo = cf
CrystalReportViewer1.Refresh()

موفق باشيد...

ad.davachi
چهارشنبه 24 اسفند 1390, 21:56 عصر
باتشکر از جواب شما
من از همین کداستفاده کردم ولی روی سرور از من پسورد میخواهد ممکنه ربطی به تنظیمات سرور داشته باشه؟

mobinsaffarpour
جمعه 06 دی 1392, 19:02 عصر
دوستان سلام .

میشه یک نمونه سورس با VB.NET2012 و دیتابیس Access که برای گزارش گیری از Crystal Report استفاده شده رو قرار بدین ؟ چون من هم دقیقا همین مشکل رو دارم

behrooz69
شنبه 07 دی 1392, 00:57 صبح
دوستان همه راه ها درسته . مثل بعضی از دوستان منم با اکسس اصلا کار نکردم و نخواهم کرد . چون دیدم نرم افزار هایی رو که بعد از نهایتا چند وقت دچار مشکل شدن حالا یا بزرگ یا کوچیک .

حالا مشکل ما : طبق گفته دوستام وقتی شما آدرس یه دیتابیس رو به صورت دستی میدی مثل این :
Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Sardkhone\ Sardkhane\Sardkhane\MyDB\DbSardkhane.mdf;Integrate d Security=True;User Instance=True

نتیجه اخلاقیش چیه ؟؟ این یعنی اینکه باید برنامم توی : C:\Sardkhone\Sardkhane\Sardkhane\ فولدر از درایو C باشه تا بانکم اجرا شه .

ولی حالا میایم به صورت متغییر یا پویا یا هر چیزی که شما میگین تعریفش میکنیم اینجوری :
"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DBWpic\Pic.mdf;InitialCatalog=PicDB;Integrated Security=True"

این میره تو فولدر روت DataDirectory برنامه ما و از فولدر DBWpic دیتابیس Pic.mdf رو اجرا میکنه این یعنی چی؟ یعنی اینکه برنامتون تو فلش باشه ، تو رم باشه ، تو گوشی باشه ، تو سی دی باشه هرجا باشه اجرا میشه .

حالا روش سومشم اینه :
"Data Source=(Local);AttachDbFilename=Pic.mdf;InitialCat alog=PicDB;Integrated Security=True"

اینم به شرطیه که Sql server 2008 رو سیستم مقصد نصب باشه و دیتابیست رو Attach کرده باشی توش برنامت اجرا میشه


پس نتیجه اخلاقی :
1 ) استفاده از دیتابیس Sql
2 ) استفاده از تعریف رشته ای دیتابیس به صورت پویا و متغییر

با این تفاصیل مشکل رفع مشه . و تو Sql یا تو Access شما وقتی میای رشته Connection String خودتو تعریف میکنی همون جا هم مشخص میکنی که User و Password دیتابیست چیه و یا میتونی تو Setting پروژت تو Connection String به صورت ثابت تعریف کنی و اونجا User و Pass بهش بدی .

امیدوارم توضیحاتم بدردتون بخوره .


یا حق