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

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


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

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

محتاجه مساعده الساده الاخوه الكرام

[ID] موجود فيه حقل .(reservation)_tbl  عندى جدول للزياره اسمه

test_tbl وعندى جدول للتحاليل كلها اسمه

 [test_order_tbl] وعندى جدول للتحاليل المطلوبه اثناء الزياره اسمه

 ID_serialالحقل دا اسمه  settings_general_tbl فى الزياره هيجى من جدول تانى اعدادات عامه للبرنامج اسمه[ID] المطلوب ان

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

حاولت اعملها بداله

=DLookUp("ID_serial","settings_general_tbl")

بيجيب نفس الرقم فى كل زياره

 مع العلم انه رقم مش تلقائى ومش مفتاح اساسى

[ID]وانا عايزه الزياره التاليه تزيد رقم مش يثبت على نفس ال

 

 

الحاجه التانيه 

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

 التحاليل المطلوبه[ID] الزياره مع [ID] عايزه اربط ال 

والتارخ فى الزياره مع تاريخ التحاليل المطوبه

New Microsoft Access Database.rar

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

  • safaa salem5 changed the title to محتاجه مساعده الساده الاخوه الكرام

طيب ممكن سؤال ؟ يا استاذه @safaa salem5

منذ ساعه, safaa salem5 said:

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

ممكن افهم ليه المستخدم يكون عندة اتاحة اختيار رقم بدء الترقيم ؟!

 

 

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

طبعا بدأت بالسؤال ولم ابدأ بالحل لعدة اسباب 

اولا الافضل يكون بطريقة الية وتلقائى منعا لحدوث اخطاء وتكرار ومشاكل

لذلك ... اذا عرف السبب بطل العجب

 

ثانيا ممكن حضرتك بسؤالك تجبرى الكل ان ينظر لطريق واحد ومحدد اللى حضرتك رسمتيه وفى الاخر يكون فى طريق افضل بس حضرتك مفكرتيش فيه

لذلك لما اجد اسئلة وطلبات من النوع ده باحاول افهم الاول 

 

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

2 ساعات مضت, safaa salem5 said:

محتاجه مساعده الساده الاخوه الكرام

[ID] موجود فيه حقل .(reservation)_tbl  عندى جدول للزياره اسمه

test_tbl وعندى جدول للتحاليل كلها اسمه

 [test_order_tbl] وعندى جدول للتحاليل المطلوبه اثناء الزياره اسمه

 ID_serialالحقل دا اسمه  settings_general_tbl فى الزياره هيجى من جدول تانى اعدادات عامه للبرنامج اسمه[ID] المطلوب ان

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

حاولت اعملها بداله

=DLookUp("ID_serial","settings_general_tbl")

بيجيب نفس الرقم فى كل زياره

 مع العلم انه رقم مش تلقائى ومش مفتاح اساسى

[ID]وانا عايزه الزياره التاليه تزيد رقم مش يثبت على نفس ال

 

 

الحاجه التانيه 

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

 التحاليل المطلوبه[ID] الزياره مع [ID] عايزه اربط ال 

والتارخ فى الزياره مع تاريخ التحاليل المطوبه

New Microsoft Access Database.rar 92.29 kB · 5 downloads

اللي فهمته انه عند الضغط على مفتاح اضافة يصير رقم الزيارة + 1 ، صحيح ؟؟

 

في حدث عند النقر لزر اضافة اضيفي اختي الكريمه هذا الكود بعد gotorecord

Me.id = me.id+1

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

طيب ركزى معايا نظريا كده علشان تفهمى حضرتك عملتى ايه

حضرتك عملتى الدلة تروح للجدول settings_general_tbl  وتجيب القيمة اللى فيه +1  ودى القيمة الافتراضية على مربع النص فى النموذج يعنى دايما هتكون كده 

طيب القيمة x+1  بتتسجل فى جدول  reservation_tbl

طيب المفروض عند الاضافة الجديدة ياتى بالقيمة الاخيرة من الجدول  reservation_tbl ثم يجمع عليها 1 طبعا هذا لا يتم

 

 

حبة تركيزعلى اعتبار اننا فكرنا فى حل لو القيمة فى الجدول   reservation_tbl  =  5

يعنى تم استخدام الارقام 1 , 2 , 3 , 4 , 5

ما العمل لو المستخدم اراد بدء الترقيم من 3 مثلا ؟؟؟؟

طيب كيف ابنى الترقيم هل بناء على اعلى واخر قيمة فى الجدول  reservation_tbl  

طيب لو اراد المستخدم بدء الترقيم امتى وازاى نفهم البرنامج يبدء من ترقيم المستخدم 

اذا كان انا توهت ومش فاهم  :yes: :wallbash: يبقى هأفهم البرنامج ايه وازاى وامتى :eek2:

 

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

 

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

47 minutes ago, ابو جودي said:

طبعا بدأت بالسؤال ولم ابدأ بالحل لعدة اسباب 

اولا الافضل يكون بطريقة الية وتلقائى منعا لحدوث اخطاء وتكرار ومشاكل

لذلك ... اذا عرف السبب بطل العجب

 

ثانيا ممكن حضرتك بسؤالك تجبرى الكل ان ينظر لطريق واحد ومحدد اللى حضرتك رسمتيه وفى الاخر يكون فى طريق افضل بس حضرتك مفكرتيش فيه

لذلك لما اجد اسئلة وطلبات من النوع ده باحاول افهم الاول 

 

الفكره ان المستخدم لو حابب يبدأ من رقم ١٠٠٠ مثلا البرنامج يبدأ ياخد ١٠٠٠ وبعدين ١٠٠١ وبعدين الزياره التاليه ١٠٠٢ والزياره التاليه ١٠٠٣ و هكذا  

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

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

طيب الكود والشرح 

نستخدم الروتين الاتى 

Public Function SpID()
  
  Const cnsDefaultStartID As Long = 1
  
  Dim lngGetStartID As Long
  
  lngGetStartID = Nz(DLookup("ID_serial", "settings_general_tbl"), cnsDefaultStartID)
  
  If Nz(DCount("*", "[reservation_tbl]"), 0) = 0 Then SpID = lngGetStartID: Exit Function
  SpID = Dmax("[ID]", "[reservation_tbl]") + 1
  
End Function

 

وزر اضافة سجل جديد سوف نضع فيه

  DoCmd.GoToRecord , , acNewRec
  ID = SpID

 

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

الشرح

  •  اعلنت عن ثابت باسم cnsDefaultStartID  واسندت اليه القيمة  >--->  1 ليكون هذا الرقم المفضل الذى يبدأ به الترقيم
    ليه عملت الحركة دى علشان لو الجدول settings_general_tbl   انحذف منه القيمة التى يبدأ بها الترقيم يحل هذا الثابت مكانه
  • اعلنت عن متغير باسم lngGetStartID من خلاله يتم التحقق من القيمة فى الجدول settings_general_tbl   والتى نريد بدأ الترقيم بها والتى يتحكم فيها المستخدم عند الاستخدام الاول لقاعدة البيانات فى حالة عدم وجود سجلات فى الجدول reservation_tbl


التحقق من قيمة بدأ الترقيم الافتراضية من الجدول  settings_general_tbl    واسناد قيمته الى المتغير lngGetStartID وفى حالة عدم وجود قيمة نسد اليه القيمة من الثابت cnsDefaultStartID 

lngGetStartID = Nz(DLookup("ID_serial", "settings_general_tbl"), cnsDefaultStartID)

 

استخدام دالة  DCount للتحقق من عدد سجلات الجدول  reservation_tbl
لو كانت 0 اى لا يوجد سجلات نسند قيمة بدأ الترقيم الافتراضية من خلال المتغير  lngGetStartID الى اسم الروتين   SpID  ونخبره بعدم استكمال الكود  Exit Function

If Nz(DCount("*", "[reservation_tbl]"), 0) = 0 Then SpID = lngGetStartID: Exit Function

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

اسم الروتين  SpID  نسند اليه قيمة الترقيم من خلال استخدام دالة  DMax  للحصول على اكبر قيمة ثم نقوم بحمع الرقم 1 ليتم عمل تسلسل الترقيم

SpID = DMax("[ID]", "[reservation_tbl]") + 1

 

 

وبكده ينتهى شرح الروتين

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

فى زر الامر اضافة سجل جديد هذا السطر لاضافة سجل جديد

  DoCmd.GoToRecord , , acNewRec

 

بعد ذلك هذا السطر عبارة عن اسم عنصر التحكم فى النموذج ( مربع النص ) والذى نريد وضع قية الترقيم التلقائى فيه = اسم الروتين السابق وهو SpID

  ID = SpID

ا

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

7 hours ago, ابو جودي said:

طيب الكود والشرح 

نستخدم الروتين الاتى 

Public Function SpID()
  
  Const cnsDefaultStartID As Long = 1
  
  Dim lngGetStartID As Long
  
  lngGetStartID = Nz(DLookup("ID_serial", "settings_general_tbl"), cnsDefaultStartID)
  
  If Nz(DCount("*", "[reservation_tbl]"), 0) = 0 Then SpID = lngGetStartID: Exit Function
  SpID = Dmax("[ID]", "[reservation_tbl]") + 1
  
End Function

 

وزر اضافة سجل جديد سوف نضع فيه

  DoCmd.GoToRecord , , acNewRec
  ID = SpID

 

صباح الخير 

On 10/15/2023 at 11:43 PM, kkhalifa1960 said:

تفضلي أستاذتنا @safaa salem5 محاولتي .:fff:

 

CalculatAge.accdb 1.38 MB · 6 downloads

 انا عملت مويول وحطيت فيه الكود وعملت زرار اضافه وفيه الكود الصغير دا بس مش عارفه حاجه مش ظابطه معايا

ss.png

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

4 hours ago, ابو جودي said:

اتفضلى يا افندم انا اسف نسيت ارفق قاعدة البيانات

 

New Microsoft Access Database.accdb 808 kB · 0 downloads

متشكره جدا لحضرتك جدا 🌷🌹😍 

لويسمح وقتك فى طلب تانى 

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

all test

بتجيب الداتا من جدول اسمه

 test_tbl

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

patient tests

والليست بوكس دى هتودى الداتا للجدول اللى اسمه

test_order_tbl

  عايزه كل البيانات فى الجدول الاول تتنقل للجدول التانى 

وفى مكان لكل فيلد زى المثال اللى فى الصوره

والعكس يعنى لو ضغط على اى تحليل يرجع تانى مكانه

 

كمان عايزه اربط 

id  , code, vdate     من جدول  reservation_tbl

id,code,tdate   مع list box  [selected_list]

اخرحاجه بجد

عايزه patient price 

list box     الموجود فى

selected_list اللى اسمها

تنزل مجموعه فى 

service_price

وبجد اسفه انى طولت على حضرتك

دمت لنا نبراسا نهتدى به فى ظلمات الطريق

Screenshot_1.png

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

18 دقائق مضت, safaa salem5 said:

متشكره جدا لحضرتك بجدا 🌷🌹😍 

 

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

18 دقائق مضت, safaa salem5 said:

طلب تانى

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

شوفى القاعدة دى

11. ممنوع طرح أكثر من سؤال في موضوع واحد ليسهل البحث عن المواضيع لاحقا.

وياريت مستقبلا العنوان يكون مناسب للسؤال 

 

حاجة تانى فضلا وكرما وليس امرا 

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

 

شكرا لحضرتك مع اطيب الامانى بقضاء اطيب الاوقات داخل المنتدى

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

  • ابو جودي changed the title to مساعدة فى عمل ترقيم تلقائى عند الاستخدام الاول لقاعدة البيانات تبعا لرغبات المستخدم بناء على قيمة من جدول اعدادات

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.

×
×
  • اضف...

Important Information