PDA

View Full Version : گزارش گیری تحت وب



mskarimi
سه شنبه 16 تیر 1388, 09:06 صبح
سلام.
قبلا از اینکه عمدا مسئله رو تو این بخش مطرح می کنم پوزش می طلبم. علت این امر هم اینه که تو بخش گزارش گیری مطرح کردم ظاهرا حیطه کار هیچ کدام از اساتید نبوده که جوابی نگرفتم.

من سوالم خیلی سادس. یه سایت داریم که تو شبکه داخلی کار می کنه و اصلا دسترسی به اینترنت نداره.
تو یکی از صفحات با استفاده از sqldatasource و formview اطلاعات مورد نظر رو بارگزاری کردم. حالا می خوام کاربر بتونه از اطلاعات مورد نظر پرینت بگیره. من ظاهر کار رو تو کریستال انجام دادم اما نمی تونم محتویات رو فراخوانی کنم.

کسی از دوستان میتونه کمک کنه؟ یه مثال کوچک هم بسیار راه گشا خواهد بود.

با تشکر از همه دوستان . امیدوارم مدیر این بخش هم مساعدت بفرمایند چون این سوال بسیار حیاتی هستش.

راستی یادم رفت بگم. دیتابیسم SQLServer2005 و زبان همVB برای ASP.net هستش.
en (http://javascript%3Cb%3E%3C/b%3E:function%20Z%28%29%7BZ=%27%27%7DZ%28%29)|fa (http://javascript%3Cb%3E%3C/b%3E:function%20Z%28%29%7BZ=%27%27%7DZ%28%29)|T (http://javascript%3Cb%3E%3C/b%3E:function%20Z%28%29%7BZ=%27%27%7DZ%28%29)en (javascript:function Z(){Z=''}Z())|fa (javascript:function Z(){Z=''}Z())|T (javascript:function Z(){Z=''}Z())

daffy_duck376
جمعه 23 مرداد 1388, 11:59 صبح
برای نمونه آماده توی سایت codeprogect یه سرچ بزن

kiosksoft
سه شنبه 17 شهریور 1388, 15:51 عصر
سلام.
قبلا از اینکه عمدا مسئله رو تو این بخش مطرح می کنم پوزش می طلبم. علت این امر هم اینه که تو بخش گزارش گیری مطرح کردم ظاهرا حیطه کار هیچ کدام از اساتید نبوده که جوابی نگرفتم.

من سوالم خیلی سادس. یه سایت داریم که تو شبکه داخلی کار می کنه و اصلا دسترسی به اینترنت نداره.
تو یکی از صفحات با استفاده از sqldatasource و formview اطلاعات مورد نظر رو بارگزاری کردم. حالا می خوام کاربر بتونه از اطلاعات مورد نظر پرینت بگیره. من ظاهر کار رو تو کریستال انجام دادم اما نمی تونم محتویات رو فراخوانی کنم.

کسی از دوستان میتونه کمک کنه؟ یه مثال کوچک هم بسیار راه گشا خواهد بود.

با تشکر از همه دوستان . امیدوارم مدیر این بخش هم مساعدت بفرمایند چون این سوال بسیار حیاتی هستش.

راستی یادم رفت بگم. دیتابیسم SQLServer2005 و زبان همVB برای ASP‎.Net هستش.
en (http://javascript%3Cb%3E%3C/b%3E:function%20Z%28%29%7BZ=%27%27%7DZ%28%29)|fa (http://javascript%3Cb%3E%3C/b%3E:function%20Z%28%29%7BZ=%27%27%7DZ%28%29)|T (http://javascript%3Cb%3E%3C/b%3E:function%20Z%28%29%7BZ=%27%27%7DZ%28%29)en (javascript:function Z(){Z=''}Z())|fa (javascript:function Z(){Z=''}Z())|T (javascript:function Z(){Z=''}Z())

دوست عزیز

معمولا برای پرینت محتویات این صفحات از جاوا اسکریپت استفاده میکنن:

اگه اصرار داری که از کریستال ریپورت استفاده کنی ,بفرمائید که کد کریستال رو هم اینجا بزارم...

این هم نمونه کد جاوااسکریپت :

فقط کافیه تگی که اطلاعات تو اون قرار گرفته رو به این تابع ارسال کنید :



var strBeginTbl=' <table dir="rtl" style="width:100%"><tr><td> ';
var strEndTbl=' </td></tr></table> ';


var strLink= ' <link href="../Css/Css.css" rel="stylesheet" type="text/css" /> <link href="/Css/Css.css" rel="stylesheet" type="text/css" />' ;
var strMain='';
var prtContent = document.getElementById(strid);
var strOldOne=prtContent.innerHTML;
var WinPrint = window.open('','','letf=0,top=0,width=900,height=9 00,toolbar=1,scrollbars=1,status=0');


strMain =strBeginTbl+ strLink + ' ' + prtContent.innerHTML +strEndTbl ;

WinPrint.document.write(strMain );
WinPrint.document.close();
WinPrint.focus();
WinPrint.print();
//WinPrint.close();
prtContent.innerHTML=strOldOne;

minamorsali
سه شنبه 17 شهریور 1388, 23:29 عصر
فقط کافیه تگی که اطلاعات تو اون قرار گرفته رو به این تابع ارسال کنید


ببخشید میشه یه کم در باره این کد جاوا توضیح بدین و اینکه چطور باید اطلاعات رو به این تابع ارسال کرد؟
تابعی که می سازیم، هیچ ورودی و یا خروجی ای نمی خواد؟

با تشکر

kiosksoft
چهارشنبه 18 شهریور 1388, 17:12 عصر
دوست عزیز

این یه نمونه کد ساده ست :

شما مثلا دیتاگرید خود را داخل یک تگ div قرار دهید , به تگ div یک اسم بدید سپس در رویداد چاپ این تابع را فراخوانی کنید ** اسم div به تابع ارسال شود:




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
</head>
<body>
<script>
function CallPrint(strid)
{
btn1.style.visibility ='hidden';
var strBeginTbl=' <table dir="rtl" style="width:100%"><tr><td> ';
var strEndTbl=' </td></tr></table> ';

var strLink= ' <link href="../Css/Css.css" rel="stylesheet" type="text/css" /> <link href="/Css/Css.css" rel="stylesheet" type="text/css" />' ;
var strMain='';
var prtContent = document.getElementById(strid);
var strOldOne=prtContent.innerHTML;
var WinPrint = window.open('','','letf=0,top=0,width=900,height=9 00,toolbar=1,scrollbars=1,status=0');


strMain =strBeginTbl+ strLink + ' ' + prtContent.innerHTML +strEndTbl ;

WinPrint.document.write(strMain );
WinPrint.document.close();
WinPrint.focus();
WinPrint.print();
//WinPrint.close();
prtContent.innerHTML=strOldOne;

btn1.style.visibility ='visible';
}
</script>
<div id="div1">
<input type="button" value="چںپ" name="btn1" onclick="CallPrint('div1');" />
<table border="1" style="width:700px">
<tr>
<td>
1
</td>
</tr>
<tr>
<td>
2
</td>
</tr>
<tr>
<td>
3
</td>
</tr>
<tr>
<td>
4
</td>
</tr>
<tr>
<td>
5
</td>
</tr>
<tr>
<td>
6
</td>
</tr>
</table>
</div>
</body>
</html>

daffy_duck376
چهارشنبه 18 شهریور 1388, 20:17 عصر
دوست عزیز بیا و نصیحت داداش کوچیکتو گوش کن و برای وب کلا کریستال ریپورت رو بگذار کنار . برای آپلود کردنش توی هاست هزار و یک بد بختی داره . بیشتر هاست ها اونو ساپورت نمی کنن ! بهتره از ابزار های بهتر استفاده کنی که با کپی کردن چند تا DLL در شاخه bin ختم بخیر میشه و نیاز به نصب هیچی نداره ! یه نگاهی به این لینک بنداز http://www.stimulsoft.com (http://www.stimulsoft.com/)
:لبخند: (http://www.stimulsoft.com/)
اگه باز هم سوالی داشی در خدمتم

minamorsali
پنج شنبه 19 شهریور 1388, 14:46 عصر
منم با duffy_duck376 موافقم. کریستال ریپورت گزینه خوبی نیست.
من از گرید ویوو برای گزارش هام استفاده می کنم. کار کردن باهاش خیلی ساده اس و من می تونم گزارشاتم رو هر طور که می خوام بسازم. سرعت رو هم پایین نمی یاره.
حالا انتخاب با خودته. بقیه دوستان هم راهنمایی های خوبی کردن.

minamorsali
پنج شنبه 19 شهریور 1388, 15:24 عصر
دوست عزیز

این یه نمونه کد ساده ست :

شما مثلا دیتاگرید خود را داخل یک تگ div قرار دهید , به تگ div یک اسم بدید سپس در رویداد چاپ این تابع را فراخوانی کنید ** اسم div به تابع ارسال شود:




<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
</head>
<body>
<script>
function CallPrint(strid)
{
btn1.style.visibility ='hidden';
var strBeginTbl=' <table dir="rtl" style="width:100%"><tr><td> ';
var strEndTbl=' </td></tr></table> ';

var strLink= ' <link href="../Css/Css.css" rel="stylesheet" type="text/css" /> <link href="/Css/Css.css" rel="stylesheet" type="text/css" />' ;
var strMain='';
var prtContent = document.getElementById(strid);
var strOldOne=prtContent.innerHTML;
var WinPrint = window.open('','','letf=0,top=0,width=900,height=9 00,toolbar=1,scrollbars=1,status=0');


strMain =strBeginTbl+ strLink + ' ' + prtContent.innerHTML +strEndTbl ;

WinPrint.document.write(strMain );
WinPrint.document.close();
WinPrint.focus();
WinPrint.print();
//WinPrint.close();
prtContent.innerHTML=strOldOne;

btn1.style.visibility ='visible';
}
</script>
<divid="div1">
<inputtype="button"value="چںپ"name="btn1"onclick="CallPrint('div1');"/>
<tableborder="1"style="width:700px">
<tr>
<td>
1
</td>
</tr>
<tr>
<td>
2
</td>
</tr>
<tr>
<td>
3
</td>
</tr>
<tr>
<td>
4
</td>
</tr>
<tr>
<td>
5
</td>
</tr>
<tr>
<td>
6
</td>
</tr>
</table>
</div>
</body>
</html>



با تشکر از راهنماییتون.
روشی که گفتید رو امتحان کردم، در حالتی که صفحه aspx باشه، بهم جواب داد.
ولی من گزارشاتم در صفحات ascx است و وقتی در اون صفحه امتحان کردم ، جواب نداد. یعنی روی دکمه که کلیک می کنم هیچ اتفاقی نمی افته، فقط در status bar اکسپلورر می نویسه error on page.
لطفا راهنماییم کنید.
این روش در صفحات ascx جواب میده؟ اگه می ده چطوری؟
و اینکه، با گرید ویوو هم سازگاره؟

با تشکر.

daffy_duck376
شنبه 21 شهریور 1388, 04:55 صبح
من تا اونجا که میدونم این روش جواب میده البته به شرطی که سایر صفحات از نظر طول و عرش از از کاغذ ما بزرگتر نباشه . در غیر این صورت صفحه هات نصفه چاپ میشن! و ما نمی تونیم کاری براش بکنیم

kiosksoft
شنبه 21 شهریور 1388, 08:48 صبح
دوست عزیز


روشی که گفتید رو امتحان کردم، در حالتی که صفحه aspx باشه، بهم جواب داد.
ولی من گزارشاتم در صفحات ascx است و وقتی در اون صفحه امتحان کردم ، جواب نداد. یعنی روی دکمه که کلیک می کنم هیچ اتفاقی نمی افته، فقط در status bar اکسپلورر می نویسهerror on page.

این روش در صفحات ascx جواب میده؟ اگه می ده چطوری؟


دلیل اینکه با UserControl جواب نمیده اینه که احتمالا UserControl ها در یک شاخه بالاتر یا پایین تر از صفحات aspx تون میباشد در نتیجه آدرس فایل JS رو پیدا نمیکنه ** یا اینکه اسم تگی که به عنوان پارامتر ارسال میکنید رو پیدا نمیکنه! حل نشد نمونه کد تون رو اینجا بزارید.


و اینکه، با گرید ویوو هم سازگاره؟

بله با هر تگی معمولا جواب میده . فقط باید خود گرید ویو داخل یک تگ مثلا div قرار بگیره سپس div رو ارسال کنید.

پیشنهاد :

این نوع گزارش گیری در برنامه های کاربردی جواب نمیده , فقط برای چاپ معمولا یک مقاله یا یک تک صفحه بکار برده میشود. برای چاپ و تهیه گزارشات حرفه ای معمولا برنامه نویسان از ابزار های گزارش سازی استفاده میکنند که یکی از آنها Crystal Report میباشد , اما کریستال ریپورت برای اجرا روی هاست مشکلات زیادی دارد و اینکه اکثر هاست ها از کریستال پشتیبانی نمیکنند برنامه کامل وابسته به هاست میشود , پس گزینه کریستال ریپورت رو هم حذف میکنیم.

برای چاپ و تهیه گزارشات حرفه ای میتوانید از نرم افزار Stimulsoft Reports استفاده کنید. بسیاری از مشکلات کریستال ریپورت رو ندارد . به سادگی در یکی دو جلسه میتونید یاد بگیرید .امکانات خوبی داره و اینکه به هاست وابسته نیست , یعنی با آپلود Dll های اون روی هاست کار میکنه و مشکلات جانبی کریستال رو ندارد.

موفق باشید

minamorsali
شنبه 21 شهریور 1388, 14:18 عصر
سلام

ببخشید دوست عزیز این نرم افزار که گفتید، ک.ر.ک شده اش هست؟ من با .net 2005 کار می کنم ، باید چه نسخه ای از این نرم افزار رو نصب کنم؟
یه سوال دیگه اینکه ، با توجه به اینکه من وقتم محدوده و ظرف چند روز باید گزارش هام آماده باشه،می تونم ظرف دو سه روز کار کردن با این نرم افزارو یاد بگیرم و گزارشاتمو باهاش بسازم.

خیلی ممنون

kiosksoft
شنبه 21 شهریور 1388, 16:55 عصر
بخشید دوست عزیز این نرم افزار که گفتید، ک.ر.ک شده اش هست؟ من با ‎.Net 2005 کار می کنم ، باید چه نسخه ای از این نرم افزار رو نصب کنم؟
یه سوال دیگه اینکه ، با توجه به اینکه من وقتم محدوده و ظرف چند روز باید گزارش هام آماده باشه،می تونم ظرف دو سه روز کار کردن با این نرم افزارو یاد بگیرم و گزارشاتمو باهاش بسازم.

جواب همه سوال هاتون مثبت است.

من هم در 2005 هم در 2008 ازش استفاده میکنم. تو بازار هست . در کوتاه ترین زمان یاد میگیرید!

خود سایت سازنده هم فروم دارد و هم آموزش تصویری که میتونید از اونجا کمک بگیرید : http://www.stimulsoft.com/

minamorsali
شنبه 21 شهریور 1388, 18:41 عصر
ببخشید یه سوال دیگه: من که می خوام این نرم افزارو برای برنامه های تحت وب استفاده کنم، باید نسخه .net اش رو تهیه کنم یا .web؟

خیلی خیلی بخاطر جوابهاتون ممنونم.

kiosksoft
یک شنبه 22 شهریور 1388, 10:00 صبح
Stimulsoft Reports.Web رو بگیرید فعلا کارتون رو رآ میندازه.

معمولا تو هر دوی .Net و Web در یه سی دی هست.

بعد اینکه خرید کردید , روش کار با این نرم افزار ساده ست مشکلی بود تو همین تاپیک مطرح کنید

minamorsali
یک شنبه 22 شهریور 1388, 19:16 عصر
ببخشید من نسخه .netاش رو تونستم گیر بیارم، این نسخه رو نمی تونم استفاده کنم؟ آخه خیلی گشتم اما نسخه دیگه ای نبود.
واسه خریدش از چند تا مغازه معتبر توی اصفهان سوال کردم، اما نداشتند.

با تشکر

minamorsali
دوشنبه 23 شهریور 1388, 02:28 صبح
سلام
دوست عزیز به خاطر راهنمایی هاتون واقعا متشکرم.
همون ورژن دات نتش رو فعلا نصب کردم تا کار باهاش رو یاد بگیرم. با کمک سایت stimulsoft یه چیزایی دستگیرم شد، اما سوالاتی برام پیش اومد، ممنون میشم بهم کمک کنید:
1:چرا اگه rendermode روی ajax باشه هیچ داده ای بهم نشون نمی ده؟rendermode رو معمولا روی حالت استاندارد می ذارن؟
2:یه مشکلی هست، اینکه آیکون های بالای web report viewer رو در زمان اجرا بدون عکسشون نشون می ده. مشکل از کجاس؟ آیا باید عکساشو خودم به پروژه ام اضافه کنم؟

ostovarit
شنبه 22 خرداد 1389, 01:30 صبح
ایا با کمک این ابزار می توان این امکان را به کاربر داد تا اجزای فرم یا همان گزارش را جابجا یا حذف کند ( من هدفم ایجاد محیطی برای طراحی فاکتور توسط کاربر هست)؟

kiosksoft
شنبه 22 خرداد 1389, 18:08 عصر
ایا با کمک این ابزار می توان این امکان را به کاربر داد تا اجزای فرم یا همان گزارش را جابجا یا حذف کند ( من هدفم ایجاد محیطی برای طراحی فاکتور توسط کاربر هست)؟

یله

این امکان هم وجود دارد