• 0
xcode

كيفية اجراء فرز للبيانات بناء علي مجموعة من المتغيرات

سؤال

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

لقد قمت بأعداد كل شئ وعليكم فقط كتابة الكود الذي سيقوم بعملية الفرز.  "برجاء مراجعه المرفقات"

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

Fdata.rar

0

شارك هذا الرد


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

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

  • 0

الاخ العزيز موضوعك مكرر ولكن بصيغة اخرى ولكنها صحيحية او مقبولة وذات طرح شامل للفرز

اولا : اين الايعاز الذي توصلت لهُ لكي نعدل عليه او نختصره اذا امكن 

ثانيا ً:

يمكنك تنفيذ الفرز لبيانات عن طريق  SET FILTER TO  مع تثبيت المتغيرات والالفرز حسب  ويمكنك من دمج دالات الشرط معها مثل IF

ويمكن ايضا تنفيذها مع لغة الاستعلام SQL وبطبيعه الحال توفر الشروط لها 

ويمكنك تنفيذها من خلال الدالة كثيرة مثل DO WHILE    او   SCAN    او  LOCAT FOR  وغيرها ويمكنك ايضا استخدام مع BROWSE  نفسها ولكن لا تفيد الاخيرة مع الشبكة او GRID  للعرض داخل النماذج

 

 

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

انتظر منك طريقتك وان شاء الله خيرا 

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

تحياتي للجميع 

0

شارك هذا الرد


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

اخي العزيز لقد توصلت الي الحل ولكني اردت عرض الموضوع لمعرفة افكار اخري ومشاركة ما توصلت الية مع الاعضاء عندما واجهتني هذة المشكلة منذ مدة طويلة استخدمت if condition  و do case ,ولكن كنت اضطر لكتابة العديد من السطور نظرا لتعدد الاحتمالات واخيرا توصلت الي الطريقة المرفقة.

 

برجاء مراجعة المرفقات و شكرا علي الاهتمام والمتابعة :).

fdata.rar

0

شارك هذا الرد


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

اخي العزيز

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

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

 

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

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

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

وهو اقتراح لا اكثر 

تحياتي للجميع 

0

شارك هذا الرد


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

اقتراح جميل وانا اقوم بتنفيذة ولكن مع تعديل بسيط حيث جائتني فكرة اخري ولكن اتمني ان استطيع تنفيذها وهيا عمل الفرز علي بيانات موجودة في list box و ليس combo box

0

شارك هذا الرد


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

اخي العزيز لقد حاولت ان تتم عملية الفرز بناء علي مجموعة من البيانات موجود في listbox وقد استخدمت طريقتين ولم انجح فبرجاء مراجعة المرفقات .

fdata.rar

0

شارك هذا الرد


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

اخي العزيز الطريقة سهله ولكن هنالك قلة تركيز 

عندما تكون متغير من قيمة القائمة فمثلا تكون القيمة 'lion' وانت تقارن مع قيمة lion فان النتيجة هي .F. 

لذلك يجب ان تحول قيمة المتغير من 'lion' الى lion  عند البحث عن قيمة lion 

حسنا اليك التعديل على ايعازك فقط او تعديل على طريقتك فقط لكي تصلك الفكرة  ادرس الايعاز حيداً

ملاحظة : الطريقة هذة في حال وجود اختيار شهر واحد 

ماذا نفعل اذا اردنا اختيار شهرين او اكثر من القائمة 

 

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

تحياتي للجميع 

 

http://flash02.arabsh.com/uploads/flash/2012/10/23/0e33424a60f3.swf

test.zip

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

شارك هذا الرد


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

اخي العزيز برجاء مراجعة المرفقات بصراحة ان جربت اكثر من طريقة 

 

1- الطريقة الاولي وضع الشهور بين ' ' النتيجة .F. 

 
"tempstring = "Jan',Feb','Mar'"
SELECT * FROM test WHERE v_month in (tempstring) INTO CURSOR test1

 

2- الطريقة الثانية وضع الشهور دون ' ' النتيجة Jan فقط

 
"tempstring = "Jan,Feb,Mar"
SELECT * FROM test WHERE v_month in (tempstring)

 

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

fdata.rar

0

شارك هذا الرد


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

اخي العزيز 

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

"'lion iraq '" لاتساوي القيمة "lion iraq " 

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

تكون سلبيه عند البحث عن قيم مشابه لها في الجداول كما انت استخدمتها 

والايعاز (RIGHT(left(tempstring,(LEN(tempstring))-1),(LEN(tempstring))-2))

هو لغرض تجريد القيم من علامات اقتباس من القيم اي المتغير tempstring  انت تعطيهة قيمة بين علامات اقتباس منفردة مثلا ['lon iraq'] ولقد استخدمت الاقواس للتمييز العلامات عند ادخالها في هذا الايعاز الذي يمثل دالتين يقوم بتجريد القيمة من علامات الاقتباس وتكون [lion iraq] وبهذا تستطيع البحث عن قيمة في الجدول اذا كانت القيم بدون علامات كما في قيم الشهور 

وبهذا اقل لك ان استعلامك خاطئة في هذة الحالة او شرط الاستعلام 

وللتوضيح لم اقصد اعمل بهذة الطريقة ..... اتفقنا ؟

 

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

وهذا يثبت ان لغة الاستعلام هي الاختصاص عند تطبيق الاستعلام بها لكونها مختصرة جدا من ايعازات المستخدمه 

ولكن هل هذا الحل الوحيد الذي توصلت اليه بهذة طريقتك المتبعه ؟

 

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

 

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

تحياتي لك وللجميع

0

شارك هذا الرد


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

السلام عليكم

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

test.zip

0

شارك هذا الرد


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

اخي العزيز اسد العراق جربت الكود التالي لازالة علامات اقتباس ولكن لم تحل المشكلة

SET FILTER TO v_month=STRTRAN(tempstring, ['], [])

 

 

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

شارك هذا الرد


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

اخي العزيز

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

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

والاخ jmjms  فكرة حلو ولكن يوجد فيها بعض النقوصات الاضافية وبطريقتة يحل طريقتك وهي عن طريق استخدام الاداءة $ فقط بدل من علامة = عند المقارنه مع المتغيرات  وهي التي اشرت لها بحركة واحدة

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

تحياتي للجميع 

 

 

fdata.zip

0

شارك هذا الرد


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

شكرا لك  اخي العزيز :) 

0

شارك هذا الرد


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

الشكر لله ولجميع الاعضاء

0

شارك هذا الرد


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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

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

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