• 0
ahmead24

ما هى طريقة تجزئة كلمة بناءا على حرف بها

سؤال

السلام عليكم

المشكلة اننى لدى نظام تكويد للأصناف عبارة عن ثلاث ارقام يفصل بينهم علامة /

الرقم الاول يمثل كود المجموعة

الرقم الثانى كود المجموعة الفرعية

الرقم الثالث رقم الصنف

 

مثلا

1/10/20

معناها مجموعة 1 من مجموعة فرعية 10 بها صنف رقمة 20

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

المشكلة أن كود الصنف فى الجدول حقل واحد غير مقسم فكيف يمكن تقسيم كود الصنف اثناء الاستعلام و ترتيبة ؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

8 إجابة على هذا السؤال .

  • 0

مرحباً بك أحمد

 

إحترامي لأبي عدنان

في نصحه (بناء قاعدة البيانات وفق المبادئ والأسس الصحيحة لأي قاعدة بيانات مثل)

Access-FoxPro-Clipper-DBase-Microsoft SQL-Oracle-Sybase

كما هو مبين في المشاركة المميزة: http://arabteam2000-forum.com/index.php/topic/35237-الأسس-العلمية-لقواعد-البيانات

 

وأود أن أهمس في أذن أبو عدنان

إن كان الزميل أحمد قد قطع شوطاً كبيراً في جهده وعمله وبرنامجه

فليس جميلاً أبداً ثنيه عما بدأ أو إحباط عزيمته بالنكوص القهقري

فيبدد زمناً ثميناً أنفقه من وقته.

 

كما أقر بأن هذا السؤال هو من صنف (السهل الممتنع) يُخال لك أنه سهل للوهلة الأولى

حتى إذا أوحلت قدماك في لـُجهِ  علمت أنه غزير ويحيط بك من كل جانب

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

 

الطرح الأول في المشاركة كان سهل التعاطي (فقط فصل الأرقام عن علامة السلاش وفرز المكونات الثلاث)

وبعد طرح القيود والشروط في المشاركة الأخيرة أصبح الحل تضرب له أكباد الإبل

أولاً: فصل علامة السلاش عن الأرقام بأستخدام (حيلة) استبدال الأرقام (0123456789) إلى "" Null فنحصل على قيمة Null أو / أو //

ثانياً: عدد علامات السلاش .. هل هي (/)واحدة أم (//)اثنتان أو ()لاشيىء ومن ثم بناء الجملة الإستعلامية عليها.

ولكل حالة يكرر ما تم عمله في المشاركة الأولى من تعشيش لفصل القيم العددية ثم فرزها تصاعديا (مجموعة)، (مجموعة جزئية)، (عنصر)

أنظر إلى الاستعلام المستخرج فقد تم حل المسألة دون الحاجة لإقتراح الزميل السابق بإعادة العمل من جديد

 

 

post-129354-0-75411900-1403709853_thumb.

 

فقط أستخدم الإستعلام betweentodate_Sort  بدل الإستعلام السابق betweentodate

علماً بأن الأول معطوفاً على الثاني أقصد الإستعلام

 

تحياتي:

أبو محمد

 

PMS_ex1.rar

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

 

عن طريق الاستعلام يوجد عدة طرق أسهلها استخدام المجزئات (Left, Mid, Right) وطريقتها جدا سهلة ولكنها تعتمد على شكل البيانات ونوعيتها.

 

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

 

:flowers:  :flowers:  :flowers:

تم تعديل بواسطه AbuAdnan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عزيزي/ احمد


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


يمكن حل المسائلة بفصل المكونات الثلاث التي يفصل بينها علامة / slash


في استعلام كالتالي:


أفترض أن الطول الأقصى لكل مكون = 3خانات (000/000/000)


  1. المجموعة               a1       (GroupSort) = 0/  or  00/  or 000/
  2. المجموعة الجزئية      a2      (SubsetSort) = 0/  or  00/  or 000/
  3. رقم الصنف             a3         (ItemSort) = 0/  or  00/  or 000/

الحالة الأولى (المجموعة-GroupSort) يمكن أن يكون ترتيب First slash هو (الثاني إذا كان /0) أو (الثالث إذا كان /00) أو (الرابع إذا كان /000) فنأخذ قيمة اليسار فقط


 


 


 


الحالة الثانية  (المجموعة الجزئية-SubsetSort): تقع بين First slash وبين Second slash


                يمكن أن يكون ترتيب First slash هو (الثاني إذا كان /0) وَ Second slash هو (الرابع إذا كان /0/0) فنأخذ قيمة الوسط فقط


                يمكن أن يكون ترتيب First slash هو (الثاني إذا كان /0) وَ Second slash هو (الخامس إذا كان /00/0) فنأخذ قيمة الوسط فقط


                يمكن أن يكون ترتيب First slash هو (الثاني إذا كان /0) وَ Second slash هو (السادس إذا كان /000/0) فنأخذ قيمة الوسط فقط


 


                يمكن أن يكون ترتيب First slash هو (الثالث إذا كان /00) وَ Second slash هو (الخامس إذا كان /0/00) فنأخذ قيمة الوسط فقط


                يمكن أن يكون ترتيب First slash هو (الثالث إذا كان /00) وَ Second slash هو (السادس إذا كان /00/00) فنأخذ قيمة الوسط فقط


                يمكن أن يكون ترتيب First slash هو (الثالث إذا كان /00) وَ Second slash هو (السابع إذا كان /000/00) فنأخذ قيمة الوسط فقط


 


                يمكن أن يكون ترتيب First slash هو (الرابع إذا كان /000) وَ Second slash هو (السادس إذا كان /0/000) فنأخذ قيمة الوسط فقط


                يمكن أن يكون ترتيب First slash هو (الرابع إذا كان /000) وَ Second slash هو (السابع إذا كان /00/000) فنأخذ قيمة الوسط فقط


                يمكن أن يكون ترتيب First slash هو (الرابع إذا كان /000) وَ Second slash هو (الثامن إذا كان /000/000) فنأخذ قيمة الوسط فقط


 


 


 


الحالة الثالثة (رقم الصنف-ItemSort): تقع يمين Second slash


         لتحقيق ذلك وعدم التداخل مع الحالة الثانية لزم استخراج  First slash & Second slash والبحث يمينهما فنعمل على Loop التالي


                يمكن أن يكون ترتيب First slash هو (الثاني إذا كان /0) وَ Second slash هو (الرابع إذا كان /0/0) فنأخذ قيمة اليمين فقط


                يمكن أن يكون ترتيب First slash هو (الثاني إذا كان /0) وَ Second slash هو (الخامس إذا كان /00/0) فنأخذ قيمة اليمين فقط


                يمكن أن يكون ترتيب First slash هو (الثاني إذا كان /0) وَ Second slash هو (السادس إذا كان /000/0) فنأخذ قيمة اليمين فقط


 


                يمكن أن يكون ترتيب First slash هو (الثالث إذا كان /00) وَ Second slash هو (الخامس إذا كان /0/00) فنأخذ قيمة اليمين فقط


                يمكن أن يكون ترتيب First slash هو (الثالث إذا كان /00) وَ Second slash هو (السادس إذا كان /00/00) فنأخذ قيمة اليمين فقط


                يمكن أن يكون ترتيب First slash هو (الثالث إذا كان /00) وَ Second slash هو (السابع إذا كان /000/00) فنأخذ قيمة اليمين فقط


 


                يمكن أن يكون ترتيب First slash هو (الرابع إذا كان /000) وَ Second slash هو (السادس إذا كان /0/000) فنأخذ قيمة اليمين فقط


                يمكن أن يكون ترتيب First slash هو (الرابع إذا كان /000) وَ Second slash هو (السابع إذا كان /00/000) فنأخذ قيمة اليمين فقط


               يمكن أن يكون ترتيب First slash هو (الرابع إذا كان /000) وَ Second slash هو (الثامن إذا كان /000/000) فنأخذ قيمة اليمين فقط


 


 


 


 


فيكون الحل كما في صورة الاستعلام أدناه:


 


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


 


post-129354-0-29430200-1403532479.jpg


 


بيانات الاستعلام بعد الفرز


 


post-129354-0-33825000-1403532180.jpg


 


وفقك الله


 


أبومحمد


 


PMS_Item Code division.rar


 


1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

3/4

اى مجموعة 4 و منها مجموعة فرعية 3 فلم يفهم الاستعلام سوى رقم المجموعة و تجاهل رقم المجموعة الفرعية بمعنى أخر الكود السابق يفترض انة يجب ان تكون عدد / هو 2 و ليس 1 فاذا لاى سبب كان كود الصنف مكون من عدد واحد سلاش مثل 4/10 فلا يعمل المشكلة الثانية كانت فى ان الكود السابق طويل جدا و احيانا لا يمكن كتابتة داخل نافذة تصميم الاستعلام عندما يكون اسم الحقل لكود الصنف ناتج من الربط بين جدولين مثلا

Table1.itemcode

فبعد تعديل الكود تظهر رسالة ان نص الاستعلام  طويل جدا و لا يمكن استخدامة داخل الاستعلام

لكن كل ما سبق لا يمنع ان الكود السابق الفكرة فية جيدة جدا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مرحباً بك أحمد


 


يلزمك رفع مثال


فيه جميع احتمالات إدخال البيانات


ليتم النظر لأفضل حل يناسبك


 


مشكلتك أنك لم ترفع مثال


فتم افتراض مثال بناء على شرحك السابق


لا تبخل على نفسك بالمنفعة


أبحث عن جميع الاحتمالات الممكنة لمشكلتك


فقط أرفعها وأبشر بالخير


 


تحياتي


أبو محمد


0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اسف لعدم رفع مثال ارفقت مثال المطلوب فية تعديل استعلام رصيد المخزن ليقوم بترتيب الاصناف حسب علامة / اذا كان موجودة و الاستعلام اسمة betweentodate

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

 

ex1.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي أحمد ،

 

أولاً اود تنبيهك أن البيانات ليست منظمة أساسا لتفرز بالطريقة التي تريدها وتحتاج إلى تنظيم أكثر من ذلك ، فمثلا : لديك بعض الأدوات مصنفة كمجموعة رئيسية فقط ، وبعضها كمجموعة رئيسية وجزئية وبعضها تصل إلى التصنيف.

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

 

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

 

سأقترح عليك هذا الاقتراح قد يفيدك في ذلك:

 

  • ابدأ أولاً تخطيط الفرز بالورقة والقلم للتخطيط  :calc: بأقصى عدد للمجموعات مثلا إذا كانت مجموعاتك في الفرز 10 مجموعات أو أكثر فتكون خانة المجموعة من خانتين 00 حتى تستوعب الرقم وبذلك تفتح لك آفاقا حتى 99 مجموعة للتصنيف ، وعليك أيضاً أن تفكر في المستقبل القريب والبعيد إذا اردت أن تكون الفائدة مستمرة ولا تواجه مستقبلا نفس هذه المشكلة الحالية.
  • ​​كرر الخطوة السابقة مع المجموعة الجزئية ، ولاحظ كل خانة جديدة توسع لك آفاق التوزيع ، فلو كانت هذه من ثلاث خانات 000 وطبعا باحتساب الصفر كأول عدد لوجود أدوات مصنفة تحت المجموعات فقط وحتى أقصى رقم 999 ستجد أن لديك 1000 رقم للتصنيف.
  • وكرر نفس الخطوة مع رقم الصنف ، وبنفس الفكرة لتجد لديك قد وحدت التصنيفات كلها على القالب 00/00/000 أو 00/000/000 فيكون مثلا اللأداة التي له الرقم 6 يصبح 06/000/000 والأداة التي لها رقم 2/3/4 تصبح 02/003/004 والأداة التي لها رقم 4/3 تصبح 04/003/000.

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

 

:thinking:  :thinking:  :thinking:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أشكرك كثيرا فقد انجزت المطلوب تماما و اشكرك ايضا على صبرك فى متابعة الموضوع عاجز عن شكرك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .