اذهب الي المحتوي
أوفيسنا

نموذج يتأثر الإدخال فيه بتاريخ السنة ( تغيير علاقات وتحديث بيانات)


إذهب إلى أفضل إجابة Solved by ابوخليل,

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

السادة المحترمين

برجاء المساعدة أريد عمل نموذج مرتبط بجدولين بيانات له حقول

Order & Order Details والعلاقة بينهم من نوع One to Many

والنموذج عبارة عن Form & Suform الجدول الرئيسى له سيرال وهو Primary Key للجدول المرتبط به

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

 

طبعاً الجدول لا يقبل منى أى أرقام مكررة لأنه Primary Key

 

فالمطلوب

 

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

 مرفق لكم مشروع برجاء المساعدة لآن الأمر هام وهام جداً

 

تليفوناتى لأهمية الموضوع

0111-20-24-594

010-990-44-635

 

 

 

DB.rar

رابط هذا التعليق
شارك

كما ذكرت يوجد لديك بيانات سابقة  الى ثلاث سنوات خلت

فافضل طريقة هي الطريقة التي تحافظ على خصوصية البيانات وحفظها عن التغيير

خاصة اذا كان تغير المعرفات ينشأ عنه مشكلات مستقبلية

 

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

احدها :

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

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

الخطوة الثانية جعل حقل السيريال وحقل السنة مفاتيح 

وبهذه الطريقة لن يتم تكرار الرقم خلال السنة الواحدة

  • Like 1
رابط هذا التعليق
شارك

كما ذكرت يوجد لديك بيانات سابقة  الى ثلاث سنوات خلت

فافضل طريقة هي الطريقة التي تحافظ على خصوصية البيانات وحفظها عن التغيير

خاصة اذا كان تغير المعرفات ينشأ عنه مشكلات مستقبلية

 

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

احدها :

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

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

الخطوة الثانية جعل حقل السيريال وحقل السنة مفاتيح 

وبهذه الطريقة لن يتم تكرار الرقم خلال السنة الواحدة

متشكر على الرد

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

وشكرا

رابط هذا التعليق
شارك

لايمكنني فتح المرفق الآن لاني اعمل على 2003  لعلي انقله الى جهاز آخر في وقت لاحق

 

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

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

طبعاً الجدول لا يقبل منى أى أرقام مكررة لأنه Primary Key

 

كيف ؟ أدى إلى تكرر بعض السيرال

وفي نفس الوقت هو مفتاح ؟

رابط هذا التعليق
شارك

تم الاطلاع على المرفق

واليك بعض الملاحظات :

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

 

 لا يوجد تكرار ويستحيل ذلك

الملاحظة الثانية : تسمية حقل التاريخ في الجدول Date لا تصلح حيث ان Date دالة محجوزة في اكسس

 

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

رابط هذا التعليق
شارك

مشكورين لكم جداًًًًًًًً

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

- بالنسبة للإستفسار الأول من الزميل ( دليل الخير )

أنا طبعاً متأكد أن السيرال طالما أنه Primary Key لا يمكن تكراره ولكن كنت أتحايل على Application وأضف الرقم المكرر بالسالب..

 

بالنسبة للملاحظة الثانية سأقوم بتغيير الأسم بالنسبة للتاريخ ..

وتأكيداً للمطلوب ... هل المطلوب ان يبدأ ترقيم جديد في كل سنة ؟

نعم هو المطلوب إثباته..

رابط هذا التعليق
شارك

تاريخ المشاركة اليوم, 09:19 م

صراحة ... مجهود أكثر من رائع

نشكركم أخى الكريم

ولكن ....

فى حالة المشروع الخاص بى الأمر صعب جداً لأن أنا عندى قاعدة بيانات من 2009 ويصعب الإعتماد على الترقيم التلقائى

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

فممكن أدخل سيرال 1 مثلا و أقم بإدخال 5 بعد ذلك

 

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

وهو أمر شديد التعقيد خصوصا اذا كانت البيانات المنزلة يوميا 50 بيان

 

وشكراً أخى

رابط هذا التعليق
شارك

صنع الله لك

 

صنع ماذا ؟

أم المعنى ببطن الشاعر ...  آمل ايضاح  ما تعنيه  .. حيث لم تطرق اذني من قبل

 

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

لذا قمت بالغاء المفتاح وجعلت الحقل قابل للتكرار

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

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

الآن اصبح الحقل orderID  في الجدول الفرعي زائدا  ويمكنك حذفه

ترقيم جديد كل سنة.rar

رابط هذا التعليق
شارك

أبا خليل .. أكرمك البارىء

 

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

ولدى سؤاليين :

1- كيف قمت بربط ID و ID_S وهو ليس Primary Key ...هذه واحدة.

2- كيف قمت إدراج بيانات فى حقل به Primary Key وهى بيانات مكررة ..

 - انا فى حاجه إلى أعرف ذلك لكى أقوم بتجهيز قاعدة البيانات لكى تعمل وفقاً لتعديل حضرتك

وشكرا على مجهودك واهتمامك..

رابط هذا التعليق
شارك

1- كيف قمت بربط ID و ID_S وهو ليس Primary Key ...هذه واحدة.

 

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

 

الثانية :

كما قلت سلفا واعيدها هنا  وسأقوم لاحقا بعمل مرفق توضيحي ان لم تتمكن من التطبيق :

اولا خذ نسخة احتياطية من عملك تحسبا لاي خطأ يحصل

1- نعمل حقل ترقيم تلقائي في الجدول الرئيس ونسميه ID  ومن الخصائص : مفهرس= نعم بدون تكرار

2- نعمل حقلا رقميا في الجدول الفرعي ونسميه S_ID

3- ننشىء استعلاما يجمع الجدولين ونختار بعض الحقول منهما ومن ضمن الحقول ID  و S_ID

نحفظ ونخرج 

حين نعيد فتح الاستعلام نشاهد ان حقول S_ID  فارغة

 

الآن نقوم بانشاء استعلام تحديث بناء على الاستعلام الاول 

نقوم بتحديث S_ID  بما يقابلها من ID

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

نفتح الجدول الفرعي لنتأكد من تحديث حقول S_ID

 

كل الخطوات السابقة نقوم بها والعلاقة السابقة بين الجدولين قائمة

الآن يمكننا حذف العلاقة السابقة وربط الجدولين بالحقول الجديدة  ( ID  و S_ID )

رابط هذا التعليق
شارك

المحترم أبا خليل

لقد حاولت مرار وتكرار تنفيذ أشرت اليه ولكن ...

1- لقد قمت فى البداية بتجهيز ملف احتياطى من قاعدة البيانات ولكن بعد الغاء السيريال السالب الذى قد قمت بإدخاله سابقاً مضطراً وطبعا ذلك بعد فصل العلاقة بين الجدولين Order و Order Details ...

2- وقد قمت بعمل استعلام ضم فيه id و id_s بعد عملهم استعلام منفصل ...

3- ثم فى استعلام جديد من Update حاولت تحديث id_s من id استنادا على الإستعلام الأول .. ولكن كان ورقة عمل الأكسس تقوم بالتهنيج دائما ...

فالى الان لم أتمكن من تنفيذ ما قد اشرت اليه

 

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

 

مرفق لك الملف  المراد التعديل عليه

رابط هذا التعليق
شارك

وطبعا ذلك بعد فصل العلاقة بين الجدولين Order و Order Details ...

 

هذه العلاقة لا تفصل الا آخرا عند النهاية وقد بينت لك ذلك في الشرح

 

ويمكن هذا هو السبب

 

مرفق لك الملف  المراد التعديل عليه

 

ارفق فقط الجدولين المرتبطين

وان كان هناك خصوصية تمنع من العرض على العموم فيمكنك رفعه على بريدي

رابط هذا التعليق
شارك

الآن ارفقت لك المرفق مع ادوات التعديل 

كل ما عليك عمله هو نقل الاستعلامين الى قاعدة بياناتك

ولكن لا تشغل استعلام التحديث Q_Up  حتى تجري التغييرات التالية :

1- انشاء حقل id ترقيم تلقائي في الجدول Order وعدل في الخصائص مفهرس= نعم بدون تكرار

2- انشاء حقل رقمي s_id  في الجدول Order Detail

3- شغل استعلام التحديث Q_Up

4- انتقل الى الجدول Order Detail وتأكد من وجود البيانات في الحقل s_id

5-اذهب الى العلاقات :

            أ- احذف العلاقة الأولى التي بين OrderID في الجدولين

            ب- اربط العلاقة الجديدة بين id   و  s_id

هنا انتهينا ويمكنك الان التخلص من الاستعلامات وحذفها

db44.rar

رابط هذا التعليق
شارك

المحترم - أبو خليل

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

وإنى عاجز عن الشكر

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

 

ولى سؤال أخر ... كيف يمكن نزع السنة من التاريخ ووضعها فى حقل معين كما فى مثالك السابق ...

وشكرا جزيلاً

رابط هذا التعليق
شارك

ولى سؤال أخر ... كيف يمكن نزع السنة من التاريخ ووضعها فى حقل معين كما فى مثالك السابق ...

باستخدام استعلام تحديث

استنادا الى الجدول تختار الحقل المراد تحديثه

تكتب في حقل ( تحديث الى ) احدى الجملتين التاليتين :

DatePart("yyyy";[fDate])
Year([fdate])

باعتبار fDate هو حقل التاريخ في الجدول

رابط هذا التعليق
شارك

تحية لك ابا خليل

قد تمت تجربتها وشكراً جزيلا لك

 

ولكن هناك شىء غريب أحب ان أوضحه لك ..

بداية انا اعمل على إصدار 2010 أكسس واستعلام التحديث لا يعمل معى ورقات عمل اكسس الخاصة بهذا  الإصدار

ولكن عند تحويل فورمات الى اكسس 2000 فإنه يعمل بكل نجاح ... ولا أعرف لما

 

وشكرا على الإفادة ونتمنى لك دوام المعرفة...

رابط هذا التعليق
شارك

تحية طيبة وبعد

 

قد تنفيذ ما قد أشرت اليه ونفذ ما كنت ترمى اليه تماماً...

ولكن ...

ظهرت مشكلة أخرى غير محلولة.. فى ملفكم المرفق الذى كنتم قد أرسلتموه من قبل...

والمشكلة كالتالى..

1- لعدم ربط حقل Orderid فى جدول البيانات Order و Order Details البيان الذى يسجل فيهما غير مرتبط ببعضه

2- عند البحث من خلال الشاشة أو فى جدول  البيانات يعطينى حقل Orderid فى جدول Order Details فارغ..

 

برجاء الرد للأهمية ...

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

 

 

ترقيم جديد كل سنة.rar

رابط هذا التعليق
شارك

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

المحترم أبا خليل ...

عذراً لقد تسرعت فى الرد عليكم نظراً ... لصعوبة موقفى ...

لقد تم مراجعة كل الملفات المرفقة فى هذه المشاركة حتى توصلت لحل المشكلة تماماً

فإنى أشكرك و أتمنى ان يجعله الله فى ميزان حسانتك..

 

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

 

ولكن لدى سؤالين إضافة للمشاركة لدى

1- السؤال الأول : هل من الممكن إزالة الإشارة السالبة من قاعدة البيانات من حقل Orderid كما لاحظتم فى المرفق دون التأثير على تغيير العلاقات و تحديث البيانات ...

2- السؤال الثانى : فى الكود الخاص بى Event After Update الخاص Text1 المسئول عن Orderid هل من الممكن التعديل بحيث بدلامن Undo يقوم بعرض Record المدخل مسبقاً داخل تاريخ السنة الحالية ...

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

 

ولـــــــــــكم جزيل الشكر

وصنع الله لك

محسن

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

اخي محسن

تحية طيبة وبعد :

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

ولاشك هناك فرق بين التأسيس وبين التعديل

في طلبك الثاني : 

حسب التطبيق المعمول لست بحاجة لاظهار الرقم ( من وجهة نظري كتابة اكواد للبحث عن سجلين متشابهين فيه زيادة عبء )

لانه اذا ظهرت رسالة تقول ان هذا الرقم سبق ادخاله فما الفائدة من اظهاره في الرسالة

فنحن نستنتج التكرار بناء على الخطأ الحاصل 

If Err.Number = 3022 Or Err.Number = 3058 Then
فالرقم 3022 خاص بمخالفات المفاتيح والفهرسة والعلاقات
والرقم  3058 خاص بالحقول الفارغة
فاذا وجد احد الخطأين ظهرت لنا الرسالة بوجود التكرار
والخطأ يظهر بعد التطبيق على حقلين اثنين هما الرقم والتاريخ
 

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

 

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

 

حيث سنبدأ من الصفر

ما رأيك ؟

رابط هذا التعليق
شارك

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