تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
عرض التاريخ الهجري في الكريستال ريبورت
#1
السلام عليكم ورحمة الله وبركاته 
إخواني لدي متأسف جداً لتكراره ولكن لحاجتي الشديدة اضطريت أن أطرحه وهو أن لدي قاعدة بيانات sql  ويوجد بها حقل للتاريخ وقد عمل تحميل للبيانات في الداتاقريد فيو عملت لها تنسيق تظهر بالهجري لكن المشكلة تقع عندما أنتقل للكريستال ريبورت فإنها تظهر بالميلادي وقد حاولت كثيرا بغير فائدة 
متأسف مرة أخرى لتكراري السؤال وقد قام الأخ إبراهيم أبيو والأخ Muaamar في ذلك الوقت بمحاولة مساعدتي ولكن للأسف لم أستطع حل المشكلة

لكم جزيل الشكر 
دمتم بود
الرد
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته
بالنسبة لي الطريقة التي اتعامل معها في كريستال ريبورت ولا تواجهني اي مشاكل هي كالاتي
التقرير يتم انشاؤه على فيجوال بيسك او سي شارب حسب اللغة المستخدمة ويتم جلب البيانات بما فيها التاريخ وغيره وعرضها في الداتا جريد فيو وفي التيكست بوكس
واقوم بانشاء داتاسيت 
عند النقر على زر طباعة يتم تعبئة محتويات التقرير في داتا سيت ومن داتا سيت الى كريستال رييبورت ويظهر التقرير في كريستال ريبورت ضمن التنسيق والتصميم المعد من قبل
ولا تواجهني اي مشاكل
ارجو ان يكون كلامي واضح
سورس كود برنامج محاسبة ومبيعات احترافي ومتكامل- قم بالاطلاع على البرنامج 
 مجاناااااا
واتساب 00963951283515
الرد
#3
مرحباً بالأخ أبو أنس هذه نفس الطريقة التي أستخدمها ولكن دائماً يظهر عندي التاريخ الميلادي (  طبعاً هو المخزن في قاعدة البيانات ويظهر في الداتاقريدفيو التاريخ الهجري حسب الفورمات التي عملتها ) ولكن في الكريستال ريبورت لايظهر إلا التاريخ الميلادي  


        Dim dt1 As New DataTable
        dt1 = DataGridView1.DataSource
        Dim cr1 As New CrystalReport1
        cr1.SetDataSource(dt1)
        Dim r1 As New Form25
        r1.CrystalReportViewer1.Zoom(300%)
        r1.CrystalReportViewer1.ReportSource = cr1
        r1.ShowDialog()

لك جزيل الشكر 
دمت بود



      
الرد
تم الشكر بواسطة:
#4
دعني اطرح عليك سؤال
في حال فتحت شاشة معينة وتحتوي مثلا على تيكست بوكس فيه قيمة معينة
طبعا هذه القيمة تم جلبها من سيكوال. وفي حال ضغطت على زر طباعة فسيظهر التقرير يحتوي القيمة التي تم جلبها من سيكوال
سؤالي ماذا اذا قمت انت بتغيير القيمة قي ابتيكست بوكس ثم ضغطت على زر طباعة
هل سيظهر التقرير القيمة في تيكست بوكس قبل التغيير ام بعد التغيير
سورس كود برنامج محاسبة ومبيعات احترافي ومتكامل- قم بالاطلاع على البرنامج 
 مجاناااااا
واتساب 00963951283515
الرد
تم الشكر بواسطة: جيولوجي مبتدئ , جيولوجي مبتدئ
#5
السلام عليكم ورحمة الله وبركاته

هل جربت ارسال التاريخ من الاداة الى التقرير عن طريق ال (Parameter Fields) 
ومن ثم تغيير اعدادات الحقل في (Parameter Fields) الى نوع تاريخ 
ووضع هذا الكود مثل الصورة المرفقة


كود :
Local StringVar str := ToText(CurrentFieldValue );
if IsNumeric(str) then str := ToText(ToNumber(str),0 ); // 0 عدد العلامات العشرية
if IsDate(str) then str := cstr(cdate(str),"yyyy/MM/dd");

Local numberVar  i:=0;
for  i:=0  to 9 do
    str:=Replace(str,totext(i,0) , ChrW (i+1632));
str


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة: جيولوجي مبتدئ
#6
السلام عليكم ورحمة الله وبركاته 


الشكر الجزيل لكم لإهتماكم وتفاعلكم 

إخواني يمكن ما قدرت أوضح لكم الفكرة لذا سأعيدها  

أولاً  أنا لا أريد نقل البيانات من تكست بوكس  إنما يوجد عندي عمود في الجدول يحتوي على تاريخ غياب الموظفين بعد ذلك نقلتها إلى الداتاقريدفيو ثم ذهبت بها إلى الكريستال ريبورت ما يحصل هو التالي يتم عرض التاريخ في الداتاقريد فيو بالتاريخ الهجري ولكن عند عرضها في جدول تقرير كريستال ريبورت تظهر ميلادي 



>>> طبعاً أنتم تعرفون أن التاريخ يخزن في sql  بالتاريخ الميلادي ولكن عملت Custom format   (  "yyyy/MM/dd" ) في الداتاقريدفيو لتظهر هجري  وبالفعل تعرض هجري في الدتاقريدفيو ولكن للأسف تظهر ميلادي في الكريستال 



آسف على الإطالة أتعبتكم معي 


لكم جزيل الشكر 

دمتم بود
الرد
تم الشكر بواسطة:
#7
سبب المشكلة انك تعتقد انك تقوم بتزويد الكريستال ببيانات من الداتا جريد فيو
لا اطلاقا الكود الذي تستخدمه انت يقوم بتزويد الكريستال ببيانات من السيكوال طبعا عن طريق وسيط 
تأمل هذا السطر من الكود الخاص بك
 dt1 = DataGridView1.DataSource
ربما يعتقد البعض معنى هذا االسطر ان الداتا تيبل تساوي محتويات الداتا جريد فيو وهذا خطأ والصحيح انك جعلت الداتا تيبل تساوي  محتويات مصدر البيانات للداتا جريد فيو
فيجب استبدال ذلك بما يلي
نقوم باضاف اعمدة للداتا تيبل ثم نقوم بعمل جملة فور تمر على اسطر الداتا جريد فيو وتضيق القيم للداتا تيبل
اعرف ان كلامي قد يبدو غير واضح ولكن سأقوم بنسخ كود من احد برامجي كي تتضح الفكرة
كود :
     Dim dt As New DataTable
           With dt
               .Columns.Add("id")
               .Columns.Add("BILLNO")
               .Columns.Add("BRANSH_NAME")
               .Columns.Add("CUST_NAME")
               .Columns.Add("PHON")
               .Columns.Add("DAT")
               .Columns.Add("notee")
           End With

           For I As Integer = 0 To DGVSEARSH.Rows.Count - 1
               If DGVSEARSH.Rows(I).Cells(0).Value <> Nothing Then
                   dt.Rows.Add(DGVSEARSH.Rows(I).Cells(0).Value.ToString, DGVSEARSH.Rows(I).Cells(1).Value.ToString, DGVSEARSH.Rows(I).Cells(2).Value.ToString, DGVSEARSH.Rows(I).Cells(3).Value.ToString, DGVSEARSH.Rows(I).Cells(4).Value.ToString, DGVSEARSH.Rows(I).Cells(5).Value.ToString, DGVSEARSH.Rows(I).Cells(6).Value.ToString)
               End If
           Next
           '    '-------------------------------------------------------
           Dim rptDoc As CrystalDecisions.CrystalReports.Engine.ReportDocument
           rptDoc = New Crystal_bill1
           rptDoc.SetDataSource(dt)

           Dim f As New FRM_PRINT
           f.CrystalReportViewer1.ReportSource = rptDoc
           f.ShowDialog()
سورس كود برنامج محاسبة ومبيعات احترافي ومتكامل- قم بالاطلاع على البرنامج 
 مجاناااااا
واتساب 00963951283515
الرد
تم الشكر بواسطة: جيولوجي مبتدئ , aftfm , خالد20 , egy_program
#8
السلام عليكم ورحمة الله وبركاته 

جزاك الله كل خير وبارك الله وفيك 

سأجرب الكود وأعلمك بما حصل معي 



لك جزيل الشكر 

دمت بود
الرد
تم الشكر بواسطة: خالد20
#9
السلام عليكم ورحمة الله وبركاته الشكر الجزيل لجميع الإخوة تم حل المشكلة 
تحية عطرة لكم جميعاً استعملت الكود الذي أرسله الأخ أبو أنس 

لكم جزيل الشكر 
دمتم بود
الرد
تم الشكر بواسطة: ابو انس



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم