اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

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

أرجو من أصحاب الخبرة و العلم الإدلاء بدلوهم فى هذا الموضوع

أحيانا نضع حقلا فى جدول

و هذا الحقل لا يكون ممتلئا

بل تكون فيه بعض البيانات

و البعض الآخر فارغ

مثلا لو أن هناك حقل ( نعم - لا ) بعنوان " متزوج "

و حقل بجواره فيه " عدد الأبناء "

فى حالة الاسم المتزوج و له أبناء

يمتلئ حقل الأولاد بعددهم

لكن فى حالة غير المتزوج أو المتزوج و ليس له أبناء

يظل حقل " عدد الأبناء فارغا

هل هذا الفراغ يضر

1 - ما نوع و حجم ضرره على قاعدة البيانات

2 - كيف يتم علاج هذه المشكلة ؟

هل يفيد

وضع صفر

فى حقل عدد الأبناء حال كونه فارغا؟

أرجو الإفادة

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

قام بنشر
1 - ما نوع و حجم ضرره على قاعدة البيانات

2 - كيف يتم علاج هذه المشكلة ؟

ارى ان ليس هناك ضرر وليس هناك مشكلة بل هذا هو الاصل

السؤال هل للخلية الفارغة حجم ؟

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

قام بنشر (معدل)

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

منكما نتعلم

وفقكم الله

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

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

تم تعديل بواسطه أبو لميس
قام بنشر

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

...............

قام بنشر

ممتاز جدا

الآن وضحت الصورة

إذن

فى حال وجود حقول تسبب فراغا

كحقل عدد الأبناء مثلا لغير المتزوج

هل يفضل فصلها بجدول آخر؟

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

أم نتركها كما هى فارغة بالجدول الرئيسى

فى الحقيقة هذا هو جوهر سؤالى

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

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

قام بنشر

شخصياً ...

أقوم بإنشاء جدول مستقل (مرتبط) لمثل هذه البيانات

الزواج

الإشتراك بالتأمين

.... ومثل هذه المعلومات

ولكل فيما يرى مذهب ...

............

قام بنشر

لكن الربط بين الجدول الرئيس و الفرعى

كيف تكون العلاقة

راس برأس؟

و كيف يتم إدخال البيانات

بحيث ندخل البيانات فى كلا الجدولين

اليست هذه مشاكل

غير موجودة فى حالة الجدول الواحد؟

قام بنشر

كلامك سليم

ولكن العام عام و الخاص بقدره

اذا كانت المسألة تتعلق بحقل واحد فلا داعي للفصل ، متزوج (نعم/لا) - عدد الاولاد (رقم)

أما اذا كانت المسألة أكثر من ذلك ، الا ترى أن الفصل أولى ؟

اذا كانت الحقول للتأمين مثلاً ، وعدد الحقول أكثر مما سلف....

الا يستحق الامر الخوض فيما أسلفتَ في مشاركتك ...

............

قام بنشر (معدل)

نعم تمام

حسب عدد الحقول

يتم الفصل أو لا يتم

و الربط يكون عن طريق أى حقل فى الرئيس

هل هو حقل المفتاح الأساسى للجدول الرئيس؟

أم عن طريق مفتاح غريب فى الحقل الرئيس؟

هذه واحدة

الثانية

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

انظر مثلا بيانات الندب فى هذا الجدول بالصورة

6 حقول 80 بالمائة منها خال من البيانات

post-24586-0-26560900-1335992992_thumb.p

تم تعديل بواسطه أبو لميس
قام بنشر

أخي العزيز

الندب ليس حالة عامة معتادة أصيلة في العمل الوظيفي بل هي خاصة للبعض تؤخذ بقدرها

فأرى - والرأي لك - ، أن تكون بجدول مستقل مرتبط بالجدول الرئيسي (بحقل المفتاح الأساسي للجدول الرئيسي)

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

هذا إن كنت قد أحسنت الفهم عنك ....

والله أعلم

............

قام بنشر

قد وُفقتَ فى فهم المراد

فعلا تم فصل حقول الندب بجدول منفصل

مربوط بالجدول الرئيس بحقل المفتاح الأساسى

و كلما ظننت أن هذا نهاية المطاف

أطمعتنا فى المزيد من الخبرات

طريقتى البدائية لإدخال بيانات من الجدول الفرعى ( جدول الندب)

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

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

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

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

فى الحقل الأساسى للجدول الفرعى

لكن طبعا

لا داعى لظهور حقول جدول

لا يطلب الكتابة فيه

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

و قد أتحفتنا بدرر غالية فى ردك إلى الآن

لكن العقد سيكمل - بإذن الله - بالمثال العملى

وفقك الله و جزاك خيرا

قام بنشر

أخي العزيز

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

الأصل أنني أنشأت جدولين وما بينهما من علاقة ، (أنظر ودقق)

ثم نموذجين ،

الأول لادخال معلومات الموظف

الثاني لادخال معلومات الندب أو الإنتداب

وأثناء عملي ثارت معي قاعدة "ماذا لو" التحليلية ، فسرت بمسارها لحدّ معين ، حتي لا أبتعدت كثيراً عن المطلوب.

وهذه قاعدة تجريبية ، لا أعرف ما يوازيها عند الأكاديميين

وبفضل من الله وجدنا لكل سؤال جوابه وطبقناه ، وجربناه ، وخرجنا من التجربة بمشكلة أو خطأ فعالجناه ، حتى وصلنا للمرفق.

إحتملني قليلاً ... فأريد أن أوصل لك ما لدي كما هو ...

.................

  • Like 1
قام بنشر

بعد أن بدأنا بالتنفيذ واجهتني مشكلة كيف نفرق بين الموظف الذي سجلنا له قيد ندب و الذي لم يسجل له قيد ندب ؟

كيف نظهر قيودهم ؟

فقمت بكتابة الروتين التالي الذي يحل المشكلة :


Sub Chick_ASS()

On Error GoTo Err_strAssignment


	   Dim varX As Variant

varX = DCount("[strID]", "tblAssignments", "[strID] = " _

	& Me![Text1])

Select Case varX

	Case 1

	Me!strAssignment = -1

	Dim stDocName As String

	Dim stLinkCriteria As String

	stDocName = "frmAssignment"


	stLinkCriteria = "[strID]=" & Me![Text1]

	DoCmd.OpenForm stDocName, , , stLinkCriteria



	Case 0

	DoCmd.OpenForm "frmAssignment", acNormal

	DoCmd.GoToRecord , , acNewRec

	Forms!frmAssignment!strID.Value = Me![Text1]


	 End Select


Exit_Chick_ASS:

	Exit Sub


Err_strAssignment:

	MsgBox Err.Description

	Resume Exit_Chick_ASS

End Sub

حيث نقوم بإحصاء عدد السجلات في الجدول tblAssignments بمعيار تطابق الرقم الوظيفي في النموذج مع الرقم في الجدول ، فإذا كانت = 1 (أي أن الموظف له سجل إنتداب) نقوم بإظهار السجل ضمن النموذج المنبثق frmAssignment بإستخدام المعيار أعلاه ، وإذا كانت النتيجة صفر (أي أن الموظف ليس له سجل إنتداب) قمنا بإظهار نفس النموذج فارغاً ثم أسندنا قيمة الحقل التي تمثل الرقم الوظيفي الى الحقل strID في النموذج المنبثق ، ليبدأ التسجيل لمعلومات الندب.

...............

قام بنشر

بدأنا بتسجيل موظف جديد وعند محاولة إستخدام حقل الندب (نعم/لا) الذي يستدعى من خلاله الروتين السابق ، إعترض المعالج بأن السجل المنوي الربط معه غير موجود ، فقمنا بأستخدام الأمر :


RunCommand acCmdSaveRecord

في حدث بعد التحديث للحقل "إسم الموظف" وقبل الوصول لحقل الندب

................

قام بنشر

لم أستخدم الترقيم التلقائي و إنما لجأت للترقيم التلقائي الممنهج باستخدام DMax ، خلف زر الأمر لإضافة موظف جديد والتحكم برقمه الوظيفي ، آخر رقم مستخدم في الجدول tblEmp مضافاً له (1)


Private Sub Command5_Click()

DoCmd.GoToRecord , , acNewRec

If Me.NewRecord Then

Me.ID.Value = Nz(DMax("[id]", "tblEmp") + 1, 1)

Me.Text3.SetFocus

End If

End Sub

...............

قام بنشر

في الجدول tblAssignments

جهة الندب جعلته حقلاً فطلوباً

نوع الندب جعلته حقلاً مطلوباً

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

ولكن كيف أراقب التطابق الفعلي بين قيود الجدولين ؟

بمعنى ، كيف نتأكد أن كل موظف مؤشر بجانب إسمه ندب (نعم) في جدول الموظفين tblEmp له فعلاً سجل ندب في جدول الندب tblAssignments ، وبالمقابل كيف نتأكد أن كل موظف غير منتدب (لا) لا يوجد له سجل في جدول الندب .

ماذا لو عبث أحدهم بجدول الموظفين وأصبحت معلومات حقل الندب غير حقيقية ولا تتطابق مع واقع الجدول tblAssignments ؟

ماذا لو أشرت بحقل الندب (نعم) ، وظهر نموذج تسجيل معلومات الندب ، ولم أستكمل المعلومات وتم حذف السجل؟

...............

قام بنشر

وجاء الحلّ بفضل من الله ، في هذا الروتين في حدث الحالي لنموذج إدخال معلومات الموظفين Form1:


Private Sub Form_Current()

On Error GoTo Err_Tracker

If Not Me.NewRecord Then

Dim varXX As Variant

varXX = DCount("[strID]", "tblAssignments", "[strID] = " _

    & Me![Text1])

If varXX = 0 Then

Me.strAssignment = 0

ElseIf varXX = 1 Then

Me.strAssignment = -1

End If

Else

End If

Exit_Tracker_ASS:

    Exit Sub


Err_Tracker:

    MsgBox Err.Description

    Resume Exit_Tracker_ASS

End Sub

حين نقوم مرة أخرى بإحصاء عدد السجلات في الجدول tblAssignments بمعيار تطابق الرقم الوظيفي في النموذج مع الرقم في الجدول ، فإذا كانت = 1 (أي أن الموظف له سجل إنتداب) نقوم بفرض القيمة -1 (نعم) على قيمة حقل الندب في جدول الموظفين بإستخدام المعيار أعلاه ، وإذا كانت النتيجة صفر (أي أن الموظف ليس له سجل إنتداب) قمنا بفرض القيمة 0 (لا) على قيمة حقل الندب في جدول الموظفين .

وهكذا تتطابق مدلولات معلومات الجدولين معاً بشكل دقيق.

...................

قام بنشر

أما أخر ما واجهني من " ماذا لو " حدث خطأ ما أو عبث ما وغيرت خصائص حقلي جهة الندب ونوعه ، وأصبحت غير مطلوبة ، وبدأت تتراكم لدينا سجلات لا معنى لها وفيها نقص مُخِل ؟

وجاء الحل بجملة sql في حدث عند الاغلاق لنموذج تسجيل معلومات الندب ، ليتم حذف أي سجل يكون فيه حقل جهة الندب أو نوع الندب فارغاً ، وهو كما يلي:


Private Sub Form_Close()

DoCmd.SetWarnings False

DoCmd.RunSQL "DELETE tblAssignments.strTo, tblAssignments.strType " & vbCrLf & _

"FROM tblAssignments " & vbCrLf & _

"WHERE (((tblAssignments.strTo) Is Null)) OR (((tblAssignments.strType) Is Null));"

DoCmd.SetWarnings True

End Sub

وهنا يكتمل العقد لهذا المدى ... وكفى ..

...........

قام بنشر

جلَّ من لا يسهو

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


= VBA.Environ("USERDOMAIN")

................

قام بنشر

أصي - من أراد - و أُوضح

" وكفى " التي ورد في المشاركة 21 هي " كفى ما قيل في المقال " وليست كفى بمعنى آخر مهما كان ، فقد بِتُ أخشى سوء الفهم ، وإختراق و إختلاق سوء النوايا.

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


On Error GoTo Err_Tracker

.........

Exit_Tracker_ASS:

    Exit Sub


Err_Tracker:

    MsgBox Err.Description

    Resume Exit_Tracker_ASS

..............

قام بنشر

السلام عليكم

ما هذا يا رجل

رد ولا فى الأحلام

هذه الردود مرجع مهم ينبغى دراسته

و فوق ما أردت بكثير

لقد تعاملت مع طلبنا بإخلاص كأنه مشروعك

و إنى على يقين أن كثيرين يحتاجون لمثل هذا الموضوع

فمن منا لا يحتاج لفصل بعض البيانات و الحقول من جدول بجدول منفصل

و هذه الاحتياطات الذكية

منهل اتعلم منه و من ورائى جمهور كثير

و مع اعتقادى أن الأخ بالغ فى مدحك

إلا أننى بدأت ألتمس له العذر

عطاء بسخاء

و كنت أتساءل

لماذا تأخر فى الرد

بينما أنت تجهز هذا الموضوع المتكامل

ليس هذا مجرد رد

بل هو علم

أدعوك لفصله فى موضوع مستقل مثبت

كى لا يضيع بين الركام

أخيرا

لن أستطيع الرد عليك الآن قطعا

فأمامى صفحات و حيل تحتاج وقتا كثيرا لأدرسها و أستفيد منها

لكن مؤقتا

أقول

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

و إلى لقاء إن شاء الله بعد الفحص و الدراسة

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information