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

وجاءت مشكلة التاريخ

مغلق
بدأه أحمد الحربي في 20 يناير 2003 · 42 رد · 2,522 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

في الحقيقة تكلم الإخوة الكرام عن مشكلة 30/12 من كل سنة فأكسس يحولها إلى 1/1 ..

وكان من ضمن الاقتراحات هو تخزينه في القاعدة بتاريخ ميلادي وعرضه بتاريخ هجري عبر دالتين ..

وقد نجحت معي هذه الطريقة وارتحت لها ولكن سؤالي :

كيف أعرض التاريخ المخزن كميلادي في ComboBox كتاريخ هجري

ولكم أطيب تحياتي

#2

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

تصوروا القيمة مخزنة على أساس 01/03/2003 فأعطانيها 03/01/2003 ..

أرجو المساعدة

#3

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

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

mk17481_26bccea871.gif
#4

الأخ فتى الوادي هذا ما استخدمه حالياً وهي طريقة ممتازة ولو لم تكن ما نريد ولكن كحل وسط 0

#5

أخي أحمد

اقتباس
كيف أعرض التاريخ المخزن كميلادي في ComboBox كتاريخ هجري

لم أفهم السؤال

#6

أخي الكريم / فينوس

هل استخدمت الدالة format .. ولو تضع القاعدة هنا لوجدتَ حلاً إن شاء الله

الأخوين الكريمين / فتى الوادي .. مصلح

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

الأخ الكريم / حارث

ما أقصده هو :

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

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

وشكراً لكم على التفاعل

#7

الإخوة الكرام

السلام عليكم

فينوس : يظهر أن مشكلتك ليست أن التاريخ خطأ بل المشكلة في التنسيق فقط حبذا لو أرفقت المثال حتى نساعك

أحمد الحربي : استخدام طريقة التقسيم لا تقفد التعامل مع دوال التاريخ لأنه يمكنك تحويلها إلى تاريخ مرة أخرى باستخدام دالة dateserial كما في المثال التالي :

DateSerial(1969, 2, 12)

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

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

تحياتي

أخوكم / أبو هاجر

#8

أشكركم على ردودكم ..

بالنسبة للتنسيق Format هو ما جعلني أجن و بصراحة قبل أن أشتكي قلت لم لا أجرب Format فعندما أدخل مثلاً 3/1/2003 بعد التحديث يعطيني

الجمعة 03/01/2003 و لكن أن تستخدم دالة Dlast عندها ترى العجب إذ أعطانيها الأربعاء 01/03/2003 ..

على كل سأنشر مثالاً صغيراً يوضح المشكلة ..قريباً

مع التحية

#9

مرحباً..

لست أدري ما الذي يحدث هل لنظام ويندوز علاقة بالموضوع ..لقد بدأت أشك بنفسي

المثال المرفق عند تطبيقه على ويندوز مي يولد المشكلة التي أعانيها و لكن عندما يتعلق الأمر بويندوز XP كل شيء على ما يرام ؟؟

ترى ما السبب..

أرفقت الملف لتجربوه مع ملاحظة أنني وضعت القيمة الافتراضية لحقل التاريخ آخر قيمة موجودة في الجدول ...

date.zip

#10

الأخ الكربم فينوس

السلام عليكم

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

جرب تنسيقاً آخر للتاريخ حتى تتأكد من أن كل شيء يعمل بشكل صحيح مثل

yyyy/mmm/dd ddd

تحياتي

أخوك / أبو هاجر

#11

أخي أبو هاجر

هذا الملف مثال على ما أريد ..

سؤال آخر أيها الكريم ..

أريد كوداً لاستخدام OR في عبارة SQL مع ADO

على فكرة .. كلمة كنت أود أن أقولها لك منذ زمن .. ( أعجب كثيراً من تلاعبك بالأكسس .. زادك الله من العلم والخبرة والهدى )

وعلى فكرة مرة ثانية هل لديك معرفة بـ ADOX وهل تعرف كتباً خاصة بها

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

tran.zip

#12

أخي الكريم

السلام عليكم

مرفق المثال بعد التعديل آمل أن يكون هو ما تريد

تحياتي

أخوك / أبو هاجر

tran.zip

#13

بورك فيك أخي أبو هاجر

فعلاً هو الذي أريد ..

والآن أريد الجواب ولا عليك أمر على السؤال الثاني

أريد كوداً لاستخدام OR في عبارة SQL مع ADO

#14

أخي الكريم

السلام عليكم

ما أعرفه أن ADO لا تختلف كثيراً في عبارة SQL عن DAO ولم أستخدمها مع الأكسس لكنني استخدمتها كثيراً في الـ ASP وكتبت بعض البرامج

هذا مثال جربته قبل قليل على أكسس

Dim pathdata As String

Dim my_Conn As New ADODB.Connection

Dim objRec As ADODB.Recordset

Dim allow As String



pathdata = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Documents and SettingsMohDesktopsnitz2000.mdb" '## MS



Set my_Conn = CreateObject("ADODB.Connection")

    my_Conn.Open pathdata

    

    Set objRec = my_Conn.Execute("SELECT * FROM forum_MODS WHERE M_NAME = 'Attachment' AND M_CODE = 'faExtensions'")

    allow = objRec("M_VALUE")



    objRec.Close

    Set objRec = Nothing

    MsgBox allow

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

تحياتي

أخوك / أبو هاجر

#15

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

وما أريده هو ما إذا كانت القيمتان في متغيرين مثلاً

Dim ADOdb as New ADODB.Conniction 

Dim sq as String

Dim fsName AS string

Dim LsName AS string



ADOdb=CurrentProject.Conniction



fsName="محمد"

LsName="علي"

sq=" Delete * From tbl1 Where tbl1.FirstName="& fsName OR &" tbl1.LastName="& LsName



db.Excute sq

وشكراً لك أيها الكريم

#16

أخي الكريم أحمد

السلام عليكم

الكود السابق خطأ بالطبع لأنك تمرر متغيراً نصياً دون علامتي تنصيص وهذا خطأ والصحيح هو وضع علامة تنصيص قبل وبعد تمرير المتغير إذا كان نصياً وهذا ليس خاصاً بالـ ADO بل هو في استخدام لغة SQL حسب علمي

أضف إلى ذلك أنك حينما تريد استخدام الشرط OR فيجب ذكر حقل الجدول في كل مرة

الكود الصحيح بالشكل التالي

Dim ADOdb as New ADODB.Conniction 

Dim sq as String

Dim fsName AS string

Dim LsName AS string



ADOdb=CurrentProject.Conniction



fsName="محمد"

LsName="علي"

sq = "Delete * From tbl1 Where tbl1.FirstName='" & fsName & "' OR tbl1.LastName='" & LsName & "'"



db.Excute sq

تحياتي

أخوك / أبو هاجر

#17

وينك يا ابو هاجر

#18

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

وهي :

عند وضع الاستعلام بتاريخ ميلادي مثلاً 2/1/2003 لا يعطي أي نتيجة للبحث .. ولكن عند تحويل هذا التاريخ بواسطة دالة تحوله إلى تاريخ ميلادي أيضاً ينقلب التاريخ إلى 12/6/2564 ويعطي نتائج صحيحة .. هنا أقول ما السر في هذا ؟؟؟

سؤال آخر مهم بالنسبة لي وهو :

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

#19

السلام عليكم

الحقيقة أني واجهت مشكلات كثيرة مع التاريخ وخصوصا أني أستخدم الربط مع جداول أكسل ومع برامج أخرى عن طريق ODBC . واختصارا للوقت فكرت في إجبار المستخدم على تبديل تنسيق التاريخ للنظام (الجهاز) بحسب ما أرغب أن يكون عليه في الأكسس .

لقد عملت عملية مقارنة بسيطة يمكن اختصارها في حالة إذا ما تمكن أحدكم من قراءة تنسيق النظام مباشرة . عموما ما عملته هو في اعتقادي كافي .

Private Sub Form_Open(Cancel As Integer)

  Dim SysDate As Date

  Dim ReqDate As Date

  Dim RDStr As String

  Dim Msg As String

  

  SysDate = Date

  

  RDStr = Format(Date, "dd/mm/yyyy")

  ReqDate = DateSerial(Right(RDStr, 4), Mid(RDStr, 4, 2), Left(RDStr, 2))

  If SysDate <> ReqDate Then

    Msg = "'dd/mm/yyyy' íÌÈ Ãä íßæä ÊäÓíÞ ÊÇÑíÎ ÇáÌåÇÒ Úáì Ôßá " _

          & Chr(13) & Chr(13) & _

          " Control Panel ÊÓÊØíÚ ÊÈÏíáå Úä ØÑíÞ áæÍÉ ÇáÊÍßã"

    MsgBox Msg, , CurrentUser

    DoCmd.Close acDefault, , acSaveNo

  End If

End Sub

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

تحياتي .

#20

أخي الكريم

السلام عليكم

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

جرب استخدام دالة Cdate قبل تمرير المتغير إلى الاستعلام

لو أرفقت المثال بالطبع لكانت الصورة أوضح

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

CurrentDb.Properties("hijricalendar") = true

وهكذا

إذا كان ما تقصده غير ما فهمت فأرجو التوضيح أو إرفاق المثال

تحياتي

أخوك / أبو هاجر

#21
اقتباس
يمكن اختصارها في حالة إذا ما تمكن أحدكم من قراءة تنسيق النظام مباشرة

آمل من يملك هذه المعلومة أن يزودنا بها مشكورا .

وتوضيحا أكثر المطلوب معرفة تنسيق تاريخ الويندوز Date Format عن طريق الأكسس .

ولكم خالص تحياتي .

#22

أخي الكريم أبا هادي

السلام عليكم

رغم أنني لم أفهم كثيراً السبب في رغبتك في معرفة تنسيق تاريخ النظام إلا أنني فهمت ـ على الأقل ـ أنك تريد ذلك

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

تحياتي

أخوك / أبو هاجر

get_system_local.zip

#23

الشكر لكما أيها الكريمين :

السبب في حتمية تغيير التاريخ في إعدادت إقليمية هو إن التاريخ إذا لم يكن ( yyyy/MM/dd) فإن الاستعلامات لن تعمل بشكل صحيح

عموماً سأجرب وأخبركم بالنتيجة .. وأيضاً لكما جزيل الشكر

#24

أخي الكريم أحمد الحربي

السلام عليكم

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

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

آمل شرح طبيعة المشكلة وإرفاق مثال إن أمكن

تحياتي

أخوك / أبو هاجر

#25

شكرا لك أخي "أبو هاجر"

سوف أقوم بتجربة المثال وأوافيك بالنتيجة ولو أني أجزم أنه أكثر من المطلوب .

وقد طلبت ما طلبت لوقوعي في نفس مشكلة الأخ أحمد الحربي .

تحياتي

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

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