من یک گزارش ساخته ام که در کریستال ریپوت به یک جدول( یا یکstored procedure) در sql server وصل می شود.ولی همیشه همان مقادیر اولیه را نمایش می دهد.مثلا اگر سطرهای جدول تغیر کنند،گزارش همان سطرهای جدول اولیه را نمایش می دهد(updateنمی شود)؟
من یک گزارش ساخته ام که در کریستال ریپوت به یک جدول( یا یکstored procedure) در sql server وصل می شود.ولی همیشه همان مقادیر اولیه را نمایش می دهد.مثلا اگر سطرهای جدول تغیر کنند،گزارش همان سطرهای جدول اولیه را نمایش می دهد(updateنمی شود)؟
من هم همین مشکل رو در VB دارم . یعنی همیشه مقادیر قبلی نشون داده میشه و من مجبورم همیشه دکمه refresh را بزنم تا اطلاعات صحیح را ببینم . وقتی هم که از متدهای refresh برای viewer کریستا استفاده می کنم یه خطا صادر میشه . اگه کسی حال بده بدجور مخلصشم . :kaf:
حتما باید این کد را وارد کنید در غیر این صورت update نمیشه.
Report.discardsaveddata
این کد رو درزمان load شدن فرمی که گزارش در اون هست وارد کنید و حتما درست میشه. :)
به احتمال زیاد شما در محیط طراحی کریستال ریپورت بخش Preview رو باز کردید و دیگه نبستید و این باعث شده که دادهها به همراه ریپورت شما ذخیره بشه. پروژه گزارش خودتون رو باز کنید و پنجره Preview رو ببندید و گزارش رو ذخیره کنید.
از منوی فایل هم تیک گزینه Save Data with Report رو بردارید تا دادهها در هنگام ذخیره از بین بروند.
:sunglass:
meh secure عزیز سلام
واقعا از راهنمایی شما متشکرم ، چون این مطلب چند روزی بود که وقت من را گرفته بود که با راهنمایی شما مشکلم حل شد.
موفق باشید
دوستان من هم کد پیشنهادی جناب meh_secure را اجرا کردم هم کارهای جناب palizsoftware را انجام دادم ولی مشکلم کماکان پابرجاست . در ضمن من از کریستال 8.5 اتفاده می کنم !!!
من هنوز مشکل دارم
امیرحسین جان گزارشت رو به همراه بخشی از بانک اینجا قرار بده تا ببینم. قاعدتا نباید مشکلی باقی بمونه.
دوست عزیز من هم با این مشکل برخورد کردم ولی مشکل برطرف نشد من هم برنامه را اینجا می گذارم خدا خیرتان بدهد بد جوری لنگش هستم
در هنگام unload شدن گزارش باید بنویسید: set report=nothingموفق باشید .
دوست عزیز کجای برنامه باید etreport=nothing بنویسم . یعنی برنامه من مشکل نداشت من در ابتدا نوشتم ولی میگه نمی شناسم
i := CrystalReport1.LogOnServer.Add('server');
with CrystalReport1.LogOnServer[i] do
begin
DLLName := 'pdssql.dll.DLL'; {Crystal's Native Oracle Driver}
UserID := 'invtfrosh';
Password := 'xxx';
DatabaseName := 'invtfrosh'; {Not usually req'd for Oracle}
if LogOn then
begin
CrystalReport1.setreport:=nothing
CrpeDS1.DataSet := ADOStoredProc1; {the field types must be in the correct order}
CrystalReport1.ReportName := 'D:\Invt_Company_Sql\Reports\Report_AllGoods.rpt';
CrystalReport1.WindowState := wsMaximized;
CrystalReport1.WindowButtonBar.ActivateAll;
// CrystalReport1.Refresh;
// CrystalReport1.LogOnServer[i].Password := '9731';
// CrystalReport1.DiscardSavedData;
CrystalReport1.ParamByName('@codeanbar','').Clear;
CrystalReport1.ParamByName('@codekala','').Clear;
CrystalReport1.ParamByName('@codeanbar','').Prompt Value:=Edit1.Text;
CrystalReport1.ParamByName('@codekala','').PromptV alue:=Edit2.Text;
CrystalReport1.Show;
دوستان برنامه نویس به من مبتدی کمک کنید
دوست عزیز عرض کردم در رویداد form_unload بنویس . یعنی در زمان unload شدن فرم باید شی ء report از بین برود تا در دفعه بعد دوباره ساخته شده و مقداردهی شود . موفق باشید .
در مورد refresh نشدن اگر قبل از آخرین کد فراخوانی کنترل کریستال ریپورت کد زیر را true کن:
Report.discardsaveddata