PDA

View Full Version : کند بودن اکتیو ریپورت



maryamb
پنج شنبه 30 خرداد 1387, 13:57 عصر
من تو برنامم از اکتیو ریپورت استفاده می کنم ،موقع هایی که گزارش یه صفحه هست مشکلی ندارم ولی وقتی از موجودی انبار بخوام پرینت بگیرم که حجمش یه ذره بالا تره مثلا 5 صفحه هست ، خیلی کند باز می شه و شاید 10 دقیقه طول بکشه .
آیا کلا اکتیو ریپورت اینجوریه یا اینکه چاره داره ؟
لطفا کمک کنید

harati
چهارشنبه 05 تیر 1387, 22:24 عصر
با سلام
من خيلي زياد از ActiveReport استفاده كردم و هنوز چنين مشكلي نداشتم. سرعتش هم خيلي خوبه مثلا گزارشهاي حدود 2000 صفحه اي روي كامپيوترهاي معمولي براحتي ساخته ميشن.
تنها موضوعي كه در كارهاي من باعث كندي سرعت ميشه افزودن عكس به گزارش هست. مثلا گزارشاتي كه در كنار هر سطر بايد يك عكس هم لود شود (چون حافظه زيادي مصرف مي كنند) كمي كند هستند و نمي توانند زياد بزرگ شوند. اينكه مي گويم نمي توانند زياد بزرگ باشند بدين معني نيست كه نمي توانند 100 يا 200 صفحه باشند. در اين حالت همه چيز به CPU و RAM بستگي دارد. اگر كامپيوتر شما 2 گيگابايت RAM داشته باشه اكتيو ريپورت به نرمي همه حافظه باقي مانه را مصرف ميكنه و وقتي RAM تمام شد تازه گير ميكنه و شروي ميكنه به كند شدن.
من نزديك به هشت سال است كه از اين گزارش ساز استفاده مي كنم و هنوز هيچ وقت ساخت گزارش به 10 دقيقه نرسيده است. با توجه به اينكه مي گوييد گزارش يك صفحه اي را سريع نمايش مي دهد و گزارش بيش از يك صفحه را 10 دقيقه پس حتما يك اشكالي در طراحي يا كدنويسي شما وجود دارد.

maryamb
پنج شنبه 06 تیر 1387, 11:07 صبح
خب من کد های مربوطه رو می ذارم ببینید اشکال از کد هاست ؟
این کد رو داخل فرم نوشتم :
On Error GoTo m
Dim name4 As String
acranbar.Label14.Caption = Left(Zaman, 10)
If Adodc5.Recordset.Fields(1) <> "" Then
name4 = Adodc5.Recordset.Fields(1)
acranbar.Label9.Caption = name4
End If
s22 = "ãæÌæÏí"
acranbar.dc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\sys.ctx;Jet OLEDB:Database Password=1832823"
acranbar.dc1.Source = "select * from kharid where vaziat = '" & s22 & "' order by id"
acranbar.dc1.Refresh

acranbar.Show
m:
واین کد را داخل اکتیو ریپورت :

Private Sub ActiveReport_ReportStart()

Field1.DataField = "bandel"
Field2.DataField = "zekhamat"
Field3.DataField = "arz"
Field4.DataField = "tool"
Field5.DataField = "tedad"
Field6.DataField = "metraj"
Field7.DataField = "safe"
Field8.DataField = "tozih"
Field12.DataField = "metraj"
End Sub
Private Sub Detail_Format()
Static Cnt
Cnt = Cnt + 1
Me.Label38.Caption = Cnt
Dim Str As String
Str = "äÑã ÇÝÒÇÑ íÇϐÇÑ"
With Me.Canvas
.TextAngle = 900
.Font.Size = 9
.Font.name = tahoma
Call .DrawText(Str, 1000, 3000, 30000, 5000)
End With

End Sub
Private Sub PageFooter_Format()
Static pageno
pageno = pageno + 1
Label22.Caption = pageno
End Sub

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

harati
پنج شنبه 06 تیر 1387, 11:58 صبح
كدي كه در قسمت Detail_Format نوشتيد رو كلاً Remark كنيد. سپس تست كنيد كه آيا مشكل حل شده يا نه؟

maryamb
پنج شنبه 06 تیر 1387, 12:33 عصر
Dim Str As String
Str = "äÑã ÇÝÒÇÑ íÇϐÇÑ"
With Me.Canvas
.TextAngle = 900
.Font.Size = 9
.Font.name = tahoma
Call .DrawText(Str, 1000, 3000, 30000, 5000)
End With

این قسمت کد رو برداشتم و مشکل کاملا حل شد !!!!!
خب پس چیکار کنم که اسم نرم افزارم رو بصورت عمودی کنار گزارشم بنویسه؟
این کد برای این کار بود

hrj1981
جمعه 07 تیر 1387, 09:35 صبح
براي قراردادن اسم نرم افزار بوسيله برنامه گرافيكي يك فايل Picture ايجاد نماييد و بوسليه گزينه هاي زير كه در پروپرتي خود اكتيو ريپورت است براي هر صفحه از گزارش خود يك واتر مارك قرار دهيد.
watermark
watermarkaligment
watermarksizemode

maryamb
شنبه 08 تیر 1387, 11:56 صبح
من از واترمارک استفاده کردم ولی هر کاری می کنم می افته تو گزارشم !!!
می خوام ببرمش سمت چپ تر ولی نمی شه . چیکار کنم؟