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

[ تمت الإجابة ]كيفة تجميع ثلاثه اعمدة في عمود واحد لتكوين التاريخ

بدأه ثائر العراقي في 7 يوليو 2012 · 34 رد · 2,518 مشاهدة · في قواعد بيانات Visual FoxPro
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

#2
ثائر العراقي كتب:

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

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

جرب المرفق

تحياتى

dd.rar

#3

شكرا لك بس ياريت مع الشرح لان معلوماتي بالفوكس برو قليله الله يوفقك

#4
ثائر العراقي كتب:

شكرا لك بس ياريت مع الشرح لان معلوماتي بالفوكس برو قليله الله يوفقك

لتنسيق التاريخ يوم شهر سنه

Set date ymd

لاظهار رقم السنه 4 ارقام

Set century on

ثم نكتب التالى بالخانة الخاصة بالسنة للتنفيذ بعد ترك الخانة

لتشكيل التاريخ بالخانة

Date1

نكتب الامر التالى

بمعنى ان قيمتة تساوى مجموع 4 ارقام السنه+/+مجموع رقمين الشهر+/+مجموع رقمين اليوم وتحويل القيمة النصية المنتجه الى شكل تاريخ

ThisForm.DATE1.Value=ctod((STR(This.Value))+"/"+STR(ThisForm.MONTH1.Value)+"/"+STR(ThisForm.DAY1.Value))

لوضع تاريخ اليوم بالخانة

Today1

نعطى الامر التالى

ThisForm.TODAY1.Value=DATE()

لوضع الفرق بين التاريخين بالخانة

Cal1

نعطى الامر التالى الذى يطرح محتويات تاريخ اليوم من محتويات التاريخ المؤلف ويعطى النتيجة باليوم

ThisForm.CAL1.Value=ThisForm.DATE1.Value-ThisForm.TODAY1.Value

لاظهار النتائج فورا على الشاشه نعطى الامر

thisform.Refresh()

اتمنى ان اكون اوضحت

تحياتى وتمنياتى لك بالتوفيق

date.rar

post-49511-047341200 1341730528_thumb.jp

المرفقات
thaer.jpg
#5

شكرا لك اخي ووفقك الله

#6
ثائر العراقي كتب:

شكرا لك اخي ووفقك الله

الابن العزيز ثائر العراق

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

تحياتى وشكرا لك

#7

الاخوة الاعزاء اعتقد انة ليس من الصحيح استخدام هذة المعادلة ThisForm.CAL1.Value=ThisForm.DATE1.Value-ThisForm.TODAY1.Value لايجاد الفرق بين تارخين للاسباب التالية

* اولا اذا كان التاريخ اقل من تاريخ اليوم سيكون الناتج بالسالب -

* ثانيا ان الناتج لن يكون فب صورة يوم - شهر - سنة

Persistent Fox

#8
xcode كتب:

الاخوة الاعزاء اعتقد انة ليس من الصحيح استخدام هذة المعادلة ThisForm.CAL1.Value=ThisForm.DATE1.Value-ThisForm.TODAY1.Value لايجاد الفرق بين تارخين للاسباب التالية

* اولا اذا كان التاريخ اقل من تاريخ اليوم سيكون الناتج بالسالب -

* ثانيا ان الناتج لن يكون فب صورة يوم - شهر - سنة

الابن العزيز

تحياتى

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

تحياتى

#9

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

Persistent Fox

#10

السلام عليكم

تحياتي لكم وللاستاذ المهندس علاء

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

thaer.zip

#11
xcode كتب:

الاخوة الاعزاء اعتقد انة ليس من الصحيح استخدام هذة المعادلة ThisForm.CAL1.Value=ThisForm.DATE1.Value-ThisForm.TODAY1.Value لايجاد الفرق بين تارخين للاسباب التالية

* اولا اذا كان التاريخ اقل من تاريخ اليوم سيكون الناتج بالسالب -

* ثانيا ان الناتج لن يكون فب صورة يوم - شهر - سنة

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

#12
ثائر العراقي كتب:

شكرا لك اخي ووفقك الله

الابن العزيز ثائر العراق

تحياتى

حتى تستطيع استخدام النموذج باى تاريخ سابق او حالى او تالى قمت بتعديل النتائج كالتالى:

تم تنسيق عدد الايام بحيث تكون مطلق رقم باستخدام الداله() ABS

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

اذا كان عدد الايام اكبر من الصفر يكون العنوان " باقى من الزمن"

اذا كان عدد الايام يساوى صفر يكون العنوان " حل الموعد اليوم"

اذا كان عدد الايام اصغر من الصفريكون العنوان" مر من الزمن "

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

واشكرك على نشاطك بالمنتدى الجميل

وليتك تستمر فى السؤال والطلبات بما يثرى ويحرك الخير

م علاء قاسم

dd.rar

تم تعديل هذه المشاركة بواسطة alaaqasem في 10 يوليو 2012 في 08:44

#13

الاخوة الاعزاء برجاع تجربة الفورم المرفقة و التي يمكن عن طريقها اظهار الفرق بين تارخين في صورة يوم - شهر -سنة

date.rar

Persistent Fox

#14

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

#15

نعم يا اخي الثائر يمكن العمل علي الجدول مباشرة برجاء الاطلاع علي المثال المرفق بعد التعديل

date.rar

Persistent Fox

#16

انا سؤالي عن الجدول مباشرة بدون فورم

#17

برجاء مراجعة البرنامج المرفق علي الرغم من انة كان يمكنك اخذ ال CODE من الفورم و تنفيذة مباشرة

date.rar

Persistent Fox

#18
lion iraq كتب:

السلام عليكم

تحياتي لكم وللاستاذ المهندس علاء

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

السلام عليكم

اخي ثائر لم ترد على المثال ولم اعرف رائيك به ولا باقي الاعضاء من حيث وصول الفكرة ام لا؟

ثائر العراقي كتب:

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

وارجو ان توضح عن اي طريقة تقصد؟

تحياتي للجميع

#19
xcode كتب:

برجاء مراجعة البرنامج المرفق علي الرغم من انة كان يمكنك اخذ ال CODE من الفورم و تنفيذة مباشرة

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

ولكن هذة طريقة ثانية بالنسبة لطريقتك

تحياتي للجميع

thaer.zip

#20
lion iraq كتب:

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

ولكن هذة طريقة ثانية بالنسبة لطريقتك

تحياتي للجميع

اخي العزيز اسد العراق اذا استخدمنا هذة الطريقة لن يكون الناتج صحيح

مثال

تاريخ 1 = 30-06-2012

تاريخ 2 = 07-07-2012

في طريقتك يكون الناتج 1 شهر و 23 يوم مع انة فعليا 7 ايام فقط لذلك يجب ان نأخذ التاريخ وحدة واحدة عند اجراء عملية حساب الفرق بين تاريخين

تم تعديل هذه المشاركة بواسطة xcode في 12 يوليو 2012 في 00:38

Persistent Fox

#21
xcode كتب:

اخي العزيز اسد العراق اذا استخدمنا هذة الطريقة لن يكون الناتج صحيح

مثال

تاريخ 1 = 30-06-2012

تاريخ 2 = 07-07-2012

في طريقتك يكون الناتج 1 شهر و 23 يوم مع انة فعليا 7 ايام فقط لذلك يجب ان نأخذ التاريخ وحدة واحدة عند اجراء عملية حساب الفرق بين تاريخين

شكرا لك اخي العزيز على الملاحظة

حقيقة لم انتبه للمثال جيدا (جل من لا يسهو)

لاحظ المرفقات بالطريقة الثانية ويوجد العديد من الطرق لتنفيذ الفكرة تحياتي وانتظر منك اي ملاحظة

 CLOSE ALL 
SET date BRITISH
SET CENTURY on
SET TALK OFF 
USE table1
GO top
DO WHILE ! EOF()
year1 =   year(mdate1)       			
year2 =   year(mdate2)       			
cmyear = year2 - year1  	
month1 = month(mdate1) 
month12 = month(mdate2)                	
cmmonth = month12 - month1   
If cmmonth   < 0
 cmyear  = cmyear  -1
 cmmonth  = 12 + cmmonth 
Endif
day1 = day(mdate1)                  	
day2 = day(mdate2)                  	
cmday = day2 - day1
If cmday   < 0
 cmmonth   = cmmonth   - 1
 cmday  = cmday  + 30
Endif
replace myear WITH cmyear,;
 mmonth WITH cmmonth ,;
  mday WITH cmday
  SKIP 
 ENDDO 
 BROWSE

**تنبية

هنالك شرط او نقص في الكود اعلاه . احب ان اجعله اختبار لكم اخوتي

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

انتظر ردودكم واتمنى ان تحاولوا ولايتجاوزه احد رجاءا

ولاتنسوا كلنا متعلمين

تحياتي للجميع

date.zip

تم تعديل هذه المشاركة بواسطة lion iraq في 12 يوليو 2012 في 11:11 — السبب: تنبية بوجود اختبار

#22

اخي العزيز مازال الفرق غير صحيح

مثال

30/05/2012 تاريخ 1

01/05/2013 تاريخ 2

الفرق

1 سنة

-1 شهر

1 يوم

الفرق الصحيح

0 سنة

11 شهر

1 يوم

لقد و ضعت ال code الخاص بك داخل form مع ال code الخاص بي من اجل سهولة التحقق من النتائج برجاء المراجعة سيدي العزيز

date.rar

تم تعديل هذه المشاركة بواسطة xcode في 12 يوليو 2012 في 14:36

Persistent Fox

#23

بالنسبة الي سؤال حضرتك

هذة هي الاجابة

If cmmonth <= 0

If cmday <= 0

ملحوظ:

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

ولكن توجد مشكلة اذا كان الشهر 31 يوم او كان الشهر هوا فبراير مازلت ابحث عن حل

تم تعديل هذه المشاركة بواسطة xcode في 12 يوليو 2012 في 15:40

Persistent Fox

#24

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

SET talk OFF

SET SAFETY OFF

SET DATE BRITISH

SET CENTURY ON

CLOSE ALL

USE thaer

GO top

REPLACE date WITH ctod(STR(day)+STR(month)+STR(year)) all

replace cal WITH date-today ALL

replace cday WITH ABS(day(date)- day(today))all

replace cmonth WITH ABS(month(date)- month(today))all

replace cyear WITH ABS(year(date)- year(today))all

GO top

BROWSE

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

#25
xcode كتب:

اخي العزيز مازال الفرق غير صحيح

مثال

30/05/2012 تاريخ 1

01/05/2013 تاريخ 2

الفرق

1 سنة

-1 شهر

1 يوم

الفرق الصحيح

0 سنة

11 شهر

1 يوم

لقد و ضعت ال code الخاص بك داخل form مع ال code الخاص بي من اجل سهولة التحقق من النتائج برجاء المراجعة سيدي العزيز

اخي العزيز

حسب البرنامج الذي ارسلته انا يكون سنة و29يوم اما المظبوط هو 11شهر و3يوم

تحياتي لك وللنقاش اما التعديل الشرطي فلا يوثر اذا كان = ولكن اذا اصغر يوثر

تم تعديل هذه المشاركة بواسطة lion iraq في 13 يوليو 2012 في 11:18

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

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

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

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

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