PDA

View Full Version : اشکال در Crystal Report و ...



amir_king2_2
چهارشنبه 08 بهمن 1382, 09:58 صبح
با سلام.

تو Crystal Report وقتی با ویزاردش یک فایل report درست میکنم که به بانک اطلاعاتی sql server وصله بعد از کانکت شدن و وارد کردن user , pass بقیه مراحل رو تا درست شدن فایل report طی میکنم. crystal report تو preview ای که بهم نشون میده اطلاعات رو از db خونده و داره تو صفحه نشون میده . خب این رو save میکنم.

حالا تو برنامه وقتی با یک crystalreportviwer مسیر سورس فایل رو بهش میدم. report رو میاره ولی در صورتی که اطلاعات db تغییر هم کرده باشه باز هم همون اطلاعاتی رو که زمان بوجود آوردن فایل ریپورت توسط خود crystal report نشون میداد رو میاره و اصلا به بانک اطلاعاتی توجهی نداره . حالا من چطور میتونم بانک اطلاعاتیم رو وقتی که Refresh میشه با فایل ایجاد شده ریپورت باز کنم. آیا باید خودم به کریستال ریپورت اطلاعات کانکت رو بفرستم. یا باید تغییراتی تو قسمت option کریستال ریپورت بدم که اطلاعات رو هم تو خودش save نکنه و همیشه از بانک اطلاعاتی بخونه.
لطفا help me. :cry:

کم حوصله
جمعه 10 بهمن 1382, 02:06 صبح
سلام
دوست عزیز اگر یکم مثل من کم حوصله نباشید و یک جستجو مختصر و مفید بکنید در همین بخش جواب خودتان را خواهید یافت
اما جواب به این صورت است
که قبل از اینکه گزارش خود را به ویوور بدهید جداول آن را باز یابی کنید به این گونه


dim report as cr1
dim ado as adodb.recordset

ado.open "select * from Tbl1" , ...
report.database.tables(1).setdatasource ado,3
set crviwer1.database =report

بازم اون بخشها رو پیدا کن و مطالب مورد نظرت را کامل ببین
اگر هم مشکلی داشتی بپرس در خدمتیم :wink:

vbstar
جمعه 10 بهمن 1382, 23:42 عصر
دوست عزیز برای رفرش شدن اطلاعات شما باید :
DisCardSaveData را برابر True قرار دهید تا اطلاعات گزارش شما رفرش شود.
DisCardSaveData=True

البته کنترل کریستال ریپورت در Properties دارای گزینه ای برای تنظیم DisCardSaveData هستش.

من یه کد هم برای راحتی کار شما میگذارم تا حالش رو ببری .


Public Sub List_Cal2()
With Menu_Rep.CrystalReport2
.ReportFileName = App.Path & "\Report\Rep_List_Cal2.rpt"
.Connect = Inint_ADO.Cnn1
.DiscardSavedData = True
.RetrieveDataFiles
.ReportSource = 0
.SQLQuery = "SELECT * FROM AdmCal WHERE ((AdmCal.In_Cal='1') AND (AdmCal.In_Cal2='1')) AND (" & _
"( Code='" & IIf(Menu_Rep.txt_code.text = "", "0", Menu_Rep.txt_code.text) & "' )" + " " + "" & IIf(Menu_Rep.cmb1.text = "", "OR", Menu_Rep.cmb1.text) & "" + " " + "" & _
"( Name='" & IIf(Menu_Rep.txt_name.text = "", " ", Menu_Rep.txt_name.text) & "' )" + " " + "" & IIf(Menu_Rep.cmb2.text = "", "OR", Menu_Rep.cmb2.text) & "" + " " + "" & _
"( Family='" & IIf(Menu_Rep.txt_family.text = "", " ", Menu_Rep.txt_family.text) & "' )" + " " + "" & IIf(Menu_Rep.cmb3.text = "", "OR", Menu_Rep.cmb3.text) & "" + " " + "" & _
" Bimeh LIKE " + " " + "'" + "" & Menu_Rep.cmb_F_Bimeh1.text & "" & "" & IIf(Menu_Rep.txt_bimeh.text = "", "", Menu_Rep.txt_bimeh.text) & "" & Menu_Rep.cmb_F_Bimeh2.text & "" + "'" + " " + "" & IIf(Menu_Rep.cmb4.text = "", "OR", Menu_Rep.cmb4.text) & "" + " " + "" & _
"( AdmDate Between '" & Menu_Rep.txt_date1.text & "' AND '" & Menu_Rep.txt_date2.text & "' )" + " " + "" & IIf(Menu_Rep.cmb5.text = "", "OR", Menu_Rep.cmb5.text) & "" + " " + "" & _
"( DateT Between '" & Menu_Rep.txt_date3.text & "' AND '" & Menu_Rep.txt_date4.text & "' ))"
Menu_Rep.txt_sql.text = .SQLQuery
.ReportTitle = "گزارش 1"
.Destination = crptToWindow
.PrintFileType = crptCrystal
.WindowState = crptMaximized
.WindowMaxButton = False
.WindowMinButton = False
.WindowShowExportBtn = False
.WindowShowProgressCtls = True
.WindowShowSearchBtn = True
.WindowShowRefreshBtn = True
.WindowShowGroupTree = False
.Action = 1
End With
End Sub

VBstar

کم حوصله
یک شنبه 12 بهمن 1382, 09:42 صبح
سلام
ببخشید این کدها چیه نوشتی در مورد چند خط اولش درست ولی خود پروسیجر و کدهای بعد از ست کردن جداول گزارش چی هست ؟؟؟ :shock: :shock: :shock: :?:

NaserNet
جمعه 24 بهمن 1382, 14:24 عصر
Dim rptStudentReport As New ReportDocument()
Dim tbCurrent As CrystalDecisions.CrystalReports.Engine.Table
Dim tliCurrent As CrystalDecisions.Shared.TableLogOnInfo

' Load the report
rptStudentReport.Load("..\StudentReport.rpt")
' Set the connection information for all the tables used in the report
' Leave UserID and Password blank for trusted connection
For Each tbCurrent In rptStudentReport.Database.Tables
tliCurrent = tbCurrent.LogOnInfo
With tliCurrent.ConnectionInfo
.ServerName = "NASSER"
.UserID = ""
.Password = ""
.DatabaseName = "Daneshgah"
End With
tbCurrent.ApplyLogOnInfo(tliCurrent)
Next tbCurrent


crvStudent.ReportSource = rptStudentReport

sh
جمعه 24 بهمن 1382, 16:34 عصر
سلام
دوستان به نظر من بهترین راه برای گزارش سازی استفاده از دیتاسورس هست اینجوری کریستال رپورت اصلا به این کار نداره که جدول شما کجاست و یا باید هی رفرش بشه و خیلی بهتر و سریعتر از وصل کردن اون به خود دیتا بیس هست

pouriams
شنبه 12 اسفند 1385, 13:40 عصر
اگه درست فهمیده باشم. بار اول که اطلاعات را در ریپورتت نشون می ده بعدش که اطلاعات در دیتابیس تغییر می کنه، ریپورتت تغییر نمی کنه. به خاطر این است که شما هنگامی که کریستال ریپورتت را ذخیره می کنی باید تیک save with data را برداری. که در منوی فایل در دسترس شماست. که به صورت پیش فرض تمام اطلاعات را با دیتاهاشون ذخیره می کنه. شما وقتی این تیک را برداری می بینی که با تغییراتی که در بانکت می دهی گزارشت هم تغییر می کنه.

sm
شنبه 12 اسفند 1385, 15:52 عصر
قبل از چواب دادن یه نگاه به تاریخ پستها هم بندازین بدتر نیست!!!!!

pouriams
شنبه 12 اسفند 1385, 16:07 عصر
اهمیتی نداره تاریخش کی بوده. من وقتی دیدم و جوابشو می دونستم وظیفه خودم دیدم جوابشو بدم.
اگرچه بعد از این که جواب را دادم تاریخ آخرین پست را دیدم و فهمیدم که نوش دارو بعد از مرگ سهراب است. ولی خب فکر کنم اگر کسی بعدا به یک همچین مشکلی برخورد کنه و جستجو کند و آدرس این صفحه را ببیند قطعا از این که کسی جواب این موضوع را داده (حتا 3 سال بعد) خوشحال خواهد شد.
در ضمن از نقطه نظر شما سپاس گذاری می کنم.