السلام عليكــم ورحمـة الله وبركاتــه ،،
سامحوني على الاسئلة لاني جديد في البرمجة واعاني من قلة المصادر ....
كيف يمكن ان اجعل نتائج البحث تظهر بال
grid
اعتمادا على مدخلات
وهل يمكن جعل التقرير يظهر في ال
grid
وشكرا جزيلا مقدما
السلام عليكــم ورحمـة الله وبركاتــه ،،
سامحوني على الاسئلة لاني جديد في البرمجة واعاني من قلة المصادر ....
كيف يمكن ان اجعل نتائج البحث تظهر بال
grid
اعتمادا على مدخلات
وهل يمكن جعل التقرير يظهر في ال
grid
وشكرا جزيلا مقدما
السلام عليكــم ورحمـة الله وبركاتــه ،،
للبحث تستطيع استخدام Sql Command على النحو التالي:
Select * from MyTable where MyField=Thisform.Text1.value into cursor crsResult
طبعا تستطيع تغيير الجملة حسب متطلبات العمل لديك..وأهم شيء هو انشاء جدول مؤقت تخزن فيه النتائج لعرضها في الـ Grid
بعد أن تكون قد نفذت عملية البحث تحدد مصدر بيانات الــ Grid على النحو التالي:
Thisform.MyGrid.RecordSource=[crsResult]
للعلم فانك عند تنفيذ جملة البحث مرة تلو الاخرى فانت تقوم تلقائيا باغلاق واعادة انشاء الجدول المؤقت crsResult
وطبيعة الـ Grid أنه يفقد كل خصائصه المحددة مسبقا في حال تم اغلاق جدوله المصدري وتستطيع تفادي هذه المشكلة عن طرق تغيير الـ RecordSource وجعلها فارغة " "
قبل اعادة عملية البحث، على النحو التالي:
Thisform.MyGrid.RecordSource=[ ] Select * from MyTable where MyField=Thisform.Text1.value into cursor crsResult if _Tally > 0 Thisform.MyGrid.RecordSource=[crsResult] endif
أما لو استخدمت الجدول MyTable مباشرة كمصدر للـ Grid معتمدا على عمليات الفلترة (Set Filter to ) دون فتح واغلاق الجدول فلا داعي لتكرار عملية اسناد مصدر بيانات الــ Grid
ولا تتردد في طرح أي سؤال ( مسامح دنيا وآخره ) :wink:
مع التحية
أستغفر الله العظيم و أتوب إليه
وعليكــم السـلام ورحمة الله وبركاتـه..
اشكرا جزيل الشكر وانا كنت متاكد بان الجواب الوافي عندك
شكرا مرة ثانية
وبالنسبة للاسئلة ... انت اهل لهذا :happy:
تحياتي
العفو اخي الكريم...هذا والله من ذوقك
وان شاء الله أنه يساعدني وأحاول أعطي كل مفيد...
مع التحية
تم تعديل هذه المشاركة بواسطة Shadowz في 2 سبتمبر 2009 في 01:18
أستغفر الله العظيم و أتوب إليه
السلام عليكــم ورحمـة الله وبركاتــه ،،
اشكرك جزيل الشكر على هذا النموذج الرائع اخي الفاضل
وقد وفيتم وكفيتم
ضاعف الله اجوركم في هذا الشهر الكريم ، ورزقكم مغفرته ورضوانه وقربه
تحياتي
السلام عليكم
ماذا يفيدنا هذا الكود
STORE SPACE (1) TO f
تحت الاجراء init
الموضوع في الفورم
وتحياتي
وعليك السلام اخي الفاضل :
اولا هذا الامر ما له علاقة بالموضوع كنت انا مخلي في الفورم احتاجه في برنامج اخر تكميلي .
ثانيا: نحن بخدمتك انت اسئل وإن شاء الله نجيب.
السلام عليكــم ورحمـة الله وبركاتــه ،،
اخواني الاعزاء
لدي كم سؤال على نموذج انشاته وفيه بعض المشاكل تخض ال
grid
1- عند حذف سجل من النموذج يتحول الى لون ابيض،ما العمل حتى يحافظ الكرد على عرضه للمعلومات؟؟
2- كيف يمكن المحافظة على امتداد النموذج الرئيسي مع النماذج الباقية في نفس المشروع عند تغير مكان المشروع ؟؟
3- لماذا لا يمكن اضافة اكثر من سجل من النافذة المنبثقة من النموذج الرئيسي ، حيث تظهر رسالة عدم توافق البيانات
قمت برفق المشروع ...
واني ممتن منكم كثيرا
وعليكــم السـلام ورحمة الله وبركاتـه..
بالنسبة للنقطة الاولى :
كما أخبرتك سابقا فان الـ Grid مرتبط بشكل مباشر مع الـ RecordSource الخاص به، فاذا قمت باغلاق الجدول...يفقد الـ Grid خصائصه التي قمت بتحديدها له مسبقا، ويظهر باللون
الابيض كما ذكرت، لذا عليك ان تتعامل معه بنوع من الحذر من هذه الناحية
ظاهريا انت هنا لم تقم باقفال مباشر للجدول، ولكنك تعمل ما هو أفظع من ذلك :hot: وذلك باستخدامك للامر Pack بعد اجراء عملية الحذف، وللتوضيح اليك آلية عمل هذا الامر:
1. يقوم بتخزين السجلات الغير محذوفة في جدول مؤقت
2. يقوم بحذف الجدول الاصلي كاملا وانشاء جدول جديد بدلا منه
3. يقوم باعادة تخزين البيانات من الجدول المؤقت الى الجدول الجديد
4. يقوم باعادة فهرسة الجدول الجديد
هذا بالاضافة لكونه يتطلب فتح الجدول بشكل حصري Exclusive ( أي من قبل مستخدم واحد فقط )
النقطة الثانية : لمناداة كافة البرامج والنماذج التابعة لمشروع واحد يجب عليك تحديد مكان المجلد الافتراضي الموجودة به ملفات المشروع او الجداول المرتبطة به وتوجيه الفوكس برو له
ولتحقيق ذلك عليك باستخدام الامر Set Default to C:\MyProject، وبقليل من المراوغة مع الفوكس تستطيع تثبيت أمر لتوجيه الفوكس للمجلد المراد استخدامه على النحو التالي:
DefaultPath=justpath(fullpath(sys(16))) set default to (DefaultPath)
ويفضل وضعه في برنامج منفصل ليكون مفتاح المشروع، حيث قد تضيف له بعض الاوامر اللازمة أيضا
النقطة الثالثة : ان حقول العمر والهاتف في الجدول حقول رقمية، وما تقوم بعمله في اجراء الحفظ بعد عملية الــ Insert من تفريغ للـ TextBox باسناد قيمة نصية له بواسطة " "
يقوم باعادة تعريف الـ Textbox على انه نصي وليس رقمي لذا يظهر لك الخطأ عند محاولة الحفظ، والتالي هو الصحيح:
thisform.text1.Value ="" thisform.text2.Value = 0 thisform.text3.Value = 0
اليك المثال بعد التعديل..Grid_test.rar
مع التحية
تم تعديل هذه المشاركة بواسطة Shadowz في 6 سبتمبر 2009 في 00:38
أستغفر الله العظيم و أتوب إليه
بســم الله الـرحمــن الرحيــم
اجت كالعادة....
بالحقيقة ما كنت اعرف الامر
:angry:
pack
، يعمل العمايل هذي ولا آلية عملو وبارك الله فيك الان اصبح الامر واضح عندي تماما اضافة الى انك علمتني طريقة جديدة في ظهور النماذج بدل الاختفاء والظهور مرة ثانية
صدقني اجوبتكم بتنحفر بعقلي واني كلي لهفة لتعلم هذه اللغة وغيرها من لغات البرمجة
تحياتي الحارة الك يا اخي العزيز
:lol:
بسم الله الرحمن الرحيم
السلام عليكم اخي
الاخ عبد الله لقد اجابك عن اسئلتك.. واوضحها بنفس المثال واود ان اضيف شئ على مثال اذا سمح اخي عبد الله ان اضيفها.
اولا: عندما نحذف القيد يبقى القيد موجود في GRID وقد يتسال الــuser لماذا بقى القيد وقد يتصور خطا في البرنامج.
ثانيا :لماذا لم ترفع DELETE MARK التي تبعد الــuser من حذف اي قيد الا بالضغط على الايقونة الخاصة بالمسح.
واليك نفس مثال.
السلام عليكــم ورحمـة الله وبركاتــه ،،
muhnd-vfp....العفو أخي العزيز... وان شاء الله بتتعلم هذه اللغة وأي لغة أخرى باحتراف طالما وُجد لديك العزم والتصميم...
وان شاء الله الشباب بالمنتدى ما بقصروا معك.
أخي العزيز جواد،،
اقتباسواود ان اضيف شئ على مثال اذا سمح اخي عبد الله
يا رجال الدار دارك... ما بدك عزومة
اقتباساولا: عندما نحذف القيد يبقى القيد موجود في GRID وقد يتسال الــuser لماذا بقى القيد وقد يتصور خطا في البرنامج
أخي الكريم جواد كما تعلم فان عملية حذف السجل من الجدول لا تكون نهائية ( طالما لم نستخدم الامر Pack )....انما يتم التأشير على هذا السجل بأنه محذوف...
وكل ما علينا هو ادراج الامر Set Deleted On في بداية البرنامج وذلك للايعاز للفوكس برو باخفاء هذه السجلات المفروض أنها محذوفة...
وبذلك يختفي السجل المحذوف ولا يعود للظهور الا بعد عكس الامر الى Set Deleted Off
وكل ما يتبقى هو التحديد الصحيح للسجل المطلوب التوجه اليه بعد عملية الحذف...بالاضافة للـ Refresh المطلوب حسب الحالة.
وبذك يختفي السجل نهائيا.
مع التحية
تم تعديل هذه المشاركة بواسطة Shadowz في 7 سبتمبر 2009 في 01:13
أستغفر الله العظيم و أتوب إليه
اخواني الاعزاء اعتقد اني حصلت على واحة من المعرفة الخاصة بلغة البرمجة
وهي هذا المنتدى وبالاخص الاخوة عبد الله وجواد
وقد دعوت الله بان يسهل علي تعلم البرمجة لحبي الشديد لها
واني افتخر شديد الافتخار بالنقاش الجميل الذي اتحفني بمعلومات جديدة
تحياتي الخالصة
اخوكم مهند
تعقيبا على رد الاخ عبد الله
انا استعملت الامر
Set Delete on
وكل شي تمام
وتعقيبا على رد الاخ جواد
عطلت خاصية Delete Mark في خصائص النموذج للتخلص من الحذف اليدوي لللسجلات على الـ(Grid)
واعتقد اني استطيع استعمال الامر pack في نهاية العمل عند الاغلاق لتثبيت التغييرات او الابقاء عليها فهي لاتظر ما دام الامر delete شغال
هذا ما استنتجته من النقاش اعلاه
وفيكم البركة والله
تحياتي
السلام عليكــم ورحمـة الله وبركاتــه ،،
العزيز مهند.... أضمن لك ولأي مبتدئ قام بقراءة ما في المنتدى من مواضيع ( على الرغم من قلتها بالنسبة لمنتديات اللغات الاخرى )
بأن يصل لمرحلة ما فوق الجيد بعد برنامجين أو ثلاثة حتى لو كانت صغيرة الحجم... وبقليل من الممارسة سيصل لغايته بالتمكن من عمل أي برنامج يريد بشكل احترافي
فالمنتدى مليء بما هو مفيد ( الاخوة الكرام .. لم يقصروا أبداً في اثرائه بالمواضيع والامثلة الممتازة.. وان شاء الله نعود ونشوفهم معنا )
وان شاء الله الاخ جواد معانا حاليا وما يقطعنا...
اقتباسواعتقد اني استطيع استعمال الامر pack في نهاية العمل عند الاغلاق لتثبيت التغييرات او الابقاء عليها
التغييرات ثابتة حتى ولم تقم بعمل Pack فأنت لن ترى السجلات المحذوفة أبداً طالما استخدمت Set Deleted On
ولكن أين الفائدة من Pack ؟؟؟؟
الفائدة أنها تقوم بحذف السجلات نهائيا من الجدول...مما يؤدى الى تقليل عدد السجلات فيه وبالتالي اختصار الوقت أثناء تنفيذ الكثير من العمليات مثل البحث وخلافه،
كما أنها تقوم بتقليل حجم ملفات الـ Fpt الخاصة بحقول الــ Memo، بالاضافة لاعادة الفهرسة تلقائيا...
وطبعا النتيجة الاخيرة...توفير في حجم المساحة المستخدمة من الـ Harddisc
وبدلا من استخدام الامر في كل مرة تقوم فيها باقفال البرنامج... تستطيع عمل نموذج أو برنامج صغير تقوم بتنفيذه مرة بالاسبوع أو حسب الحاجة
وخاصة أن استخدامه كما قلت لك سابقا يعتمد على فتح الجدول بشكل حصري Exclusive.... فتخيل لو أن لديك عدة مستخدمين يستخدمون نفس الجدول Shared، فماذا سيحدث....!!
مع التحية
أستغفر الله العظيم و أتوب إليه