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

البرنامج يقرأ التاريخ الهجري ولا يخرج التقرير إلا بناء على التاريخ الميلادي ... أرجو المشاركة

مغلق
بدأه asfora في 16 يوليو 2006 · 16 رد · 3,635 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

البرنامج قمت بضبط التاريخ فيه إلى هجري في form-load

عن طريق calender=vbcalhijri

وفعلاً عند عمل الأتي

msgbox(date)

يقرأ التاريخ الهجري لليوم

حتى الآن كله تمام التمام

مطلوب في البرنامج أن يقرأ التاريخ الهجري وإذا ساوى تاريخ اليوم التاريخ الموجود في textbox معينه اسمها follow2exp فإنه يقوم بطباعة تقرير

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

وعند تغيير التاريخ الميلادي في الحقل المقابل في الأكسس إلى تاريخ اليوم وتشغيل البرنامج يخرج التقرير ويعطيك كل البيانات

غيرت كل شئ في لوحة التحكم الخاصة بالخيارات الإقليمية إلى التاريخ الهجري

ولكن البرنامج لا يقرأ إلا عندما أغير التاريخ الميلادي

أرجوكم دلوني على الحل بارك الله فيكم

#2

السلام عليكم

اخى الكريم إذا كنت تحفظ التاريخ فى قاعده البيانات على حقل نوعه date

فمن الممكن حفظه فى حقل نوعه text

وبهذا يعمل الأكسس على ان هذا نص ويمكنك مقارنته رالتاريخ التانى على انه نص

هذا حل مؤقت إلى ان نصل إلى حل أخر

تم تعديل هذه المشاركة بواسطة GENIUS-IT في 16 يوليو 2006 في 23:12

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#3

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

أعتقد انه بنفس الطريقة التي استخدمتها في تخزين قيمة التاريخ الهجري يمكنك البحث عن قيمة التاريخ كالتالي

Dim calender As Date

calender = vbCalHijri

If vbCalHijri = calender Then MsgBox "MR^King"

وطبعا هنا هنستبدل الـ calender باسم الحقل الموجود في قاعدة البيانات

أرجود ان تكون الفكرة واضحة

ولو لسه فيه مشكلة واحاول اقوم باعداد مثال جاهز ليك ان شاء الله

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

الى اللقاء

JusT LeT YouR MinD WorK

#4

شكراً أخي GENUOUS على المشاركة والتجاوب وبارك الله فيك

وكذلك أخي الكريم مستر كينج

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

لو هناك مثال على ذلك فجزاكم الله خيراً

#5

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

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

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

الى اللقاء

example.rar

JusT LeT YouR MinD WorK

#6

بسم الله الرحمن الرحيم

المشكلة اتحلت الحمد لله ياشباب وجزى الله خيراً كل من ساهم وشارك فيها

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

طبعاً رجّعت كل حاجه زي ماكانت بالضبط

يعنى عملت في FORM_LOAD السطر التالي

CALENDER=VBCALHIJRI

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

إذاً لماذا يتجاهل أن يأخذ التاريخ الهجري

علمت أن المشكلة في برنامج الأكسس لأنه هو الذي يعطي معلوماته إلى الكريستال ريبورت فالكريستال ماهو إلا مرايا لمحتويات الجدول المدون في الأكسس

ذهب إلى أدوات خيارات إعدادات دولية ثم علمت علامة صح على خيار استخدام التاريخ الهجري

وظبطت والحمد لله

أتمنى كل من يمر بتلك المشكلة أن يرى حلها ويدعو لنا ولكل من شارك وحاول يحلها

جزاكم الله خيراً

:D

:D

:D

#7

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

المشكلة هي كالتالي:

1- الجدول في برنامج الأكسس يستقى بياناته من خلال المشروع في الفيجول بيسيك

2- المشروع في الفيجول مصمم كل حاجه فيه على استخدام التاريخ الهجري

calender=vbcalhijri

3- وكذلك ضبطت الأكسس لكي يتعامل مع التاريخ الهجري من خلال أدوات ثم اعدادات اقليمية

إذاً الأكسس والفيجول يتعاملا بالهجري

ظهرت المشكلة وهي أنه عند إدخال البيانات في المشروع في الفيجول ثم حفظها وعند فتح الأكسس أجد الأتي

لو أدخلت مثلاً تاريخ 27/7/1427

يظهر التاريخ في الحقل بالشكل التالي

25/09/830

حاجه غريبة جداً جدا

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

رجعت إلى أدوات خيارات إعدادات دولية وحذفت خانة الاختيار للتاريخ الهجري ( أي يعمل بالتاريخ الميلادي )

ظهرت مفاجأة وهي ظهور التاريخ بالشكل الصحيح اللي دخلته في المشروع أي 27/7/1427

طبعاً المشكلة لم تنحل حيث أن هناك تقرير في الكريستال ريبورت بيقرأ التاريخ من ذلك الحقل وعلى ضوء التاريخ (الهجري) يقوم بإصدار تقرير تلقائياً

أسف أطلت عليكم ولكن المشكلة حقيقي تعبتني أريد أظهار شكل التاريخ في الحقل مثل 27/7/1427 على أن يكون نوع التاريخ المعطى هجري

ملحوظة نوع الحقل الذي يظهر هذا التاريخ هو تاريخ/وقت

#8

قبل الحفظ أو الاستعلام اكتب

vba.calendar=vbhijri

460.gif

#9

أخي المتميز شاكر جداً لك على الاهتمام

على فكره أين أضع هذا الكود قبل الحفظ أو الاستعلام

في المشروع في صفحة الفيجول ومع الضغط على زر "حفظ"

أو في الأكسس وأين أضعه في الأكسس هل في قناع الادخال الخاص بذلك الحقل أم أين

شكرا لك أخي المتميز

#10

قبل عملية الحفظ تأكد من أن التاريخ هجري باستخدام msgbox

وكذلك عند الاستعلام قبل وضع النتيجة في textbox

460.gif

#11

أخي المتميز الكود أرسله لك الآن

Private Sub cmdadd_Click()

Dim i As Integer

Dim r As String

Dim SqlStr As String

VBA.Calendar = vbCalHijri 'هذا السطر الذي أوصتني بكتابته

'Calendar = vbCalHijri 'هذا السطر كنت كاتبه قبل توضيحك VBA

SqlStr = "Select * From Import"

If rs.State = adStateOpen Then rs.Close

rs.Open SqlStr, db, adOpenDynamic, adLockOptimistic

If Combo1.Text = "" Or impno.Text = "" Or impdate.Text = "" Or subject = "" Or goto1.Text = "" Or impno1.Text = "" Or impdate1.Text = "" Then

MsgBox ("من فضلك أكمل البيانات")

impno.SetFocus

Exit Sub

End If

If rs.RecordCount = 0 Then GoTo ss

rs.MoveFirst

Do While Not rs.EOF

If Not rs.EOF Then

If rs![impno] = impno Then

r = MsgBox("المعاملة موجودة من قبل هل تريد التعديل", vbYesNo, "تعديــل")

If r = vbYes Then

cmdedit_Click

Else

impno.SetFocus

Exit Sub

End If

Exit Sub

End If

End If

rs.MoveNext

Loop

ss:

rs.AddNew

rs![impno] = impno

rs![impdate] = impdate

rs![projectno] = projectno

rs![matchno] = matchno

rs![directto] = cmb1

rs![explain] = explain

rs![ajel] = ajel

rs![serry] = serry

If follow.Text = "" Then

follow.Text = 0

End If

rs![follow] = follow

If follow3.Text = "" Then

follow3.Text = 0

End If

rs![follow3] = follow3

rs![efada] = efada

If follow2.Text = "" Then

follow2.Text = 0

End If

rs![follow2] = follow2

rs![datefollow] = Text1.Text

rs![datefollow2] = Text2.Text

rs![datefollow3] = Text3.Text

rs![remark] = remark

rs![Num] = RcNum

rs![deptname] = Combo1.Text

rs![subject] = subject

rs![impno1] = impno1

rs![goto1] = goto1

'rs![txtdept] = txtdept

rs![impdate1] = Format(impdate1, "YYYY/MM/DD")

If aajel.Value = Unchecked Then

ajel.Text = "no"

Else

ajel.Text = "yes"

End If

If secret.Value = Unchecked Then

serry.Text = "no"

Else

serry.Text = "yes"

End If

rs.Update

MsgBox "تم حفظ المعاملة"

cmdclear_click

Combo1.SetFocus

End Sub

#12

جرب ضع

VBA.Calendar = vbCalHijri

بعد فتح القاعدة

rs.Open SqlStr, db, adOpenDynamic, adLockOptimistic

460.gif

#13

أخواني الأعزاء متشكر جداً على الدخول والاهتمام

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

أراها كما هي بالتنسيق

26/09/830

رغم أني دخلت تاريخ

28/7/1427

جزاكم الله خيراً ياأخي

#14

أرفق المثال هنا او مثال شبيه

460.gif

#15

لحل مشكلة التاريخ الهجري

اعمل حقلين

حقل نصي للتاريخ الهجري

حقل تاريخ للتاريخ الميلادي

عند ادخال تاريخ هجري عن طريق الفجوال سجل التاريخ في الحقل النصي

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

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

#16

اخواني الأحباب

تم حل المشكلة بفضل الله تعالى وكان الحل كالتالي

بدلاً من وضع textbox في الفيجول ليستقبل التاريخ وضعت أداة maskeditbox وضبطت لها خاصية mask كما يلي

" ## / ## / #### " وخزنت فيها التاريخ فكان شكل التاريخ المعروض فيها هو شكله بالضبط المعروض في الحقل المقابل في الأكسس

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

شكراً جزيلا ًلكم أحبابي

#17

فكرة تغيير نوع الحقل إلى نص ما أظنها تعمل بشكل سليم .

ويمكنك الاستغناء عن الماسك واستخدام الكود

TxtDate=format(TxtDate,"yyyy/mm/dd")

قبل الادراج

والحمد لله اللي عمل معك بشكل سليم .

تم تعديل هذه المشاركة بواسطة المتميز في 24 أغسطس 2006 في 14:04

460.gif

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…