ورود

View Full Version : تغییر sqlQuery در کریستال ریپورت دات نت



shaghayeghnab
سه شنبه 05 تیر 1386, 09:03 صبح
سلام
من به یه مساله برخورد کردم
یه سری گزارش با کریستال دات نت نوشتم که همه جوره کار می کنه و مشکلی نداره,ولی با تغییر سال مالی و تغییر نام دیتابیس به مشکل برخورده یعنی قبلا که به مثلا db85 وصل می شد و توی SqlQuery پشت خود کریستال به صورت ثابت نام db85 می آمد ,مشکل نداشت ولی حالا برای اتصال به db86 به مشکل برخورده.
برای تعریف دیتابیس داینامیک براش همه کار کردم و چند جور کد رو امتحان کردم ,نام دیتابیس داینامیک فرستاده می شه ولی انگار نه انگار:عصبانی++: وقتی Query پشتشو می بینی باز همون دیتابیس قدیمیه!
دونوع از کدهایی که استفاده کردم رو پیست می کنم :

Dim str As String

Dim logOnInfo As New CrystalDecisions.Shared.TableLogOnInfo
Dim i As Integer

For i = 0 To rpt.Database.Tables.Count - 1
logOnInfo.ConnectionInfo.DatabaseName = _Database
logOnInfo.ConnectionInfo.ServerName = _Server
str = Me.rptBimehDarman1.Database.Tables(i).Name
logOnInfo.ConnectionInfo.UserID = strUID
logOnInfo.ConnectionInfo.Password = IIf(strPWD = "", "", strPWD)
rptBimehDarman1.Database.Tables.Item(i).ApplyLogOn Info(logOnInfo)


Next i
و یکی دیگه

Dim mytablelogoninfos As New CrystalDecisions.Shared.TableLogOnInfos
Dim mytablelogoninfo As New CrystalDecisions.Shared.TableLogOnInfo
Dim myconnectioninfo As New CrystalDecisions.Shared.ConnectionInfo
With myconnectioninfo
.UserID = strUID
.ServerName = _Server
.Password = strPWD
.DatabaseName = _Database
End With

mytablelogoninfo.TableName = "PAYReportTakalifDarman;1"
With mytablelogoninfo.ConnectionInfo
.UserID = strUID
.Password = strPWD
.ServerName = _Server
.DatabaseName = _Database
End With

mytablelogoninfo.ConnectionInfo = myconnectioninfo
mytablelogoninfos.Add(mytablelogoninfo)
CrystalReportViewer1.LogOnInfo = mytablelogoninfos
به نظرتون راهی هست ؟
یا SqlQuery
read onlyاست؟
توی سرچهایی که کردم به یه کامپوننتی به نام
Crystal report Control
برخوردم که توی دات نت کار نکرد و البته Prpperty
SqlQuery
داشت

خیلی خیلی ممنون می شم اگه کمکم کنین
:لبخندساده:

reza_rad
سه شنبه 05 تیر 1386, 09:22 صبح
بعد از تنظیمات logoninfo شما باید یکبار دیگه کریستال رو به فرمتون بایند کنید. با reportsource و resourcename .
نمونه کد البته برای C# :
http://barnamenevis.org/forum/showpost.php?p=291572&postcount=14

shaghayeghnab
سه شنبه 05 تیر 1386, 11:08 صبح
دوست عزیز نشد!
اون Crystal report Control نمی تونه کارساز باشه؟

reza_rad
سه شنبه 05 تیر 1386, 11:30 صبح
اون Crystal report Control نمی تونه کارساز باشه؟
اگه منظورتون از این کامپوننت همون کنترلهای VStudio برای ارتباط با کریستال هست ، همونیه که روی فرمهای پروژه تون باهاش کار می کنید.
اگر هم کنترل خارجی دیگه ای هست من باهاش کار نکردم.

sm
سه شنبه 05 تیر 1386, 12:41 عصر
اگر که شما کلا بانکتون عوض شده خوب از طریق منوی Databse و بعد set Location مسیر جدید بانکتون رو بهش بدین

موفق باشید

malizadeh
سه شنبه 05 تیر 1386, 18:46 عصر
اگر فیلدهای بانک هاتون شبیه هم هست یک dataset تو برنامتون بسازید بعد به کریستال دیتاست رو معرفی کنید
هر بار که خواستید گزارش بگیرید به صورت جدا داده ها رو از بانک بخوان و بعد تو دیتاست بریز و در پایان هم دوباره دیتاست رو به کریستال معرفی کن

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