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

التحكم بالتسلسل والقيمة الافتراضية في النموذج


إذهب إلى أفضل إجابة Solved by متقاعد,

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

السلام عليكم
سادتي الافاضل .  من فضلكم  .في القاعده المرفقه طيا بامكانك التحكم بالتسلسل (ID) اي في كل مره بامكانك جعل التسلسل يبدا بالرقم الذي  ترغبه  .  السؤال الامر الموجود في النموذج هل بالامكان وضعه في استعلام بحيث نستغني عن النموذج  . جزاكم الله خير

التحكم بالتسلسل.rar

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

عليكم السلام

الامر الموجود في النموذج موجود فعلا في الاستعلام

ولكننا في اكسس لا نستخدم الاستعلامات في عرض البيانات مباشرة ، ولكننا نستعرضها من خلال النماذج او التقارير

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

اساتذتي الافاضل rockjone33  و ابو خليل  

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

younis.rar

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

منذ ساعه, يونس الخطابي said:

اصبح النموذج يتضمن التحكم بالتسلسل وكذلك التحكم بالقيمه الافتراضيه  وارفق مثال لكي يستفاد منه غيري  0  اتمنى من المشرفين على القسم تعديل العنوان ليصبح ( الحكم بالتسلسل والقيمه الافتراضيه )تحياتي لكم

اولا جزاك الله خير اخي يونس الكود الذي اشرتم اليه على النحو التالي

Me.M = DLast("M", "GTTT", (DCount("*", "GTTT") Mod 50)) + 1
Me.R = DLast("R", "GTTT", (DCount("*", "GTTT") Mod 50))

وتفسيره بالنسبة لي ان حقل الترقيم يساوي اخر رقم موجود في الجدول ثم استخدم دالة عد السجلات في نفس الجدول واستخدم دالة القسمة على 50 ثم +1

والحقيقة بالنسبة لي الامر غير مفهوم لان استخدام دالتي العد والقسمة لا دور لها هنا وحتى بعد استبعادهما لم يتاثر الترقيم لان الامر اخر رقم +1

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

الامر الثاني ايضا في السطر التالية حقل r الخاصة بالقيمة الافتراضية استخدمت dlast للحصول على اخر قيمة للحقل والسؤال ماهو دور دالتي dcount & mod

الامر يمثل استفسار وليس الهدف منه النقد

تحياتي

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

السلام عليكم . شكرا جزيلا لك اخي العزيز . مبرمج سابق . حتى وان كان نقد فهو احلى من السكر على قلبي كما يقال . لان الخدمه الجليله التي قدمها لي انت واخوانك العاملين في هذا المنتدى المبارك لاتقاس بثمن . واود ان اوضح التالي . اولا.  اختصاصي بعيد جدا عن البرمجه ومعلوماتي لاتذكر في هذا المجال . ومن حسن حظي عثرت بالصدفه قبل سنوات على قاعدة بيانات اكسس تخدمني في مجال عملي وانا لا اعرف ماهو اكسس وماهي البرمجه  وبدات اتابع المنتدى واستنسخ اوامر منه واللصقها في قاعدتي دون ان اعرف تفاصيل تلك الاوامر . المهم يحقق غايتي . حتى اصبحت عندي قاعدة بيانات مثار اعجاب للقريبين مني .الى هنا اعتقد توضحت الفكره هذا اولا وثانيا . اتعامل مع جهه تبعث لي قوائم يوميا احيانا ترد التسلسلات فيها طفره يعني بعد الرقم 50 مثلا ياتي تسلسل 56 ثم 57 و58..الخ والترقيم التلقائي لايتعامل بهذه الصيغه . واحيانا تاتي ارقام مكرره واحتار كيف اتعامل معها . فوجدت في المنتدى هذا الكود الذي حقق مبتغاي ولو كانت التسلسلات التي تردني لا تتكرر لجعلت خصائص الحقل( مفهرس /نعم التكرار غير مقبول)  ثالثا.  بالنسبه للقيمه الافتراضيه من خلال متابعتي لما ينشر في المنتدى لم اجد اسهل من هذا الامر يمكنني من التحكم بالقيمه الافتراضيه . قد اكون اسهبت في الشرح واخذت من وقتك الكثير . لكن صدقني دعائي لاينقطع لك ولوالديك ولكل من يساهم في هذا المنتدى . جزاكم الله عنا خير الجزاء

تم تعديل بواسطه يونس ال[f,vd
  • Like 1
رابط هذا التعليق
شارك

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

3 ساعات مضت, يونس ال[f,vd said:

شكرا جزيلا لك اخي العزيز

الشكر لله اخي

3 ساعات مضت, يونس ال[f,vd said:

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

بالتوفيق لك اخي يونس

واسال الله لنا ولك بالتوفيق والسداد

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

  • أفضل إجابة

استكمال للرد السابق

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

الان نعود للموضوع

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

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

المعلمة الثانية المجال وهو تعبير نصي يمثل اسم الجدول او اسم الاستعلام

المعلمة الثالثة المعيار وهو اختيار وقد يكون معيار واحد او اكثر وقد يكون نصي او رقمي او منطقي

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

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

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

Dim x() As String
a = DLast("[m]&'|'&[k]&'|'&[r]", "GTTT")
 x = Split(a, "|")
 M = x(0) + 1
 k = x(1)
 R = x(2)

M = اخر رقم تم تسجيله + 1

K = اخر قيمة مسجلة في حقل الشركة المصنعة

R = اخر قيمة مسجلة في حقل اللون

السؤال الاخير هل يمكن تحقيق النتيجة بدون استخدام DLast ؟ نعم ممكن توجد اكثر من طريقة منها استخدام مصفوفة من خلال مصدر السجلات

وسوف اتوقف هنا فالاستطراد قد يشتت الفكرة

قالت العرب :

يكفيك من الزاد ما بلغك المحل

تحياتي وتقديري

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

56 دقائق مضت, يونس الخطابي said:

سلمت يمينكم اساتذتي الافاضل (مبرمج سابق و ابو جودي )

ولك بالمثل استاذي واخي يونس

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

4 ساعات مضت, مبرمج سابق said:

السؤال الاخير هل يمكن تحقيق النتيجة بدون استخدام DLast ؟ نعم ممكن توجد اكثر من طريقة منها استخدام مصفوفة من خلال مصدر السجلات

الحقيقة هناك ثلاث طرق

  • عن طريق معالجات الاكسس ولكنها طريقة غير عمليه لكونها تحدد كافة حقول السجل وتكررها في سجل جديد اي انها تحدد السجل كاملا ثم تنسخة وتنتقل لسجل جديد ثم تقوم بلصق القيمة في الحقول ويمكن عملها بالمايكروا وايضا بالكود .
  • عن طريق متغيير متعدد القيمة ويتم في المتغير تحديد الحقول التي نرغب في تحميل قيمتها على شكل سطر نصي نفصل قيمة كل حقل عن الاخرى برمز نحدده عند كتابة الكود ثم ينقلنا الامر الى سجل جديد ويقوم بتقسيم القيمة بدلالة الرمز  مثال
x=([id]&"|"&[item]&"|"&[price])
  • الطريقة الثالثة من خلال مصفوفة بسيطة والفكرة ان نفتح مصدر السجلات (الجدول) ثم نضع اسماء الحقول المطلوبة داخل المصفوفة بدون الحاجة لرمز فاصل ولا داعي لاستخدام دالة Split لكون المصفوفة تحمل القيمة بالترتيب مثلا لوحملنا اربع حقول يكون الحقل الاول رقم 0 والثاني رقم 1 والثالث رقم 2 والرابع رقم 3
x = Array(rs![id], rs![jop], rs![nat], rs![city])

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

تحياتي ولعل لنا لقاء في موضوع اخر باذن الله

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

1 ساعه مضت, مبرمج سابق said:

ولعلي اضع مثال بسيط بعون الله

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

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

9 ساعات مضت, مبرمج سابق said:

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

يا 100 مليون اهلا

كل عام وانتم بخير استاذى الجليل :fff:

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

في 15‏/7‏/2022 at 09:56, مبرمج سابق said:

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

Dim x() As String
a = DLast("[m]&'|'&[k]&'|'&[r]", "GTTT")
 x = Split(a, "|")
 M = x(0) + 1
 k = x(1)
 R = x(2)

السلام عليكم 
الاستاذ الفاضل / مبرمج سابق
جربت الامر الذي ذكره جنابكم ولم تتحقق النتائج المرجوه 
الذي كنت ابغيه هو مايلي بالضبط 
اولا- / في حقل ( التحكم بالتسلسل) ان يبدا العداد من اخر رقم كتبناه فاذا كتبنا 100 المطلوب ان يظهر في السجل التالي رقم101 ثم 102 ثم 103 ثم 104 واذا كتبنا بعد ال 104 رقم 99 ان يظهر بعده التسلسل 100 ثم 101 ثم 102 وهكذا اي ان الترقيم يبدا من اخر رقم كتبناه  
ثانيا/ حقل (التحكم بالقيمه ) ان يتكرر اخر رقم كتبناه فاذا كتبنا 10 يظهر في السجل التالي رقم 10 وفي الثالث رقم 10 ايضا ثم اذا كتبنا بعد ذلك رقم 5 يظهر في السجل التالي رقم 5 وفي الذي يليه رقم 5  وهكذا . علما بان خصائص هذا الحقل هو نص . ادعو من الله ان تكون الفكره اصبحت واضحه .   لاحظ المثال المرفق . تحياتي لك اخي العزيز

مبرمج سابق.rar

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

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

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

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

الملف مرفق

تحياتي

 

مبرمج سابق.accdb

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

السلام عليكم

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

مبرمج سابق.rar

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

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

والله لا اعلم يا استاذ يونس

انا جربت الملف الذي قمت بارفاقة ☝️ ولم اجد اي مشكلة كل شي يعمل

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

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

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

تحياتي وتقديري لاخي الفاضل

 

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

استاذي الفاضل / مبرمج سابق

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

اشكرك على سعة صدرك وتحملتني كثيرا . فعلا اعدت التجربه وكان كل شيء تمام زيك زي العسل . تحياتي الك اخي العزيز

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

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