الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تقرير باعمده غير معروفة

بدأه ابو بكير في 7 نوفمبر 2011 · 10 رد · 1,147 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

باستخدام ال crystal report

قمت بعمل stored procedure حيث امرر له تاريخ فيقوم بعمل 10 اعمده بالتواريخ التالية للتاريخ الممرر

مثال : اذا مررت 1/1/2011 فيطلع الناتج لأسماء الاعمده 1/1/2011-2/1/2011-3/1/2011-4/1/2011-5/1/2011-6/1/2011-7/1/2011-8/1/2011-9/1/2011-10/1/2011 وهكذا حيث ان التواريخ ليست ثابتة بل تتغير وتعتمد على التاريخ الممر

فكيف اقوم بعمل تقرير حيث بحثت ولم اجد نتيحة علما انني استخدم sql server2005 و VS2008

ارجوا المساعده لو سمحتوا

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

#2

السلام عليكم ...

هنا مشاركة توضح كيفية عمل تقرير بأعمدة متعددة رابط

طريقة أخرى هي الأفضل باعتقادي أن تضع ناتج الأستعلام كــ datasource لــ DatagridView .. ثم تقوم بطباعتها باستخدام الكود الموجود في الرابط The DataGridViewPrinter Class أو في الرابط Another DataGridView Printer

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

الاخ houssam11350_11350

بالنسبة للرابط الذي فيه طريقة تقسيم الصفحة الى اعمده كيف يمكنني ان اجعل الاعمده تبدا من اليمين الى اليسار

وبالنسبة للرابط الي قلتيلي علية وهو طباعة القريد فيو كيف يمكنني ان اخصص او اعمل اضافات على التقرير

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

#4

السلام عليكم ..

اقتباس
بالنسبة للرابط الذي فيه طريقة تقسيم الصفحة الى اعمده كيف يمكنني ان اجعل الاعمده تبدا من اليمين الى اليسار

بصراحة لا أعرف .. و هل هذا بالاساس ممكن ..بحثت فلم أجد أي شئ يشير إلى اتجاه التقرير ...

اقتباس
وبالنسبة للرابط الي قلتيلي علية وهو طباعة القريد فيو كيف يمكنني ان اخصص او اعمل اضافات على التقرير

للأسف .. على مايبدو لا يمكن التخصيص أو الاضافة .. فهو يطبع الــ Grid كما هي فقط ..

بانتظار ردود الخبراء ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

شكرا لك اخي على المعلومات

وسأظل ابجث

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

#6

اجعل ال stored procedure ترجع بدل اسم العمود تاريخ يرقم رقم ترتيب الناتج اي 1-2-3 الخ وفي القرير يجمع رقم العمود مع قيمة التاريخ المرسل يكون بعد لك التاريخ بختصار اا لم تتضح الفركره ارفق قاعد البيانات وشكل التقرير

#7

شكرا لك اخي KARIMSOFT لكن اذا بدلت اسماء الاعمده لن تظهر البيانات لأن الstored procedure من نوع Dynamic Pivote

وهذا هو الSP:

============

ALTER PROCEDURE [dbo].[DateTest]

@i datetime,

@gid varchar(1000)

AS

BEGIN

DECLARE @listCol VARCHAR(2000)

DECLARE @query VARCHAR(4000)

DECLARE @IDList table (ID datetime)

declare @fo int

set @fo = 0

while @fo <=13

begin

INSERT INTO @IDList values (CONVERT(varchar(11),DATEADD(dd,@fo,@i),101))

set @fo=@fo+1

end

SELECT @listCol = STUFF(( SELECT DISTINCT

'],[' + ltrim(CONVERT(nvarchar,ID, 111))

FROM @IDList

ORDER BY '],[' + ltrim(CONVERT(nvarchar,ID, 111))

FOR XML PATH('')

), 1, 2, '') + ']'

print @listCol

set @query='SELECT * FROM

(SELECT ID_Number, Date, state,Group_ID

FROM dbo.Attendance_Registration

where Group_ID='''+@gid+'''

) src

PIVOT (SUM(state) FOR Date

IN ('+@listCol+')) AS pvt'

execute(@query)

END

راح اشرح لك فكرة الستورد بروسيدجر ابغى امرر له تاريخ فيطلعلي اربعة عشر عمود كل عمود اسمه باسم التاريخ حيث اسم العمود الاول اسم اول تاريخ وثاني عمود اسمه ثاني تاريخ

قد تتسائل لماذا هذه اسماء الاعمده

الفكره:

عندي جدول فيه اسم الطالب والتاريخ وهل هو حاضر ام غايب يعني ثلاثة اعمدة فاريد تقرير مثلا اسبوعي في اليوم المعين من هم الطلاب الحاضرين الغائبين

وهذي صورة توضح كيف ابغى التقرير يكون

Attend.jpg

وياليت إن شاء الله نتوصل الى حل

تم تعديل هذه المشاركة بواسطة ابو بكير في 11 نوفمبر 2011 في 13:06

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

#8

تم تعديل الstored procedure ليفي بغرض ومرفق مثال للقرير

وهذا هو الSP:

============

ALTER PROCEDURE [dbo].[DateTest]

@i datetime,

@gid varchar(1000)

AS

BEGIN

DECLARE @listCol VARCHAR(2000)

DECLARE @query VARCHAR(4000)

DECLARE @IDList table (ID datetime)

declare @fo int

set @fo = 0

while @fo <=13

begin

INSERT INTO @IDList values (CONVERT(varchar(11),DATEADD(dd,@fo,@i),101))

set @fo=@fo+1

end

SELECT @listCol = STUFF(( SELECT DISTINCT

'],[' + ltrim(CONVERT(nvarchar,ID, 111))

FROM @IDList

ORDER BY '],[' + ltrim(CONVERT(nvarchar,ID, 111))

FOR XML PATH('')

), 1, 2, '') + ']'

print @listCol

DECLARE @outTable table (

ID_Number int,

Cal1 int,

Cal2 int,

Cal3 int,

Cal4 int,

Cal5 int,

Cal6 int,

Cal7 int,

Cal8 int,

Cal9 int,

Cal10 int,

Cal11 int,

Cal12 int,

Cal13 int,

Cal14 int)

set @query='SELECT * FROM

(SELECT ID_Number, Date, state

FROM dbo.Attendance_Registration

where Group_ID='''+@gid+'''

) src

PIVOT (SUM(state) FOR Date

IN ('+@listCol+')) AS pvt'

insert into @outTable

execute(@query)

select * from @outTable

end

اتمني ان يكون هذا هو المطلوب

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 12 نوفمبر 2011 في 03:41

#9

شكرا لك اخي KARIMSOFT تمام الان صارت اسماء الاعمده ثابتة والبيانات الي ظهرت صحيحة

بس الان نمرر التواريخ بدل اسماء الاعمده في التقرير فهل عندك طريقة للتمرير بحيث راح امرر تاريخ التاريخ هذا يروح لحقل في التقرير والحقل الاخر ياخذ التاريخ الي بعده وهكذا

يعني كمثال :

cal1=1/1/2011

cal2=2/1/2011

cal3=3/1/2011

وشكرا لك على اهتمامك

تم تعديل هذه المشاركة بواسطة ابو بكير في 13 نوفمبر 2011 في 06:34

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

#10

Formaula in the report

#11

شكرا لك اخي تم الحل ولله الحمد

مشكور وجزاك الله خير

سأصبر حتى يعجز الصبرُ عن صبري

وسأصبر حتى يأذن الله في أمري

وسأصبر حتى يعلم الصبرُ أني صبرتُ على شيئاٍ أمرُ من الصبرِ

مواضيع مشابهة