PDA

نسخه کامل مشاهده نسخه کامل : مشکل موقع گزارش گیری از کریستال ریپورت



moshaveran
27-09-2010, 14:28
دوستان خواهش می کنم یکم حوصله به خرج بدین. کارم بدجوری گیره این موضوعه.
من داخل فرم گزارشم این دستورات را به اینصورت نوشتم تا دیگه نیازی نباشه کاربر پسورد دیتا بیس را موقع نمایش گزارش وارد کنه ولی باز وقتی به خط *** میرسه پنجره ای باز میشه که بازم پسورد دیتابیس را باید بهش بدیم. کجای کارم مشکل داره؟ اصلا دستوراتم درسته یا نه؟

Dim m_Proj As CRAXDDRT.Application
Dim m_Report As CRAXDDRT.Report
Dim crDBTab As CRAXDRT.DatabaseTable
Dim strcon As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.RecordSet
Dim mn As String

Private Sub CommandButton1_Click()
strcon = "Provider=MSDASQL;Driver={SQL Server}; Server=NP02;uid=USER;pwd=PASS"
strcon.Open
mn = "select * from change_layer_report"
cmd.ActiveConnection = strcon
cmd.CommandText = mn
Set rs = cmd.Execute

Dim ReportName As String
ReportName = "D:\Report2.rpt"
Set m_Proj = New CRAXDDRT.Application
Set m_Report = m_Proj.OpenReport(ReportName)

For Each crDBTab In m_Report.Database.Tables
'crDBTab.SetLogOnInfo "Server Name", "Database Name", "UserID", "UserPassword"
crDBTab.SetLogOnInfo "NP02", "db1", "USER", "PASS"
Next

m_Report.Database.LogOnServer "p2ssql.dll", "np02", "db1", "USER", "PASS"
m_Report.Database.SetDataSource (rs)

CRViewer91.ReportSource = m_Report
CRViewer91.ViewReport
MsgBox "Êåíå ", vbInformation + vbMsgBoxRight + vbMsgBoxRtlReading, "åÔÏÇÑ"
*** CRViewer1.Refresh
Set m_Proj = Nothing
Set m_Report = Nothing
End Sub

M A X I M U M
27-09-2010, 16:31
سلام عزیز
خب اگه بخوای اینکارو بکنی نیاز به این داری که خود برنامه پسورد رو از قبل به یاد داشته باشه و بشناسه حالا وقتی شما لاگ میشی به همون سرور گزارش مگه بعد از درخواست (کوئری) لاگ آف نمی کنه از سرور ؟
اگه اینطور باشه موقع رفرش کردن سرور باید دوباره پسورد رو ازت بخواد
اگه یه کم بیشتر توضیح بدی میتونم بهتر کمکت کنم

moshaveran
28-09-2010, 10:24
سلام عزیز
خب اگه بخوای اینکارو بکنی نیاز به این داری که خود برنامه پسورد رو از قبل به یاد داشته باشه و بشناسه حالا وقتی شما لاگ میشی به همون سرور گزارش مگه بعد از درخواست (کوئری) لاگ آف نمی کنه از سرور ؟
اگه اینطور باشه موقع رفرش کردن سرور باید دوباره پسورد رو ازت بخواد
اگه یه کم بیشتر توضیح بدی میتونم بهتر کمکت کنم

دوست عزیز، اصلا هنگ کردم، نمیدونم. :23:
این برنامه رو باید می بردم تحت شبکه. به همین خاطر مجبور شدم دیتابیسم رو تحت یه یوزر و پسورد بزارم تا clientها بتونن یه دیتابیس سرور دسترسی داشته باشن. قبل از این مرحله که دیتابیس یوزر نداشت، خب table گزارش ها هم مستقیم از سیستم local خونده میشد. ولی چون clientها دیتابیس رو روی سیستم خودشون نداشتند پس گزارشی نشون نمی دادند. به همین خاطرconnection گزارش ها رو وصل کردم به سرور و اون یوزر و پسورد. حالا clientها گزارش را نشون میدن ولی قبل از نمایش گزارش پنجره ای باز میشه که پسورد user دیتابیس را می خاست. جستجو کردم فهمیدم باید user و pass را داخل خود دستورات برنامه بهش بدم. همونطور که در بالا می بینید این کار رو هم با login کردن کردم ولی باز هم فایده نداشت. :19:

M A X I M U M
29-09-2010, 00:23
خب حالا یه سوال
چرا میخوای داخل خود برنامه بدی
نمیتونی یک پایگاه اضافی درست کنی و اونو تبدیلش کنی به پایگاه داده دینامیک بطوریکه نام کاربری برای هر کس در نظر بگیره
بعد بصورت رندوم یک پسورد از خود سیستم برای هر کاربر بده و کاربر بتونه با همون پسوردی که این پایگاه داده بهش میده به پسورد اصلی دسترسی پیدا کنه
در واقع میشه یک نرم افزار جانبی برای راه اندازی و ارتباط با سرور از طریق کلاینت
منظورمو گرفتی ؟

moshaveran
29-09-2010, 13:22
دوست عزیزم، اینطوری که لقمه رو دور سرمون می چرخونیم. خیلی سخت میشه . تازه اگه بشه. با توجه به اینکه اگه از این روش بریم باز هم قبل از نمایش گزارش پنجره ای مبنی بر دریافت پسورد باز میشه، نباید این طوری باشه . باید مستقیم با زدن یک باتن، گزارش رو نشون بده. به همین خاطره که باید داخل دستورات برنامه USER و PASS را بهش بدیم. تا خودش مستقیم LOGIN بشه. ولی چجوری؟ :13: