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

مشكلة الاسطر المستمرة في كتابة دالة

مغلق
بدأه حسن عبيد في 7 يونيو 2006 · 7 رد · 700 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

االاخوة الكرام

هناك مشكلة حصلت معي في دالة كنت قد أنشأتها وهذه الدالة فيها متغير واحد فقط – وقد وضت هذه الدالة في رأس عمود في استعلام

طبعا الغاية منها هو اذا كانت قيمة المتغير رقم ما ( وهنا عدد الارقام الذي سيقارنها اكثر من 150 قيمة وصيغة الدلة كالتالي :

Function maslaha ( a as string )

If a= "123456" or a = "21341256" or a= "54875467" ……..

.

.

(طبع الارقام كثيرة)

Then maslaha="مصلحية"

Else

Maslaha="عام"

End function

عند كتابة محتوى الدالة من الارقام في البداية تجاوز عدد الاسطر ال 25 سطرا مستمرا ( في البداية كان عدد الاسطر كبيرا وباستخدام الاسطر الطويلة المستمرة والتي كم تعرفون بفصل بين السطر والاخر علامة الشرطة تحت السطر underscore ) اعطاني رسالة خطا بان عدد الاسطر المستمرة يجب ان يكون حتى 25 سطرا –

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

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

#2

السلام عليكم

اخ حسن لماذا لا تخزن الارقام الكثيره في جدول و تعمل المقارنه عن طريق الاستعلام او الكود.

العراق - البصرة

#3
alibukheet كتب:
السلام عليكم

اخ حسن لماذا لا تخزن الارقام الكثيره في جدول و تعمل المقارنه عن طريق الاستعلام او الكود.

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

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

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

بعد اعادة تحليل الدالة وصلت الى حل وهو

اضافة عبارة

elseif

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

كما في عبارة

if

الاولى

وتم قبول حفظ الدالة وبالتالي تم تشغيل الاستعلام بنجاح

#4

اخي الفاضل حسن عبيد

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

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

ولكن اليك الطريقة الصحيحة لعمل الدالة في الوحدة النمطية التي على ضوئها سوف تستخدمها في جميع كائنات القاعدة سواء نماذج او استعلامات او تقارير

ضع هذه الدالة في وحدة نمطية جديده

Public Function Maslaha(A As String) As String
If A = "123456" Or A = "21341256" Or A = "54875467" Then
Maslaha = "مصلحية"
Else
Maslaha = "عام"
End If
End Function

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

مثال

Public Function Maslaha(A As String) As String
If A = "123456" Or A = "21341256" Or A = "54875467" Or A = "111111" _
Or A = "222222" Or A = "333333" Or A = "444444" Or A = "555555" _
Or A = "666666" Or A = "777777" Or A = "888888" Or A = "999999" _
Or A = "112233" Or A = "223344" Or A = "334455" Or A = "556677" _
Or A = "667788" Or A = "778899" Or A = "889911" Or A = "991122" _
Or A = "654321" Or A = "234567" Or A = "345678" Then
Maslaha = "مصلحية"
Else
Maslaha = "عام"
End If
End Function

انتقل الى الاستعلام

وضع هذه العباره في حقل جديد ثم قم بتشغيل الاستعلام

Maslaha: Maslaha([A])

اما النماذج والتقارير

فضع هذه العباره في مربع نص جديد غير منضم

= Maslaha([A])

وهذا مثال مرفق

Hassan.rar

اكرر اعتذاري اخي الفاضل حسن عبيد

اختكم

زهره

#5

اخ حسن لقد قرأت مشاركتك بدقه و لكن سوف اوضح لك ما قصدته اكثر بكلمات قليله و دقيقه :

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

علي البخيت

العراق - البصرة

#6

اخي الفاضل حسن عبيد

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

انظر المثال بعد التعديل

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

تم ادراج جميع الارقام المصلحة في الجدول وعددها 150 رقم باقي الارقام في الجدول تعتبر عامه

النموذج مبني على الاسنعلام QZA

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

بالنسبة لسؤالك ان سطر الكود لا يمكن ان يزيد عن 25 فلم الاحظ ذلك فأنا ( واعوذ بالله من كلمة انا ) اكتب احيانا آلآف الاسطر البرمجية ولك تواجهني اي مشكلة ( انظر الى الكود في الوحدة النمطية ) فقد وضعت كل 10 ارقام في سطر وتستطيع ان تضع خمسين رقم في كل سطر او تضع الارقام كلها في سطر واحد مع استبعاد الشرطة السفلية في الكود .

Hassan_UP.rar

اختكم

زهره

#7

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

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

حيث كما قلنا فانه تم اضافة جدول منفصل للارقام المصلحية الـ 150 و التي تعتبر اساس في المقارنه بين الارقام لمعرفتها هل هي مصلحية ام عامه.

الان و حسب الملف المرفق يمكنك الحصول على :

1 - نتيجة المقارنه الموجوده في الاستعلام "Query1" و بدون الحاجة الى استخدام داله للحصول على نتيجة الاستعلام .

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

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

4 - امكانية اضافة و حذف و تحديث أي من الارقام المصلحية حيث انها الان موجوده في جدول منفصل و يمكن تحديثها عن طريق نافذه الادخال

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

تقبل تحياتي

علي البخيت

Hassan_UP.rar

العراق - البصرة

#8

الأخ الكريم علي البخيت - الأخت الغالية زهرة

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

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

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

وقد راجعت الدالة المذكورة في مشاركتي ولم .... حدث ما حدث (!!!!!! )

على كل الاحوال جل من لا يخطىء .

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

أخوكم حسن عبيد

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…