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

ترقيم مسلسل يبدأ من 1 وينتهي بحدث معين

مغلق
بدأه snmdody في 16 يونيو 2004 · 12 رد · 2,304 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

وقد تم عمل نموذج لإدخال المسافرين بناء على رقم الرحلة (جدول الرحلات) ..

والمطلوب هو أن يتم ترقيم حقل (مسلسل) بدءاً من رقم (1) حتى الإنتهاء وعند تسجيل مسافرين آخرين على رقم رحلة مختلف فيتم عمل مسلسل جديد بدءاً من (1) ..

فهل أجد الحل لديكم كما تعودنا ذلك ،،

مرفق ملف مبسط لذلك ،،

مشكورين وما تقصروا

المنافست.rar

#3

شكراً اخي مهند على تفضلك بالرد ، ولكني المطلوب غير الذي في الرابط الذي ارفقته مشكورا لي ..

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

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

ودعني أضرب لك مثالاً ..

فمثلاً يقوم المستخدم بإختيار الرحلة رقم (100) ويقوم بعد ذلك بإختيار نوع التأشيرة المطلوبة (مثلاً خروج وعودة) فالمطلوب أن يتم البحث عن طريق الدالة DCount عن عدد السجلات التي بجدول المسافرين للذين تأشيرتهم خروج وعودة ورقم رحلتهم (100) فإذا تم العثور على سجلات مطابقة للشروط فيتم إضافة (1) على آخر رقم مسلسل موجود وإن لم يتم العثور على أي قيمة فيتم بدء الترقيم بدءاً من الرقم (1) وهكذا بالنسبة لبقية التأشيرات ..

وقد حاولت كتابة الكود التالي في حدث عن التحديث لحقل الكمبوبوكس المسمى (VisaType) الموجود بالنموذج المسمى frmAddPassengers ولكني وجدت أن هناك مشكلة تتمثل في تنفيذ العد حيث يقوم بتنفيذ الكود فقط بعد تحديث الحقل ولا يقوم بإضافة (1) عند إدخال أي مسافر في نفس الوقت ..

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

Private Sub VisaType_AfterUpdate()
Dim count As Integer
Me![subform].SetFocus
Me![subform].Form![VisaName] = DLookup("[VisaType]", "VisasType", "[VisaCode] = " & [Forms]![frmAddPassengers]![VisaType])
count = DCount("[VisaType]", "Passengers", "[VisaType] = " & Forms!frmAddPassengers![VisaType])
If count = 0 Then
count = 1
Me![subform].Form![PManefestSerial] = count
Else
count = count + 1
Me![subform].Form![PManefestSerial] = count
End If
End Sub

المنافست.rar

#4

أخي الكريم

لقد حملت الملف المرفق .. وجربت الحدث المكتوب فيه . وقد عمل بشكل صحيح !!

وقد عملت يه اختصاراللكود كما يلي :

   Dim count As Integer
   Me![subform].SetFocus
   Me![subform].Form![VisaName] = DLookup("[VisaType]", "VisasType", "[VisaCode] = " & [Forms]![frmAddPassengers]![VisaType])
   count = DCount("[VisaType]", "Passengers", "[VisaType] = " & Forms!frmAddPassengers![VisaType])
   count = count + 1
   Me![subform].Form![PManefestSerial] = count

المهم اني لم ارى مشكلة !!

#5
اقتباس
وتتلخص فكرة هذه القاعدة على أن يكون للمسافرين (رقم تسلسلي للكروت وليس رقم تسلسلي للعرض فقط) يبدأ من (1) وينتهي بإنتهاء العدد الكلي للمسافرين بناء على رقم الرحلة وبناء على نوع التأشيرة (مثلاً عمرة ، خروج وعودة .. الخ) ..

ودعني أضرب لك مثالاً ..

فمثلاً يقوم المستخدم بإختيار الرحلة رقم (100) ويقوم بعد ذلك بإختيار نوع التأشيرة المطلوبة (مثلاً خروج وعودة) فالمطلوب أن يتم البحث عن طريق الدالة DCount عن عدد السجلات التي بجدول المسافرين للذين تأشيرتهم خروج وعودة ورقم رحلتهم (100) فإذا تم العثور على سجلات مطابقة للشروط فيتم إضافة (1) على آخر رقم مسلسل موجود وإن لم يتم العثور على أي قيمة فيتم بدء الترقيم بدءاً من الرقم (1) وهكذا بالنسبة لبقية التأشيرات ..

وقد حاولت كتابة الكود التالي في حدث عن التحديث لحقل الكمبوبوكس المسمى (VisaType) الموجود بالنموذج المسمى frmAddPassengers ولكني وجدت أن هناك مشكلة تتمثل في تنفيذ العد حيث يقوم بتنفيذ الكود فقط بعد تحديث الحقل ولا يقوم بإضافة (1) عند إدخال أي مسافر في نفس الوقت ..

المشكلة هي أني اريد إستخدام دالة DCount بالطريقة التالي :

1 - اريد كود يبحث عن السجلات الموجودة لرقم رحلة معينة + نوع التأشيرة . ودعني أشرح أكثر ، مثلاً اريد البحث عن سجلات الرحلة رقم (100) لنوع التأشيرة مثلاً (خروج وعودة) .

2 - الكود الذي تفضلت واختصرته لي يقوم بإضافة (1) على أول سجل فقط ولا يقوم بالإستمرار مثلاً المسافر الأول (صالح) رقمه (1) وعند إضافة مسافر آخر يتم تصفير العدد من جديد

أرجو المعذرة أخي مهند ولكن من عشمنا فيكم جزاكم الله خير ،،

#6

حيث أن المطلوب هو حساب عدد السجلات في جدول المسافرين Passengers بالشروط التالية :

1 - أن تكون قيمة حقل رقم الرحلة بجدول المسافرين مثلا (100) ونوع التأشيرة مثلاً (خروج وعودة ) .. وبطريقة أدق حساب عدد السجلات للذين رقم رحلتهم يساوي (100) وتأشيرتهم (خروج وعودة)

ولو سمحتم لي سأوضح سبب طلبي لمثل هذا الأمر ، حيث يقوم مدخل البيانات بإدخال المسافرين لكل رحلة سفر ، ويجب عليه أن يقوم بفرز أسماء المسافرين حسب تأشيرة سفرهم فمنهم من يكون خروج وعودة ومنهم من يكون عمرة .. وخلافه ، وبعد فرز أسماء المسافرين حسب التأشيرة يقوم بإدخال بياناتهم بقاعدة البيانات على أن يكون لكل تأشيرة رقم مسلسل (ويسجل كذلك في كرت المغادرة لتسليمه للجوازات) فمثلاً يوجد عدد (150) مسافر بتأشيرة خروج وعودة ، وعدد (200) مسافر بتأشيرة عمرة ويريد المستخدم تسجيلهم على رحلة رقم (100) فيصبح الأمر كالتالي :

بالنسبة لعدد (150) مسافر بتأشيرة خروج وعودة يقوم كود معين بحساب عدد السجلات لرحلة رقم (100) للتأشيرة التي نوعها (خروج وعودة) فإذا وجد أن عدد السجلات يساوي (0) صفر فيتم بدء الترقيم من رقم (1) حتى (150) وإذا وجد أن عدد السجلات مثلاً (21) فيقوم ببدء الترقيم إبتداء من (22) على إعتبار أن عدد السجلات (21) فيضيف (1) عليه وهكذا

وبالنسبة لعدد (200) مسافر بتأشيرة خروج وعودة يقوم كود معين بحساب عدد السجلات لرحلة رقم (100) للتأشيرة التي نوعها (عمرة) فإذا وجد أن عدد السجلات يساوي (0) صفر فيتم بدء الترقيم من رقم (1) إلى رقم (200) وإذا وجد أن عدد السجلات مثلاً (5) فيقوم ببدء الترقيم إبتداء من (6) على إعتبار أن عدد السجلات (5) فيضيف (1) عليه وهكذا

#7

وهذا الكود بعد التعديل

 Dim count As Integer
  Me![subform].SetFocus
  Me![subform].Form![VisaName] = DLookup("[VisaType]", "VisasType", "[VisaCode] = " & [Forms]![frmAddPassengers]![VisaType])
  count = DCount("[VisaType]", "Passengers", "[VisaType] = " & Forms!frmAddPassengers![VisaType] & "AND [VoyageNo] = " & Forms!frmAddPassengers![Voyage])
  count = count + 1
  Me![subform].Form![PManefestSerial] = count
#9

نعم أخي مهند لقد عمل الكود بشكل صحيح بعد التعديل الذي اجريته عليه وذلك فيما يختص بحساب عدد السجلات لرقم رحلة معينة + تأشيرة معينة ، ولكن المشكلة تتمثل في تنفيذ العد (حقل الترقيم في النموذج الفرعي) حيث يقوم بتنفيذ الكود فقط بعد تحديث الحقل ولا يقوم بإضافة (1) عند إدخال أي مسافر آخر في نفس الوقت ..

وإليك المثال للإطلاع عليه جزاك الله خير ،،

المنافست بعد التعديل.rar

#10

Up

#11

في إنتظار ردكم

#12

Up

#13

توصلت أخيراً لحل هذه المشكلة ، فشكراً جزيلاً لكم وجزاكم الله الف خير على مجهوداتكم معنا ،،

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

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