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

Form عداد زمني

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

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

أخواني الكرام أمدنا الله بنا وبكم بالصحة والعافية والستر وصالح الأعمال

فلدية سؤال عن FORM ينفذ عملية ارتباط فقط ولكنه يحمل الشروط معينة مستنداً بداخله 3 مربعات نصوص Text وهيا

Text1 حقل تاريخ بقاعدة مستقلة ذات حقل واحد فقط وأسمه Date ) )

Text2 إظهار التاريخ اليوم

Text3 إظهار أول تاريخ سجل من حقل Date ) )

Text4 إظهار أخر تاريخ سجل من حقل Date ) )

فعند فتح FORM يجهز سجل جديد من حقل ( Date ) ومن ثم إضافة به تاريخ اليوم

أما إذا أصبح الفرق بين Text3 و Text4 ثلاثة أيام يقوم بإظهار نموذج أخر أو رسالة

الغرض من النموذج أو FORM عداد زمني لفترة محددة

وأتمنى من الأعضاء الكرام مساعدتي ....

وتقبلوا تحياتي .......

تم تعديل هذه المشاركة بواسطة ossaama في 7 أكتوبر 2006 في 23:25

#2

coffee.gif

انظر إلى هذا الرابط

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#3

يا أخ HnHn ليس هذا هو الجواب بالتحديد أرجو أن تقرءا السؤال جيداً

وشكراً

تم تعديل هذه المشاركة بواسطة ossaama في 8 أكتوبر 2006 في 03:33

#4

قم بعمل الفكرة التي طرحتها ... وستلاقي التعديل المطلوب .. فقط ابدء

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#5

اولا خاي بالك باسم الحقل اللي انت عامله Date لابد ان تغير اسمه علشان من المفروض ان تختار اسماء للحقول بحيث لا تتعارض مع اي اسم يستخدمه الفجوال بيزك

ثانيا ضع المثال ونحن سوف نعدل عليه ان شاء الله

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#6

إخواني الكرام الأخ هاني و الأخ محمد علي سليم

شكراً على ملاحظتكم ..

هذا مثال للسؤال

post-89647-1160401104_thumb.gif

تم تعديل هذه المشاركة بواسطة ossaama في 9 أكتوبر 2006 في 16:39

#7

أخواني الكرام .... لم أجد جواب لحد ألان

#8

اولا انا اسمي محمد على سالم مش سليم

ثانيا انتظر مني مثال او كود يحل لك اللي انت عاوزه

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#9

أولاً أسف على خطاء في الاسم

ثانياً لو أمكن أن نعرف الكود الخاص

First Date

Last Date

وجزأك الله خير

#10

أين أنت يا أستاذ محمد علي سالم

وأين الاكواد التي اوعتنا بها

أتمنى من الله عز وجل أن تكون بخير

تم تعديل هذه المشاركة بواسطة ossaama في 15 أكتوبر 2006 في 18:19

#11

أخ ossaama الفكرة كالتالي

[الشق الأول من السؤال ] فعند فتح FORM يجهز سجل جديد من حقل ( Date ) ومن ثم إضافة به تاريخ اليوم

يتم هذا في حدث التحميل للفورم كما يلي

Private Sub Form_Load()

'HnHn : التاريخ عربي
Calendar = 2
'Calendar = 1  ' انجليزي
Text1.Text = Date
End Sub

[الشق الثاني من السؤال ] أما إذا أصبح الفرق بين Text2 و Text3 ثلاثة أيام يقوم بإظهار نموذج أخر أو رسالة

ايضا يتم هذا في حدث التحميل للفورم حيث

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

الطريقة بـــADO

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

Dim con As New ADODB.Connection
Dim rs  As New ADODB.Recordset

ثم ضع الشفرة كاملة بشكل التالي

Private Sub Form_Load()
'HnHn : Open Database
con.Provider = "Microsoft.Jet.OLEDB.4.0"
con.CursorLocation = adUseClient
con.Open "Data Source = " & App.Path & "\DBHnHn.mdb;"
'----------------------------
'HnHn : Open Tabel
rs.Open "select * from Tabel", con
'HnHn : الانتقال لآخر سجل
rs.Movelast

'Hnhn : اخذ تاريخ اخر سجل ووضعه في التيكس المراد المقارنه معه
Text2.Text = rs![NeamFilde]

'----------------------------
'HnHn : التاريخ عربي
Calendar = 2
'Calendar = 1  ' انجليزي
Text1.Text = Date

'----------------------------

'HnHn : عملية المقارنة وتحقق الشرط
Text3.Text = DateDiff("d", Text2.Text, Text3.Text) & " يوم"

If Text3.Text = "3" Then

'HnHn : تنفيذ الاجراء المطلوب بعد تحقق الشرط

End If

End Sub

حيث DateDiff هي المسؤولة عن عملية المقارنه وحرف D يظهر الناتج بالايام

هذا هو الشرح كما طلبت :lol: ... مطلوب منك التنفيذ الآن بالتوفيق

تم تعديل هذه المشاركة بواسطة HnHn في 15 أكتوبر 2006 في 21:27

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#12

أخي العزيزHnHn بارك الله فيك

والله لك معزة خاصة في قلبي

فقد أرسالة لك السؤال بموضوع أخر وبعد دقيقتين فقط

تفاجئت بوجود الجواب الجديد من هذا الموضوع وكليهم نفس

السؤال

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

.....

جزأك الله ألف خير وأكثر الله من أمثالك

تم تعديل هذه المشاركة بواسطة ossaama في 15 أكتوبر 2006 في 22:02

#13

صح يا ستاذ HnHn

معلش يا استاذ ossaama على التأخير فكان عندي ظروف

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#14

هل من الممكن يا أستاذ / محمد علي سالم

أن تشرح لي الاكواد التي وضعها الأستاذ HnHn

ماداما أنت قلت صح يا أستاذ HnHn

تم تعديل هذه المشاركة بواسطة ossaama في 16 أكتوبر 2006 في 09:19

#15

:rolleyes:

:lol:

ماشي ياعم

انا بقى هاشرحلك الحكاية بالتفصيل الممل (h)

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

ولكن انا افضل طريقة الأدو ADO لأنها بالفعل سهلة

المهم الكود ده هو اللي خاص بالإتصال

Public con As New ADODB.Connection
Public rs  As New ADODB.Recordset
------------------------------------------------------------
con.Provider = "Microsoft.Jet.OLEDB.4.0"
con.CursorLocation = adUseClient
con.Open "Data Source = " & App.Path & "\DBHnHn.mdb;"

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

وبكدة يبقى البرنامج مستعد للإتصال بالقاعدة بمجرد انك تقول له con

يعني اول لما تكتب كلمة con على طول هايتصل بقاعدة البيانات

المهم

دلوقتي انت عايز

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

التيكست بوكس 2 عاوز يبقى مكتوب فيه تاريخ اليوم

يبقى هاتكتب في حدث تحميل الفورم الكود التالي الخاص بذالك

text2.text = Date

التيكست بوكس رقم 3 عاوز يتكتب فيه اول تاريخ مكتوب في الحقل Date اللي في قاعدة البيانات

وبالتالي نريد ان نتصل بقاعدة البيانات لمعرفة ذلك

في حدث تحميل الفورمة بعد اخر كود كتبناه هانكتب كلمة con

زي ما اتفقنا

con

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

دلوقتي بقى عايزين نضع اول تاريخ اللي مكتوب في حقل Date

يبقى احنا عايزين نكلم الحقل ده بالأخص

والحقل ده موجود بداخل جدول

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

اولا علشان نقول كدة لازم نفتح القناه الأول

انا قلت ان القاعدة بالفعل مفتوحة ومستعدة لإستقبال وإرسال البيانات

لكن لا يوجد قناه حتى تمشي فيها البيانات

واحنا بالفعل عرفنا هذه القناة مسبقا في الموديل

اللي هي

Public rs  As New ADODB.Recordset

يعني القناة موجودة بالفعل بس مش مفتوحة

بالطريقة اللي الإستاذ هاني قالها سليمة 100% وده طبعا على حسب الطريقة اللي بتستخدمها في الإتصال بقاعدة البيانات

يبقى دلوقتي هانقوله

rs.Open "select * from TabelName"

بالجملة دي هو واقف على اول سجل من جميع حقول هذا الجدول

وانت بتقول ان الجدول لا يوجد به غير الحقل Date

يبقى هو على اول سجل من الحقل Date

ولذيادة التاكد مش هاتخصر حاجة لو قلت له اتجه الى السجل الأول

تكتب هكذا

rs.movefirst

كدة بالفعل اتجه الى اول سجل من الحقل Date

وانت مستعد ان تأخذ منه اللي انت عاوزه وتحطه في التيكست 3 هكذا

Text3.Text = rs![NeamFilde]

ومن الممكن بدل ما تكتب اسم الحق ممكن تكتب رقمه بس هكذا

Text3.Text = rs(0)

حيث انك تقول ان الحقل Date هو الحقل الوحيد في الجدول وتعداد الحقول يبدأ من الــ0

وبكدة خلصنا من التيكست رقم 3

نيجي على التيكست رقم 4

خلي بالك ان القناة بتاعة الإتصال لسة مفتوحة وواقفة على اول سجل

دلوقتي عايزين نكتب في التيكست 4 اخر تاريخ مكتوب في الحقل

يعني هانروح لأخر سجل بالحقل

هانكتب كدة

rs.movelast

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

Text4.text =rs![FiledName]

او رقم الحقل زي ما اتفقنا

دلوقتي ممكن نقفل القناه اذا كناه هانفتح قناة جديدة لنستعملها في حاجة تانية

المهم

هاتكت كدة لو اردنا ان نغلقها

rs.close

دلوقتي جاء دور حساب الفرق بين

ممكن نعرف متغير من النوع Intger

علشان هو اللي هايشيل العدد

Dim x as Intger

هانحسب بقى الفرق زي ما الإستاذ هاني ما موضح

x = DateDiff("d", Text3.Text, Text4.Text)
if x = 3 then
msgbox "الفرق ثلاث ايام"
end if

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

يبقى الكود كامل هايبقى شكله كدة

في الموديل

Public con As New ADODB.Connection
Public rs  As New ADODB.Recordset
------------------------------------------------------------
con.Provider = "Microsoft.Jet.OLEDB.4.0"
con.CursorLocation = adUseClient
con.Open "Data Source = " & App.Path & "\DBHnHn.mdb;"

في حدث تحميل الفورم

Private Sub Form_Load()
Text2.Text = Date

con

rs.Open "select * from TabelName"
rs.movefirst

Text3.Text = rs![NeamFilde]

rs.movelast
Text4.Text = rs![NeamFilde]

rs.close

Dim x as Intger

x = DateDiff("d", Text3.Text, Text4.Text)
if x = 3 then
msgbox "الفرق ثلاث ايام"
end if

End Sub

وسلامي لك

تم تعديل هذه المشاركة بواسطة MohamedAliSalim في 17 أكتوبر 2006 في 00:49

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

#16

أحسنت أخي محمد علي سالم

على هذا الشرح الجميل والمفيد

فعلاً أنني قد استفت من شرح

الحقيقة ماذا يكون على السائل أن يكافئ الصحب الجواب

هل نقاط أو شكر أو دعوات ما أمامي إلا أن القول.

جزأك الله ألف خير و زادك الله علماً ومنفعة ...........

تم تعديل هذه المشاركة بواسطة ossaama في 17 أكتوبر 2006 في 15:10

#17

الله يعطيك العافيه أخ MohamedAliSalim لم قمت بتقديمه ... وعسى دوم هذا التعاون :)

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#18

العفو يا اخي هاني انت و الأخ اسامة

لا شكر على واجب

Mohamed Ali Salim

0.1..0...4....7.....6......2.......7........4.........8

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

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