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

كيف اسوي تنسيق حقل بناء على قيمة حقل اخر

مغلق
بدأه ابو باسل في 28 أغسطس 2007 · 9 رد · 1,011 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف اجعل تنسيق حقل بناء على قيمة حقل اخر :

مثلا في الملف المرفق . .

اريد عند اختيار نوع العقد ( خليجي ) يكون تنسيق الحقل رقمه #### / ######

وعند اختيار نوع العقد ( محلي ) يكون تنسيق الحقل رقمه ## / ######

طلب اخر :

في التقرير اريد الحقل الفارغ لا يظهر . . هذي سهلة - لكن اللي اريده ان لا يكون للحقل اي اثر من ناحية حجم التقرير يعني اذا كان الحقل Date فارغ يصعد ترتيب Employ ويكون بمكان التاريخ حيث ينكمش التقرير لاعلى . . . وهكذا

ارجوا ان يكون الطلب واضح .

محبكم

ابو باسل

22.rar

#2

اخي الكريم.. ممكن سؤال يتوقف عليه الحل..

هل لديك انواع اخرى من العقود، اي غير تلك المذكورة هنا.. لان ذلك يعني الكثير من الافكار للحل، ولا حصر لها..

باذن الله..

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#3

الف شكر اخوي همام ابو عرقوب :

نعم يوجد لدي حوالي اربع انواع من العقود ( خليجي - محلي - مباشر - الحاقي )

لو اعطيتني حل للاثنين قدرت اكمل الباقي . .

محبكم

ابو باسل

تم تعديل هذه المشاركة بواسطة ابو باسل في 29 أغسطس 2007 في 05:42

#4

بارك الله فيك اخي همام على المشاركه والمساعدة وننتظر ايضا احد حلولك الرائعة

اخي الفاضل ابو باسل

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

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

في الجدول t1 تقوم بإختيار الحقل Aqed وتختار معالج البحث ليتم ربط الجدول Aqed مع الجدول t1 من خلال الحقل Aqed لينشىء لديك مربع تحرير وسرد

تقوم الان بإنشاء النموذج مبني على الجدول t1

تقوم بإختيار مربع التحرير والسرد Aqed وتختار له حدث بعد التحديث وتضع هذا الكود

Private Sub Aqed_AfterUpdate()
If Me.Aqed.Value = "خليجي" Then
Me.AqedNo.InputMask = "#### / ######"
Else
If Me.Aqed.Value = "محلي" Then
Me.AqedNo.InputMask = "## / ######"
End If
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End Sub

وشرح الكود هو :

بعد تحديث مربع التحرير والسرد Aqed بالقيمة " خليجي " فإن قناع الإدخال InputMask لمربع النص AqedNo يكون "#### / ######"

واذا كان مربع التحرير والسرد Aqed قيمته تساوي " محلي " فإن قناع الإدخال InputMask لمربع النص AqedNo يكون "## / ######"

واخير نقوم بحفظ السجل .

نضع ايضا هذا الكود في حدث عند فتح النموذج

Private Sub Form_Open(Cancel As Integer)
If Me.Aqed.Value = "خليجي" Then
Me.AqedNo.InputMask = "#### / ######"
Else
If Me.Aqed.Value = "محلي" Then
Me.AqedNo.InputMask = "## / ######"
End If
End If
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End Sub

اخيرا نقوم بوضع تحديث البيانات في النموذج من خلال الكود

Private Sub Form_Current()
Me.Refresh
End Sub

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

وهذا مثالك بعد التعديل على النموذج فقط

za22.rar

#5

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

اخي ابو باسل اسف جدا على التاخير.. لان الدوام ياخذ الكثر من الوقت،،

هذا مثال الاخت زهرة بعد التعديل عليه لانشاء حل اخر، ارى انه اكثر مرونه من حيث، عدد العقود التي يمكن ان يعالجها، وامكانية تغيير تلك الموجودة اصلا.. كذلك تم اضافة نموذج بسيك لاضافة وتعديل انواع العقود وتنسيق الحقل الخاص بكل نوع.. وهنا مرونة اكثر في التعامل.. فمثلا في مثال الاخت زهرة هناك احتمالان فقط لنوع العقود، اما خليجي او محلي،، ماذا لو زارد عدد الانواع، وحسب طلبك اذا هي 4 عل الاقل.. لذا لا بد من استغلال الجدول Aqed وكذلك والاهم، استغلال خصائص القائمة المنسدلة ..

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

Me.AqedNo.InputMask = "" & Aqed.Column(1) & ""

خاصية Column هي خاصية سحرية جدا..

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

تركت كود الاخت زهرة للتوضيح الفرق فقط..

تفضل..

za22.rar

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 29 أغسطس 2007 في 13:43

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#6

بارك الله فيك اخي همام

حل أكثر من رائع

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

ولكني ارى ان الحل المقدم من قبلك اكثر مرونه حيث انك استخدمت حقل اضافي وهو Mask في جدول Aqed

#7

الف الف شكر اخي الكريم همام ابو عرقوب . .

الف الف شكر اختي المبدعة زهرة . .

نعم هذا هذا ما اريده بالضبط . . بالنسبة للنموذج

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

شكرا . .

محبكم

ابو باسل

#8

معذرة اخوتي الكرام :

ليش الحقل في الجدول ما يتعبأ بنفس التنسيق - لانه يتعبأ ارقام فقط من غير الشرطات . انضا لا تظهر الشرطات في التقرير

ابو باسل

#9

اخي الفاضل ابو باسل

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

Private Sub Aqed_Change()
Me.AqedNo.SetFocus
AqedNo = AqedNo.Text
End Sub

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

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

او استخدم الحل المقدم من قبل الأستاذ همام فكلها ستؤدي لنفس الغرض

za22_up.rar

#10

الف شكر اختي زهرة . . هذا ما اريد بالضبط

طيب بالنسبة للتقرير . هل استطيع وضع كود اذا كانت قيمة الحقل ( خالي ) يكون ارتفاعه صفر

ابو باسل

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

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

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

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

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

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