View Full Version : مشکل در کریستال ریپورت با ساب ریپورت
vb341
یک شنبه 05 فروردین 1386, 21:24 عصر
با سلام
دوستان من در وی بی 6 گزارشی دارم که در اون 3 تا ساب ریپورت باید استفاده بشه
رو سیستم خودم گزارش ها جواب میده ولی وقتی که گزارش رو رو سیستم دیگه اجرا میکنم از مسیر دیتا بیس اشکال میگیره . گزارش من با کد اس کیو ال در گزینه کاماند Ado Conection تعریف شده و بصورت ران تایم بصورت تکی اجرا میشه . ولی وقتی که ساب ریپورتها را اضافه میکنم گزارش از مسیر بانک اشکال میگیره . میخواستم ببینم چطور میتونم برای ساب ریپورتها در زمان اجرا مسیر بانک رو تعریف کنم .
vb341
دوشنبه 06 فروردین 1386, 13:57 عصر
دوستان من با کد زیر گزارش اصلی رو اجرا میکنم ولی وقتی تو گزارش از ساب ریپورت استفاده میکنم مسیر دیتابیس ساب ریپورت رو نمیدونم چطور بصورت داینامیک تعریف کنم
sqlselectrep = ""
sqlwhererep = ""
sqlgrouprep = ""
sqlorderrep = ""
sqlselectrep = " SELECT TblOzvDesc.OzvCod, TblOzvDesc.OzvName, TblOzvDesc.OzvFamili, TblOzvDesc.OzvFatherName, TblOzvDesc.OzvShenNo," _
+ " TblOzvDesc.OzvKarNo, TblOzvDesc.OzvDriverCartNo FROM TblOzvDesc where 1 = 1 "
If Not Text1.Text = "" Then sqlwhererep = sqlwhererep + " and TblOzvDesc.OzvKarNo ='" & Trim(Text1.Text) & "'"
If Not Text2.Text = "" Then sqlwhererep = sqlwhererep + " and TblOzvDesc.OzvDriverCartNo='" & Trim(Text2.Text) & "'"
Debug.Print sql
'MsgBox sql
Debug.Print sql
On Error Resume Next
rst1.Close
Set rst1 = Nothing
On Error GoTo 0
sql = sqlselectrep + sqlwhererep
rst1.Open sql, Cnn, adOpenForwardOnly, adLockOptimistic
If rst1.EOF Then MsgBox "јæÑÏí æÌæÏ äÏÇÑÏ", vbOKOnly, "": Exit Sub
RepKart.Database.SetDataSource rst1
FrmCrysShow.CRViewer91.ReportSource = RepKart
FrmCrysShow.Show vbModal
Set RepKart = Nothing
Set FrmCrysShow = Nothing
reza_rad
سه شنبه 07 فروردین 1386, 07:17 صبح
مگه بانک برای ساب ریپورتها فرق می کنه؟!
یا اینکه توی همون بانک از جدولهای دیگه ای استفاده میشه؟
vb341
چهارشنبه 08 فروردین 1386, 16:16 عصر
اره دوست عزیز
از جداول دیگه تو همون گزارش برای ساب ریپورت استفاده میشه و رو همون سیستم جواب میده ولی وقتی رو سیستم دیگه میره از مسیر بانکهای ساب ریپورت اشکال میگیره و مثل گزارش main مسیر بانک رو بصورت داینامیک که تو کد بالا نوشتم تشخیص نمیده
In_Chan_Nafar
چهارشنبه 08 فروردین 1386, 21:17 عصر
یه نگاهی به این آموزش بنداز بابک جان
http://barnamenevis.org/forum/showthread.php?p=132045#post132045
vb341
پنج شنبه 09 فروردین 1386, 01:05 صبح
آقا فرید سلام و از توجهتون ممنونم . فقط این آموزشی رو که گذاشتین با مثال وی بی 2005 هست . من مشکلم تو وی بی 6 و با بانک اکسس هست . از طرفی من هنوز با وی بی 2005 زیاد آشنا نیستم . اگر ممکنه یک نمونه کد برای تعریف کانکشن برای ساب ریپورت تو وی بی بزارین و یا معادل همون دو تا تابع کانکشن رو به زبان وی بی 6 لطف کنید ممنون میشم
vb341
پنج شنبه 09 فروردین 1386, 13:35 عصر
دوستان کسی نیست مشکل ما رو حل کنه؟
vb341
چهارشنبه 15 فروردین 1386, 17:55 عصر
دوستان خواهشن من وسط کار گیر کردم و کل کار پروژه گیر همین یه نکته است . لطفا کمک کنید
vb341
جمعه 17 فروردین 1386, 12:52 عصر
فرید جان سلام . من با روشی که تو پست خصوصی گفته بودی رفتم ولی نتیجه نگرفتم و نمونه برنامه رو گذاشتم ببین میتونی مشکل رو حل کنی
vb341
جمعه 17 فروردین 1386, 12:54 عصر
sql = ""
sqlwhererep = ""
sql = " SELECT TblOzvDesc.OzvCod, TblOzvDesc.OzvName, TblOzvDesc.OzvFamili, TblOzvDesc.OzvFatherName, TblOzvDesc.OzvShenNo, TblOzvDesc.OzvBirthDate, TblOzvDesc.OzvMeliNo, TblOzvDesc.OzvTahol, TblOzvDesc.OzvAdd1, TblOzvDesc.OzvBimehNo, TblOzvDesc.OzvTel1," _
+ " TblOzvDesc.OzvTelMobil, TblOzvDesc.OzvPic FROM TblOzvDesc where 1 = 1"
sqlwhererep = sqlwhererep + " and TblOzvDesc.OzvCod=" & Grid1.TextMatrix(Grid1.Row, Grid1.ColIndex("ozvcod")) & ""
Debug.Print sql
On Error Resume Next
rst1.Close
Set rst1 = Nothing
sql = sql + sqlwhererep
' Dim SReport As New CRAXDRT.Report
' Dim Rs As New ADODB.Recordset
' Dim StrRec As String
' ''''''''''''''''''''''''''''''''''''''''''
' 'FrmPriviewCrystalReprot.Report=????? ????
' Rs.Open "SELECT * FROM Tb_Name", Cn, adOpenForwardOnly, adLockReadOnly
' Set SReport = FrmPriviewCrystalReprot.Report.OpenSubreport("SubR epName")
' SReport.Database.SetDataSource Rs
Dim sub1rep As New CRAXDRT.Report
Dim sub1rs As New ADODB.Recordset
Dim sub1str As String
sub1rs.Open "SELECT TblOzvTashvig.OtgDesc, TblTashvig.TsDesc" _
+ "FROM TblTashvig INNER JOIN TblOzvTashvig ON" _
+ "TblTashvig.TsCod = TblOzvTashvig.OtgTsCod", Cnn, adOpenForwardOnly, adLockReadOnly
Set sub1rep = sub1rep.OpenSubreport("SubReport1")
sub1rep.Database.SetDataSource sub1rs
rst1.Open sql, Cnn, adOpenForwardOnly, adLockOptimistic
RepOzvByDetail.Database.SetDataSource rst1
FrmCrysShow.CRViewer91.ReportSource = RepOzvByDetail
FrmCrysShow.Show vbModal
Set RepOzvByDetail = Nothing
Set FrmCrysShow = Nothing
vb341
دوشنبه 20 فروردین 1386, 09:01 صبح
عجیبه کسی در این مورد اطلاعی نداره ؟
sm
دوشنبه 20 فروردین 1386, 09:57 صبح
دوست عزیز... بخاطر اینکه عنوانیکه برای تاپیکتون انتخاب کردین ربطی به مشکلتون نداره خیلی از دوستان سر نمی زنند... این که از این
اما مشکلتون...
شما چون از اکسس استفاده می کنین و مسیر بانکتون باید بصورت فیزیکی مشخص شود باید بانکتون رو دقیقا توی همون مسیری که روی سیستم خودتون قرار داره باید روی کامپیوتر مقصد هم توی همون مسیر قرار بدین
اما یه پیشنهاد... مخصوصا شما که نیازی به شبکه ندارید حتما یه سری به این لینک بزنید ...
http://barnamenevis.org/forum/showthread.php?t=64667
موفق باشید
vb341
دوشنبه 20 فروردین 1386, 20:54 عصر
دوست عزیز من با مسیر بانک اکسس رو هیچ سیستمی مشکل ندارم . اگر دقت کنید گفتم که وقتی ساب ریپورت به گزارش اضافه میکنم مسیر ساب ریپورت رو نمیتونم بصورت داینامیک مثل نمونه کدی که گذاشتم تعریف کنم
vb341
سه شنبه 21 فروردین 1386, 20:30 عصر
دوستان مشکل من به کمک یکی از دوستان حل شد . فکر میکنم بدرد شما هم بخوره
Dim dTable As CRAXDRT.DatabaseTable
Dim dRep As CRAXDRT.report
Dim dSubRep As CRAXDRT.SubreportObject
'
Dim sConnectionString As String
sConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.path & "\SenfDrivers.mdb"
'
For Each dTable In CrystalReport1.Database.Tables
dTable.ConnectBufferString = sConnectionString
Next dTable
'
For i = 1 To CrystalReport1.Sections.Count
With CrystalReport1.Sections(i)
'
For j = 1 To .ReportObjects.Count
'
If TypeOf .ReportObjects(j) Is CRAXDRT.SubreportObject Then
'
Set dSubRep = .ReportObjects(j)
Set dRep = dSubRep.OpenSubreport
For Each dTable In dRep.Database.Tables
dTable.ConnectBufferString = sConnectionString
Next dTable
'
End If
'
Next j
'
End With
Next i
'
Set dTable = Nothing
Set dRep = Nothing
Set dSubRep = Nothing
'
FrmCrView.CRViewer91.ReportSource = CrystalReport1
FrmCrView.Show
'
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.