المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تعلم لغة الدكسترتي


humam
10-Jul-2011, 01:45 PM
بسم الله الرحمن الرحيم
اود ان ابداء مشاركتي في هذا المنتدى ولدي والحمدلله خبرة جيدة في لغة الدكسترتي وقدقمت بتصميم العديد من المشاريع في هذا المجال وكمدخل ان العمل كمطور للجريت بلينز سوف يفتح امامك خيارت متاحة وهي استخدام
VBA & Modifier
او
Dexterity

الخيار الاول يفضل استخدامه مع المتطلبات البسيطة نسبيا وهو غير مفضل مع المتطلبات المعقد كتصميم Module جديد يعمل مع الجريت بلينز وذلك لعدة اسباب اهما انه عندما تقوم بتطوير Module يجب ان تاخذ النسخة بنظر الاعتبار اي GP Version لانك اذا صممت مشورع للعمل مع GP8مثلا ثم قام العميل بتطوير نسخة GP الى GP9 عند ذلك سوف تحتاج الى تطوير المشروع الذي صممته وهنا تظهر المشاكل لان كل نسخة من GP سوف يكون فيها اختلاف عن النسخة السابقة في عدد وموقع الحقول في النافذة الواحدة وقد يؤدي هذا الى ظهور حقل جديدمكان الحقل الذي اضفته بواسطة Modifier وهكذا ولكن في نهاية هذا الموضوع سوف اوضح في اي حالة نضطرفيها الى هذاالخيار.

الخيار الثاني هو استخدام لغة الدكسترتي وهي لغة معقدة نسبياوغير مرنة مثل باقي لغات البرمجة الاخرى ولكن من الممكن تعلم هذه اللغة عن طريق الاكثار من التمارين والاطلاع على الوثائق المرفقة مع هذه اللغة وهي تعطي نطاق واسع من المعلومات ومن اهمها:
IG.pdf
PRGV1.pdf
PRGV2.pdf


الان يجب ان نفصل قليلا في المشاريع التي يمكن تطويرها بواسطة الدكستيرتي:
1-Stand Alone Application
2-Integrating Application

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

اما النوع الثاني Integrating Application وهو الاكثر ريادة في سوق العمل وفي هذا النوع سوف تعمل على تطوير مشروع يتفاعل مع الجريت بلينز ويستخدم وظائف الجريت بليز المختلفة وهنا ينقسم هذا النوع من المشاريع الى قسمين هما :
1-Vertical Enhancement
2-Customizations



Vertical Enhancement

في هذا النوع من المشاريع يتضمن تكوين نوافذ جديدة وتقارير جديدة وتقوم بتكوينها باستخدام Main Product Dictionary وتستخدم كل Resourcesالمتوفرة فيه وبذلك يظهر الفرق عن النوع الاول وهو Stand Alone حيث في ذلك النوع عليك ان تستخدم New Dictionary اي خالي من اي مصادر وعليك ان تقوم بتكوين كل المصادر التي سوف تستخدمهافي مشروعك اما Vertical Enhancement تستخدمMain Dictionary وبذلك تجد العديد من المصادر جاهزة وفي متناول يديك وكذلك سوف تقوم باضافة مصادرك الجديدة الى المصادر الموجودة اصلا .

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


قبل البدء بكتابة الشفرات البرمجية هناك بعض المصطلحات المهمة يجب على المطور ان يفهمها
Resources
Dictionary
Runtime Engine
Dexterity Engine

ٌالمصادر او Resources
ونقصد بها المكونات التالية
Data Type نوع البيانات
Fields الحقول
Tables الجداول
Windows النوافذ
Forms النماذج
C:\Documents and Settings\hummam\My Documents\My Pictures\arabgp

Monzer Osama
10-Jul-2011, 02:09 PM
موضوع رائع أخي همام .. يستحق التثبيت ...

humam
10-Jul-2011, 02:48 PM
Dexterity DIC
وهو عبارة عن قاموس يستخدم من قبل Dexterity Application وهو يحتوي على مصادر يستخدمها برنامج Dexterity Application لتكوين Dictionaries جديدة وبنفس الوقت يستخدم من قبل Runtime Engine كما ذكرت سالبقا لكي يعمل على ترجمة المصادر الموجودة داخل القاموس الى صيغة تفاعلية مع المستخدم لذا يعتبر هذا الملف Dexterity .DIC مهم جدا وتجده دائما في مجلد الجريت بلينز مع باقي الملفات الاخرى .
هنا المقصود ب Dexterity Application هو برنامج الدكسترتي الذي سوف تستخدمه لتكوين Dictionary يحتوي على التطويرات التي تريد اضافتها الى جريت بلينز لذا اود ان يكون هذا الامر واضح .

الان اعتقد ان المكونات المختلفة اصبحت واضحة للجميع وخصوصا مفهوم Dictionary الذي يرتكز عليه برنامج الجريت بلينز الخطوة القادمة سوف تكون هي عملية تنصيب Dexterity Application اي البرنامج الذي سوف نستخدمه لتغيير محتوى Dictionary موجود وهذا النوع من التطوير يعرف ب Integrating Application
ولكي تكون قادر على القيام بمشاريع من نوع Integrating Application
تحتاج الى تنصيب Dexterity Application استخدم القرص الثاني للجريت بلينز وفي مجلد Tools سوف جد هناك مجلد اخر اسمه DEX وداخل هذا المجلد اختر الملف التنفيذي وعملية التنصيب بحد ذاتها سهلة نسبيا ولكن هناك نقطة مهمة خلال التنصيب وهي عندما يطرح عليك برنامج التنصيب ان تختار اسم التطيبق والمكان المراد خزن التطبيق فيه هنا يحبذ ان تغير الاسم المقترح من Dexterity الى Dexterity9 اذا كنت تنصب Dexterity Application لجريت بلينز GP9 والى Dexterity8 اذا كنت تنصب Dexterity Application لجريت بلينز GP8 وهكذا ونفس الشيء تعمل بالنسبة الى المسار الذي تريد حفظ البرنامج فيه يعني غير المسار المقترح من
C:\Program Files\Microsoft Dexterity الى
C:\Program Files\Microsoft Dexterity9
وهكذا اما السبب وراء ذلك وهو من خبرتي المتواضعة انك قد تحتاج للعمل مع اكثر من نسخة GP يعيني قد يكون احد الزبائن الذين تريد تطوير مشروع لهم يستخدم GP8 واخر GP9 لذا لكل نسخة GP يجب ان تستخدم النسخة الخاصة بها من الدكسترتي وقد يقول احدهم ما المشكلة في ذلك ؟ هنا الجواب انك اذا نصيت دكسترتي لجريت بلينزGP8 وبدون تغيير المسار ونصبت دكسترتي لGP9 ايضا بدون تغيير المسار سوف تنزل النسخة الاخيرة مكان النسخة القديمة ويصبح عندك فقط دكسترتي ل GP9 ونقطة اخرى تسهل عليك اختيار البرنامج الذي تريد استخدامه اي هل تريد تشغيل DEX9 او DEX8 لان شكل الايقونة لا يختلف في كلا الحالتين ومن المهم جدا اخيار برنامج DEX (سوف استخدم هذا المصطلح للاشارة الى Dexterity Application مع رقم لنسخة GP للسهولة)
المناسب اي اذا كان عندك Dictionary لGP8 لايمكنك تطويره باستخدام DEX9 وهكذا .
ملاحظة اخيرة عندما تقوم بتنصيب برنامج DEX8 وDEX9 عند النقر المزدوج على القاموس سوف يفتح برنامج DEX9 بصورة ذاتية حتى اذا كان القاموس هو GP8 لحد هنا لاتوجد مشكلة يمكنك استخدام DEX9 لتصفح القاموس GP8 مثلا تشاهد الكود الموجود فية والنوافذ ولكن لا تحاول ان تغير اي شيء لان هذا سوف يؤدي الى خلل في Dictionary وافضل اذا حصلت هذه الحالة معك ان تقوم باغلاق البرنامج مباشرة وفتح قاموس GP8 بالطريقة الصحيحة وهي شغل DEX8 اولا ثم اختر الDictionary المطلوب من نافذة اخيتيار Dictionary
هذا كل ما اريد قوله عند عملية التنصيب بحد ذاتها .

أحمد الغامدي
10-Jul-2011, 03:04 PM
رائع
شرح رائع جداً أسأل الله أن يبارك في علمك...
يا أخي أول مرة أشوف دروس تعليم ديكستريتي باللغة العربية

لكن لو في صور كان طلع الموضوع أكثر من رائع

humam
10-Jul-2011, 03:04 PM
شكر اخي منذر واتمنى ان تكون المعلومات التي سوف اطرحها ذات فائدة للجميع

humam
10-Jul-2011, 03:08 PM
الشكر لله اخي احمد حاولت ان اضع صور ولكن لم اوفق انشاء الله سوف ارفق الصور اذا كانت ضرورية في المواضيع القادمة

حامد
10-Jul-2011, 03:12 PM
شكرا استاذ همام

موضوع بالفعل أكثر من ممتاز

كما قال الاخوة الصور تساعد الكثير في فهم المسألة

وفقك الله

humam
10-Jul-2011, 04:12 PM
Dexterity Utilities
وهو عبارة عن تطبيق يتم تنصيبه مع برنامج Dexterity Application وله في الواقع استخدامات عديدة منها تطبيقات تعتبر متقدمة في برمجة الدكسترتي مثل عملية المقارنه بين Dictionaries و عملية Upgrade لل Dictionary من نسخة الى اخرى وهو موضوع مهم جدا وغيرها من التطبيقات المتقدمة الاخرى والتي صراحة لا احاول الاطالة فيها لكي لا اعقد الامور وانشاء الله اعود لها لاحقا .
اما الاستخدام الاساسي لهذا البرنامج والذي يجب ان يتقنه كل من يريد تعلم الدكسترتي هو عملية الحزم اي عمل Package للمشروع بعد اكمل كل مراحل التطوير التي سوف اذكرها لاحقا وتعتبر هذه الخطوة الاخيرة في تطوير وتوزيع المشروع لانك عادة عندما تقوم بتصميم مشروع وباي لغة برمجية سوف تعمل برنامج تنصيب لتوزيع مشروعك او لتجهيز المشروع للزبون هنا في الدكسترتي سوف نستخدم هذا التطبيق لعمل Chunk File وهو عبارة عن الملف الذي سوف تقوم بتكوينه وارساله للزبون لكي يقوم بدوره بتنصيب مشروعك على برنامج الجريت بلينز
وسوف اذكر لاحقا تفاصيل اخرى عن ملف Chunk File ولكن اود في البداية ان اكمل شرح بعض المفاهيم التي يجب ان يستوعبها المطور اولا.




Multidictionary environment

ان Runtime Engine الذي ذكرته في البداية (وعمله ترجمة القاموس من مصادر(كلمات)غير مفهومة منقبل المستخدم الى واجهة تفاعلية ) يمتلك خاصية العمل ضمن محيط يحتوي على اكثر من قاموس Dictionary ما المقصود بهذه العبارة ؟ في الحقيقة عندما تقوم بتصميم مشروع من نوع Integration Application وسواء كان من نوع Vertical Enhancement او Customizations وعند اكمال المشروع وتنصيبه في برنامج الجريت بلينز سوف يؤدي الى تكوين Dictionary جديد في مجلد الجريت بلينز الان كمثل لو فتحت مجلد الجريت بلينز ورتب الملفات حسب النوع واظهر امتداد الملفات من خواص Folder Options سوف تلاحظ وجود عدد من Dictionaries ويختلف هذا العدد باختلاف مكونات الجريت بلينز الاضافية التي تقوم بتنصيبها مثل Service Call او Account Analysis او HR وغيرها والتي نطلق عليها بلغة المطورين Third Party Product
سوف تجد اولا
Dynamics.DIC وهو يمثل القاموس الرئيسي لبرنامج الجريت بلينز وهو قلب هذا التطبيق
SRVCADV.DIC وهو قاموس اخر تجده اذا نصبت Service Call
POE2277.DIC وهو قاموس اخر تجده اذا نصبت Purchase Enhancement
DEX.DIC وقد شرحت سابقا عمل هذا القاموس
DynUtils.dic وهو خاص ببرنامج Dexterity Utilities
والقائمة قد تطول او تقصر تبعا للمكونات الاضافية التي تنصبها مع الجريت بلينز وقد يكون مشروعك في المستقبل احدها وقد تسمي هذا Dictionary مثلا MYFST.DIC او اي اسم معبر انا حاليا استخدم اسم مختصر للمشروع مثلما تفعل المايكروسوفت.
الان نعود الى مصطلح Multidictionary environment وقد اصبح واضح .اذن ان Runtime Engine سوف تقع عليه مسؤولية ترجمة اكثر من قاموس واحد وبنفس الوقت وهذا مايقوم به فعليا حيث يقوم بترجمة المصادر التي تأتي من Dictionaries مختلفة ويقوم بمزجها ويحولها الى صيغة تفاعلية لايشعر معها المستخدم بانه يتعامل مع اكثر من برنامج بنفس الوقت (وهو ما يحصل حقيقة ) بل يشاهد برنامج واحد هو الجريت بلينز.

عماد زيد
10-Jul-2011, 04:13 PM
السلام عليكم
الأخ همام من الشباب يللي طورلنا موديول مرتب جداً بشركتنا و كان فعلاً من المودويولات الناجحة جداً.
تحية للأخ همام و متابع معك إن شاء الله.

السيد سمارت ليست
10-Jul-2011, 04:53 PM
بسم الله الرحمن الرحيم


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




أخي الكريم ليه طيب ما بننسخ الملف يللي بدنا نعدل عليه وهوي Dynamics.dic ، وبنعدل على الملف المنسوخ ، بعدين بنشير له من اللانش فايل ، وبنجرب على النسخة مو أحسن ما نقعد نشتغل على الأصل وندخل في الحذر؟؟

humam
10-Jul-2011, 05:08 PM
السلام عليكم
الاخ عماد ان نجاح المشروع جاء نتيجة لثمرة التعاون بيننا وما كان المشروع لينجح لولا النصائح السديدة من جانبكم والتي ساعدتني كثيرا في التغلب على العقبات التي واجهتني اثناء تطوير المشروع .

humam
10-Jul-2011, 05:37 PM
ماذا يحصل عندما تقوم بتصميم مشروع Integration Application

الخطوة الاولى سوف تقوم ببناء مشروعك في قلب القاموس الاساسي اي Dynamics.DIC وذلك عن طريق قامك اولا باخذ نسخة من هذا القاموس من مجلد الجريت بلينز(لاحقا اوضح الخطوات الصحيحة لبدء العمل ) ونسخه في مكان اخر على القرص الصلب ثم سوف تستخدم برنامج الدكسترتي لتطوير مشروعك في هذا القاموس وقد تقوم باضافة مصادر جديدة الى القاموس مثل نماذج جديدة او نوافذ جديدة او حقول او جداول او غيرها من المصادر المختلفة اضافة الى انك سوف تستخدم مصادر الجريت بلينز الاساسية الموجودة في هذا القاموس .
هناك معامل مهم اسمه Resource ID حيث ان كل مصدر له معرف وحيد فريد يسمى Resource ID بالنسبة الى المصادر الاصلية اي التي سوف تجدها في القاموس Dynamics.DICسوف يكون رقم Resource ID من 1 الى 20000 وهذا الترقم مهم اما المصادر التي تقوم انت باضافتها الى القاموس سوف يبداء Resource ID لها من 22000 اما ما هي الفائدة من ذلك ؟
هنا عندما تكمل المشروع وتبداء بالتحضير لتوزيعه سوف تستخدم برنامج Dexterity Utilities
لفعل ذلك الان سوف ندخل في التفاصيل ماذا سوف يقوم بفعله هذا البرنامج؟ سوف يقوم بعزل المصادر التي قمت انت باضافتها الى القاموس بعملية نسميها Extract ويضعها في قاموس خاص بها Dictionary جديد تقوم باعطاء اسم له خلال هذه العملية وبتالي يحتوي القاموس الجديد فقط المصادر الجديدة اما مصادر Dynamics.DIC الاصلية (التي رقم Resource ID لها اقل من2001 ) التي استخدمتها في برنامجك لن يتم نسخها الى القاموس الجديد والسبب في ذلك هو ان هذا القاموس Dynamics.DIC سوف يكون موجود اصلا في مجلد الجريت بلينز.
الان الخطوة التالية التي سوف يقوم بها برنامج Dexterity Utilities هو تحويل القاموس الجديد الى صيغة مضغوطة نطلق عليها اسم Chunk File والذي سوف تقوم باعطائه الى الزبون وبدوره يقوم بوضع هذا الملف ذي امتداد CNK دخل مجلد الجريت بلينز وبمجرد تشغيل GP سوف يقوم Runtime Engine بانذار المستخدم بان هناك كود جديدة يجب اضافتها فاذ اختار المستخدم نعم سوف يتم تحويل ملف Chunk File الى Dictionary يحمل نفس الاسم الذي قمت باعطائه له في عملية Extract .

الان عندما يبداء المشروع بالعمل سوف يستخدم المصادر الجديدة الموجودة في Dictionary الجديد وعندما يحتاج الRuntime Engine الى مصادر استخدمتها في مشروعك وهي في الاصل مصادر جريت بلينز اصلية سوف يقوم باخذها من القاموس Dynamics.DIC ويقوم بمزجها مع المصادر القادمة من New dictionary الخاص بمشروعك لتظهر النافذة التي صممتها للمستخدم على انها وحدة واحدة.
الان اود ان اوضح نقطة اختلاف عن مشاريع Stand Alone والتي ايضا يقوم Runtime Engine بدمج مصادرها مع باقي Dictionaries ولكن لا يسمح في هذه الحالة بعملية المشاركة بالمصادر بين القواميس المختلفة .
في نهاية هذه الحلقة قد يتسأل البعض عن الخطوات الفعلية ولماذا لم اتطرق اليها كما سئل الاخ سمارت لست انا في البداية اود ان اوضح المفاهيم لان تطبيق الخطوات سهل ولكن مع الفهم العميق يكون العمل اسهل لذا سوف اوضح كما قلت سابقا الخطوات الصحيحة حسب اعتقادي لكل جزء في المواضيع القادمة انشاء الله.

humam
10-Jul-2011, 05:49 PM
ماذا يحصل عندما تقوم بتصميم مشروع Integration Application

الخطوة الاولى سوف تقوم ببناء مشروعك في قلب القاموس الاساسي اي Dynamics.DIC وذلك عن طريق قامك اولا باخذ نسخة من هذا القاموس من مجلد الجريت بلينز(لاحقا اوضح الخطوات الصحيحة لبدء العمل ) ونسخه في مكان اخر على القرص الصلب ثم سوف تستخدم برنامج الدكسترتي لتطوير مشروعك في هذا القاموس وقد تقوم باضافة مصادر جديدة الى القاموس مثل نماذج جديدة او نوافذ جديدة او حقول او جداول او غيرها من المصادر المختلفة اضافة الى انك سوف تستخدم مصادر الجريت بلينز الاساسية الموجودة في هذا القاموس .
هناك معامل مهم اسمه Resource ID حيث ان كل مصدر له معرف وحيد فريد يسمى Resource ID بالنسبة الى المصادر الاصلية اي التي سوف تجدها في القاموس Dynamics.DICسوف يكون رقم Resource ID من 1 الى 20000 وهذا الترقم مهم اما المصادر التي تقوم انت باضافتها الى القاموس سوف يبداء Resource ID لها من 22000 اما ما هي الفائدة من ذلك ؟
هنا عندما تكمل المشروع وتبداء بالتحضير لتوزيعه سوف تستخدم برنامج Dexterity Utilities
لفعل ذلك الان سوف ندخل في التفاصيل ماذا سوف يقوم بفعله هذا البرنامج؟ سوف يقوم بعزل المصادر التي قمت انت باضافتها الى القاموس بعملية نسميها Extract ويضعها في قاموس خاص بها Dictionary جديد تقوم باعطاء اسم له خلال هذه العملية وبتالي يحتوي القاموس الجديد فقط المصادر الجديدة اما مصادر Dynamics.DIC الاصلية (التي رقم Resource ID لها اقل من2001 ) التي استخدمتها في برنامجك لن يتم نسخها الى القاموس الجديد والسبب في ذلك هو ان هذا القاموس Dynamics.DIC سوف يكون موجود اصلا في مجلد الجريت بلينز.
الان الخطوة التالية التي سوف يقوم بها برنامج Dexterity Utilities هو تحويل القاموس الجديد الى صيغة مضغوطة نطلق عليها اسم Chunk File والذي سوف تقوم باعطائه الى الزبون وبدوره يقوم بوضع هذا الملف ذي امتداد CNK دخل مجلد الجريت بلينز وبمجرد تشغيل GP سوف يقوم Runtime Engine بانذار المستخدم بان هناك كود جديدة يجب اضافتها فاذ اختار المستخدم نعم سوف يتم تحويل ملف Chunk File الى Dictionary يحمل نفس الاسم الذي قمت باعطائه له في عملية Extract .

الان عندما يبداء المشروع بالعمل سوف يستخدم المصادر الجديدة الموجودة في Dictionary الجديد وعندما يحتاج الRuntime Engine الى مصادر استخدمتها في مشروعك وهي في الاصل مصادر جريت بلينز اصلية سوف يقوم باخذها من القاموس Dynamics.DIC ويقوم بمزجها مع المصادر القادمة من New dictionary الخاص بمشروعك لتظهر النافذة التي صممتها للمستخدم على انها وحدة واحدة.
الان اود ان اوضح نقطة اختلاف عن مشاريع Stand Alone والتي ايضا يقوم Runtime Engine بدمج مصادرها مع باقي Dictionaries ولكن لا يسمح في هذه الحالة بعملية المشاركة بالمصادر بين القواميس المختلفة .
في نهاية هذه الحلقة قد يتسأل البعض عن الخطوات الفعلية ولماذا لم اتطرق اليها كما سئل الاخ سمارت لست انا في البداية اود ان اوضح المفاهيم لان تطبيق الخطوات سهل ولكن مع الفهم العميق يكون العمل اسهل لذا سوف اوضح كما قلت سابقا الخطوات الصحيحة حسب اعتقادي لكل جزء في المواضيع القادمة انشاء الله.

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

السيد سمارت ليست
11-Jul-2011, 07:55 AM
أشكرك جزيل الشكر يا أخ همام ونحن متابعين لك

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

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

humam
11-Jul-2011, 09:35 AM
اخي العزيز سمارت ليست
بالنسبة لموضوع Chunk file انا كنت اود صراحة ان اطرح المعلومات بالتسلسل الصحيح لذا اجلت عملية شرح طريقة التنصيب والتفاصيل ماذا يجب ان تفعل بعد نسخ الجنك فايل الىنهاية الموضوع لان التسلسل المنطقي يحتم ذلك ولكن تسالك مهم ولذا يجب ان اوضح لك الان وسوف اذا المعلومات بتفصيل اكثر لاحقا

عندما تقوم بارسال الجنك فايل الى الزبون والذي قد يعمل في محيط Multiuser اي يوجد هناك GP server و GP Client الان على مطور المشروع ان يوجه الزبون او يقوم هو باكمال عملية النتصيب وكما يلي :

تنصيب الجنك فايل على GP Serever

وذلك بسنخ الجنك فايل في نسخة GP وهذا صراحة لايؤدي الى تكوين الجداول في SQL Server لانها ليست وضيفة الجنك فايل بل هو يحتوي على القاموس بصورة مضغوطة
الان كيف نقوم باضافة الجداول الجديدة الى SQL Server هنا تحتاج الى صلاحية DataBase Owner ويتم اضافة الجداول الجديدة الى SQL Server
عن طريق استخدام
File > Mainenance >SQL
في برنامج الجريت بليينز وثم اختر اسم المنتج من قائمة Product واختر اسم قاعدة البيانات وسوف تلاحظ قائمة بجداولك الجديدة اختر كل الجداول ثم فعل الخياران Create TABLE و Create Stored proceduer
ثم Process
ان هذه العملية سوف تضيف الجداول الى SQL serevr وبتالي يصبح الجميع لديهم القابلية للوصول الى هذه الجداول مثل جداول GP الاخرى
ولكن لكي يمكن ل GP client من استخدام المشروع الجديد تحتاج الى تنصيب الجنك فايل على كل Client بعد اكمال التنصيب على السيرفر
ارجو ان يكون هذا الجواب واضح لك اخي سمارت ليست

السيد سمارت ليست
11-Jul-2011, 03:42 PM
يسعدني ردك على تساؤلي


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

ونحن ننتظر مواضيعك ومتابعاتك على أحر من الجمر يا أخ همام

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

humam
11-Jul-2011, 05:05 PM
ألحلقة الرابعة خطوات تصميم مشاريع الدكسترتي Development process

ويمكن ايجاز هذه الخطوات في النقاط التالية وحسب التسلسل التالي :

•Database Development: وتشمل هذه العملية تصميم الجداول والعلاقات فيما بينها وهذا يعتمد على متطلبات الزبون وتشمل هذه العملية تصميم الحقول Fields وتصميم كذلك Data Type لكل حقل وسوف اشرح بالتفصيل الخطوات في الحلقات القادمة.
•Interface design: وتشمل هذه المرحلة تصميم الواجهة التفاعلية مع المستخدم مثل النوافذ وهنا يفضل البدء بهذه المرحلة بعد تصميم قاعدة البيانات رغم ان وثائق الدكسترتي تنص على تصميم واجهة التفاعل في البداية ولكن عمليا ومن الخبرة المتواضعة ان هذا سوف يسسب مصاعب عديدة.
•Script: وضع الكود المناسب والذي سوف يحدد المنطق الذي سوف يعمل به المشروع وهنا تكون الدكسترتي وهي تستخدم لغة السانسكربت مثل باقي اللغات البرمجية الاخرى من ناحية التسلسل المنطقي والجمل البرمجية والتي سوف نأتي على ذكر المهم منها انشاء الله في الامثلة العملية التي سوف نطرحها.
•Reports: تصميم التقارير المرفقة بالمشروع وهنا يمكن استخدام Report Writer او Crystal Report لعمل ذلك.

humam
11-Jul-2011, 05:24 PM
ألخطوات العملية للتصميم :

وهنا سوف ناتي على ذكر الخطوات التي تستخدم عمليا ووفق الطريقة التي اعمل بها واذا كانت عند الاخوان طرق اخرى ارجو ان يتفضلوا بطرحها لنعمل مقارنة وثم نستخدم الاصلاح منها :
• في اي مكان من القرص الصلب اعمل على تكوين مجلد انا اطلق عليه اسم Development ويمكن تسميته اي اسم اخر وداخل هذا المجلد اكون عدد من المجلدات بعدد الزبائن الذين سوف اصمم مشروع لهم واسم المجلد سوف يكون مختصر اسم الزبون وهنا وبما اننا في مرحلة تمارين سوف اسمي هذا المجلد DEXTRN وداخل هذا المجلد اكون مجلدين اخرين احدهما Work والاخر Final اما السبب في ذلك هو ان المجلد Work سوف يحتوي على Dictionary اثناء عملية التطوير وبعد الانتهاء من تطوير المشروع والتي تنتهي بعملية Test in Multidictionary Environment سوف نقوم بنسخ القاموس الى المجلد Final ويبقى هناك لحين طلب الزبون تغييرات على المشروع عند ذلك سوف نبداء بالعمل هذه المرة من القاموس الموجود في Final وهذه عملية الترتيب مهمة لانك اذا لم تحفظ Dictionary بشكل منظم قد تنسى اين كانت اخر عملية تحديث وهكذا لان المشاريع صراحة تبقى في تطور مستمر والزبون قد يحتاج الى متطلبات جديدة ويفضل ارسال كل عمليات التطوير التي تقوم بها للزبون بجنك فايل واحد.
ملاحظة:للاخوان الذين يريدون متابعة التمارين والقيام بها بشكل عملي الرجاء الالتزام بالتسميات السابقة وذلك لكي تسهل علي عملية متابعة الاخطاء اذا حصلت عند احد الاخوان والسبب الاخر هو اننا سوف نستخدم Macro فيما بعد في عمليات تكوين الجنك فايل وهذا يتطلب استخدام نفس المسار.

humam
11-Jul-2011, 06:03 PM
•الخطوة التالية وتعتمد على Environment عند الزبون واقصد به اي نسخة من GPيستعمل فاذا كان يستعمل GP9 عليك بنتصيب نسخة Great Plains 9 Server و هكذا اذا كان الزبون يستخدم GP8 نقوم بتنصيب GP8 Server (وهنا سوف استخدم في التمارين GP9 ويمكن تطبيقها على GP8 ايضا) وبعد ذلك نذهب الى مجلد الجريت بلينز وننسخ الملف Dynamics.DIC والذي يطلق عليه اسم Application Dictionary ننسخ هذا الملف الى المجلد الذي كوناه في الخطوة الاولى وهو
C:\Development\DEXTRN\Work
وسوف يطلق على هذا القاموس اسم Development Dictionary وذلك لانك سوف تستخدمه في عملية التطوير وسوف نغير اسم القاموس الى الاسم التالي MYDEX.DIC في الناحية العملية اغير الاسم الى اسم المشروع ولكن هنا استخدمنا هذا الاسم لاننا في مرحلة تمرين.

humam
11-Jul-2011, 06:07 PM
الخطوة التالية هي اعداد برنامج الدكسترتي بالشكل الصحيح وهنا اتوقع ان الجميع قد قاموا اولا بتنصيب البرنامج .ما هو المقصود الاعداد الصحيح ؟ في الحقيقة ان الدكسترتي تتيح لنا عملية اجراء اختبار في اثناء زمن التصميم وهذا نطلق عليه Test Mode والذي يتيح لك تشغيل المشروع اثناء فترة التصميم وهو مهم جدا وبدونه يصبح العمل صعب وهنا سوف تستخدم الدكسترتي نفس ODBC الذي استخدمته عند تنصيب الجريت بلينز.ولكن اذا جرب احدكم سابقا ان يشغل الTest Mode (وجربوا كذلك الان) مباشرة بعد تنصيب الدكسترتي لاحظ الصورة رقم 1 سوف يتلقى رسالة خطاء عندما يحاول الولوج الى شركة الفابريكم والسبب في ذلك هو ان ملف DEX.ini في مجلد الدكسترتي لم يجري اعداده بالشكل الصحيح ولفعل ذلك عليك فتح مجلد الجريت بلينز ونسخ الملف DEX.ini الى مجلد الدكسترتي وسوف يتجد ان هناك ملف قديم بهذا الاسم استبدل الملف القديم بالجديد كما في الصورتين 2 و 3.الان عندما تشغل Test Mode سوف يعمل معك بشكل سليم ارجو من جميع الاخوان القيام بهذه الخطوات واذا كان هناك خلل ما ارجو علامي بذلك لكي نجد الحل .

عثمان
11-Jul-2011, 08:30 PM
صدقا .... لم أكن لأسجل في منتدى بحياتي....

لكن ما وجدت منتدى بهذه الروعة ولا مشاركات بهذه الإحترافية
أشكرك استاذ همام ... ماشاءا الله عليك يبدو أنك مبدع و محترف....
أشكرك من أعماق قلبي

والشكر موصول للاستاذ منذر وبقية طاقم الإدارة والمشرفين وفقهم الله

السيد سمارت ليست
12-Jul-2011, 10:02 AM
صدقا .... لم أكن لأسجل في منتدى بحياتي....

لكن ما وجدت منتدى بهذه الروعة ولا مشاركات بهذه الإحترافية
أشكرك استاذ همام ... ماشاءا الله عليك يبدو أنك مبدع و محترف....
أشكرك من أعماق قلبي

والشكر موصول للاستاذ منذر وبقية طاقم الإدارة والمشرفين وفقهم الله

نفس الكلام والشكر الجزيل ومنتظرين الجديد والمميز من كل الموجودين بإذن الله

السيد سمارت ليست
12-Jul-2011, 11:04 AM
الخطوة التالية هي اعداد برنامج الدكسترتي بالشكل الصحيح وهنا اتوقع ان الجميع قد قاموا اولا بتنصيب البرنامج .ما هو المقصود الاعداد الصحيح ؟ في الحقيقة ان الدكسترتي تتيح لنا عملية اجراء اختبار في اثناء زمن التصميم وهذا نطلق عليه Test Mode والذي يتيح لك تشغيل المشروع اثناء فترة التصميم وهو مهم جدا وبدونه يصبح العمل صعب وهنا سوف تستخدم الدكسترتي نفس ODBC الذي استخدمته عند تنصيب الجريت بلينز.ولكن اذا جرب احدكم سابقا ان يشغل الTest Mode (وجربوا كذلك الان) مباشرة بعد تنصيب الدكسترتي لاحظ الصورة رقم 1 سوف يتلقى رسالة خطاء عندما يحاول الولوج الى شركة الفابريكم والسبب في ذلك هو ان ملف DEX.ini في مجلد الدكسترتي لم يجري اعداده بالشكل الصحيح ولفعل ذلك عليك فتح مجلد الجريت بلينز ونسخ الملف DEX.ini الى مجلد الدكسترتي وسوف يتجد ان هناك ملف قديم بهذا الاسم استبدل الملف القديم بالجديد كما في الصورتين 2 و 3.الان عندما تشغل Test Mode سوف يعمل معك بشكل سليم ارجو من جميع الاخوان القيام بهذه الخطوات واذا كان هناك خلل ما ارجو علامي بذلك لكي نجد الحل .

طيب تمام أخ همام ، أنا فعلاً ما كانت تشتغل معي ولما نسخت الملف إشتغلت

ولكن أنا قمت بعمل menu في Dynamics.dic ولما قمت بتشغيل الملف في طور التيست إستطعت الولوج للشركة بعد نسخ الملف الذي قلت عنه ، لكنني لم أستطع رؤية menu التي صممتها

وفتحت launch file ووجدتها فارغة ، هل يجب أن أملا الحقول؟ وأقل للبرنامج من أين يأخذ الملفات

ولكن عندما أنظر إلى أعلى الصفحة قصدي صفحة test mode أجدني أعمل على نفس الشركة ونفس إسم الملف ويبدو أنه لا حاجة لتوجيه launch file ولكن لمشكلة أنه بنفس الشركة قمت بعمل فورم ودخول للفورم عن طريق menu , ولم تظهر

شريف سلامة
12-Jul-2011, 12:36 PM
100 100 U R very good man

humam
12-Jul-2011, 05:10 PM
طيب تمام أخ همام ، أنا فعلاً ما كانت تشتغل معي ولما نسخت الملف إشتغلت

ولكن أنا قمت بعمل menu في Dynamics.dic ولما قمت بتشغيل الملف في طور التيست إستطعت الولوج للشركة بعد نسخ الملف الذي قلت عنه ، لكنني لم أستطع رؤية menu التي صممتها

وفتحت launch file ووجدتها فارغة ، هل يجب أن أملا الحقول؟ وأقل للبرنامج من أين يأخذ الملفات

ولكن عندما أنظر إلى أعلى الصفحة قصدي صفحة test mode أجدني أعمل على نفس الشركة ونفس إسم الملف ويبدو أنه لا حاجة لتوجيه launch file ولكن لمشكلة أنه بنفس الشركة قمت بعمل فورم ودخول للفورم عن طريق menu , ولم تظهر

في البداية اود ان اشكر جميع الاخوان على الردود الطيبة واستحسانهم للمواضيع المطروحة في هذا المنتدى وعسى ان تعود الفائدة على الجميع
بالنسبةللاخ سمارت ليست حول Menu ورغم ان بعض النقاط التي تسأل عنها غير واضحة لي اقصد هذا الجزء
(وفتحت launch file ووجدتها فارغة ، هل يجب أن أملا الحقول؟ وأقل للبرنامج من أين يأخذ الملفات)
اخي العزيز هل تقصد فتحتlaunch file في مجلد الجريت بلينز فاذا كان هذا قصدك نعم سوف لاتلاحظ وجود اي معلومات في launch file تتعلق بالمشروع الذي تعمل عليه على الرغم من انك وفي TestMode تتعامل مع برنامج الجريت بلينز ويبدو لك الامر انك تعمل على GP insatance ولكن في الحقيقة انت لاتعمل على نسخة GP بل مجرد محاكة لما سوف يحصل بعد تنصيب الجنك فايل وان GP instance (لاحقا عندما استخدم هذا المصطلح اقصد به نسخة جريت بلينز منصبة بشكل كامل)هي التي تستخدم Launch file لكي تستدل على مواقع Dictionaries المختلفةلانها بيئة عمل متتعددة القواميس Multidictionary Environmentاما في Test mode لايتم استخدام launch file لانها تتعامل مع قاموس واحد وهو Development Dictionary .

النقطة الثانية اود ان اعرف على اي نسخة من GP عملت عليها اي Dictionary نسخته لكي تعمل عليه الاضافات هل هو GP9 او GP8 لانه في حالة كونك تعمل على GP8 فأن Menu التي صممتها سوف لن تستطيع رؤيتها وانت تعمل في Test Mode لذا لكي تفحص عمل هذه القوائم عليك ان تكون الجنك فايل(وهنا يتضح احد الاسباب التي سوف تدعونا فيما بعد لاستخدام الماكرو في عملية تكوين الجنك فايل وخصوصا عندما تصل الى نهايات المشروع والتي تنتهي بنهاية مرحلة فحص الجنك فايل في Test Mode وتليها مرحلة فحص الجنك فايل في البيئة متعددة القواميس Multidictionary Environment وهناسوف تحتاج في كل مرة الى تكوين الجنك فايل بعد تصحيح الاخطاء ونسخه مرة اخرى الى GP instsnace ) وتنسخة الى GP8 instance وهناك سوف تستطيع مشاهدة قوائمك اذا كنت صممتها بالشكل الصحيح وهذه هي طريقة فحص القوائم في GP8 اما اذا استخدمت GP9 فيمكنك مشاهدة القوائم في Test Mode واذا لم تشاهد القوائم فهذا يؤشر الى وجدود خلل ما ولمعرفة ذلك ارجو تزويدي باتفاصيل عن كيفية قيامك باضافة القوائم لكي اتمكن من مساعدتك في تحديد الخلل وفي الحقيقة ان اضافة القوائم تعتبر خطوة متقدمة في برمجة الدكسترتي ولكن متى ما اتقنتها مرة واحدة سوف تصبح شيء سهل وعادي.

humam
12-Jul-2011, 05:38 PM
اخواني الاعزاء كان من المفترض ان اضيف اليوم اول امثلة التصميم ولكن ان ضعط العمل اليوم منعني من اعدادهذه الحلقة انشاء الله السبت نبداء اول مثل عملي

Monzer Osama
13-Jul-2011, 01:02 AM
اخواني الاعزاء كان من المفترض ان اضيف اليوم اول امثلة التصميم ولكن ان ضعط العمل اليوم منعني من اعدادهذه الحلقة انشاء الله السبت نبداء اول مثل عملي

ربنا لا يحرمك الأجر يا أخي ويوفقك الى كل خير
بانتظار مواضيعك يوم السبت ... تفضل بإضافة أمثلتك كمواضيع منفردة
لكي يراها الجميع

السيد سمارت ليست
14-Jul-2011, 10:05 AM
شكراً على الرد ، فعلاً أنا أستخدم نسخة أقدم من 8 لذلك لم أرى القوائم ... نحن بأنتظار الدروس على أحر من الجمر

وفقك الله وبارك بك

humam
15-Jul-2011, 12:58 PM
هنا سوف نتبع خطوات التصميم التي سبق وان ذكرناها ومن خلال هذا المثال المبسط سوف احاول شرح المفاهيم المختلفة واعتقد ان هذا الاسلوب افضل من الاسلوب الاكاديمي الذي يتطلب سرد كل المعلومات في البداية ثم المباشرة بالتنفيذ العملي.

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

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

قائمة بالحقول التي سوف تظهر في النافذة :
Customer ID
Customer Name
Short Name
Address ID
Contact
Address1
Address2
Address3
City
State
Country

هذه الحقول تسمى Window Field وذلك لانها تظهر في النافذة وهناك حقول تسمى Table Field من الممكن ان يكون اي حقل في Table Field هو عضو في Window Field ولكن ليس كل حقول Window Field هي اعضاء في Table Field وذلك لان بعض هذه الحقول سوف تكون ناتجة عن القيام بحسابات معينة على عدد من الحقول فلا يوجد داع لحفظ هذه المعلومات في قاعدة البيانات وهكذا.

الان الخطوة الاولى سوف نصصم Table Field ثم بعد ذلك نستدعي هذه الحقول الى النافذة والخطوة الاولى لفعل ذلك هو تحديد Data Type .

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

كيف تكون نوع بيانات جديد
بعد فيح القاموس ويجب ان يتم ذلك باستخدام DEX المناسب لنوع القاموس سوف نستخدم Resource Explorer ونضعط على Base فتظهر قائمة منسدلة ومنها نختار Data Type ثم نضعط على الزر New في اعلى يسار الشاشة كما في الشكل رقم 1

humam
15-Jul-2011, 01:01 PM
وهذا سوف يؤدي الى فتح نافذة تكوين والتي من خلالها سوف نقوم بادخال القيم الاساسية لتكوين New Data Type وهذه القيم سوف تختلف باختلاف انواع Data Type ولكن الاساسي منها هو :
Name: وفي هذا الحقل سوف تضيف اسم Data Type والذي من خلاله سوف نستطيع
استدعاء نوع البيانات عند تعريف احد الحقول وعند اعطاء اسم هناك بعض القواعد
يمكن اتباعها ويفضل اعطاء اسم يدل على طبيعة البيانات التي سوف تخزن او
نفس اسم الحقل Field الذي سوف يستخدم هذا Data type .
Control Type: وهي الخاصية الاساسية لData Type وهي التي سوف تحدد فعليا نوع
البيانات التي سوف يمثلها هذا Data Type وان Dexterity تدعم العديد من انواع البيانات
مثل String , Currency , long integer…
Keyable length: وسوف يحدد طول البيانات التي سوف يخزنها Data Type وهنا يفضل اعتماد نفس الاطوال المستخدمة من قبل GP او ادخال الطول المناسب حسب الحجم المتوقع للبيانات المخزنة في هذا Data Type
ٍStorage Size :ويمثل الحجم الفعلي للبيانات على القرص الصلب وهو يحسب من قبل DEX لذا يفضل عدم تغيير محتوى هذا الحقل.
Static Values: وهي تستخدم مع بعض انواع Data Type وهي عبارة عن String او Picture يتم اضافتها عند تكوين هذه الانواع الخاصة مثلا اذا اردت تصميم حقل من نوع Drop Down List سوف تحتاج الى تصميم Data Type من هذا النوع وهنا سوف تقوم بادخال القيم التي تريد اضهارها في هذا الحقل او تستطيع فعل ذلك برمجيا فيما بعد مثلا حقل SOP Type في نفافذة SOP سوف يتم ادخال القيم النصية كما في الشكل رقم 2 لمشاهدة ذلك انتقل الى Fields ثم اطبع SOP Type بعد ذلك دبل كللك على اسم الحقل سوف تفتح نافذة تصميم الحقل ثم من Data Type List سوف تلاحظ ان الخيار المفعل هو DDL_SOP_TYPE انقر على الزر Open لفتح نافذة Data Type الاساسية وفي هذه النافذة انقر على الزر مقابل Static Values سوف تفتح لك نافذة بسيطة تستخدم لاضافة هذه القيم الثابتة الى Data Type عن طريق طباعة القيمة في New Value ثم استخدم Insert لاضافة هذه القيمة وهكذا ويمكن استبدال قيم موجودة عن طريق طباعة القيمة الجديدة ثم اختر القيمة المراد تغييرها من List ثم Replace واخيرا يمكن استعمال Remove لازالة القيمة الغر مرغوب بها.
ملاحظة ان القيم التي سوف تظهر للمستخدم في نافذة SOP هي القيم النصية التي نراها الان ولكن عند حفظ البيانات الى جدول SOP10200 سوف يتم خزن قيمة عددية تشير الى تسلسل القيمة النصية ومن هنا نلاحظ ان SOP Type=3 سوف يشير الى Invoice وهكذا اخيرا الخيار Sort List سوف يرتب الحقول ابجديا خلال عملية عرض البيانات ولكن القيم سوف تعتمد على التسلسل الذي تم ادخال البيانات فيه اي اذا اخترنا هذ الخيار في هذه الحالة سوف تكون Back Order هي الفقرة الاولى التي سوف يلاحظها المستخدم لكن القيمة المقابلة له سوف تبقى 5 وهكذا.ونفس الشيء يحدث في حالة Picture لكن مع اختلاف النوافذ المستخدمة للقيام بذلك وسوف نوضح هذا النوع في عملية تصميم النافذة.

humam
15-Jul-2011, 01:04 PM
Format: وهي تتعلق بالكيفية التي تريد عرض البيانات بها مثلا اذا نلاحظ في GP ان كل الحقول التي تستخدم ك ID field’s مثلا Customer ID وغيرها سوف تكون الاحرف كبيرة لفعل ذلك سوف نستخدم هذه الخاصية وكذلك مع انواع البيانات الاخرى يمكن استخدام هذه الخاصية.
Composite: وهي خاصية دمج اكثر من حقل في حقل واحد وعرضه على اساس انه حقل واحد ومن احسن الامثلة على ذلك هو Account Number .اختر Field من Base ثم اطبع Account Number ثم دبل كللك علىهذا الحقل سوف تفتح امامك نافذة تصميم الحقل منها انقر على Open سوف تفتح نافذة Data type ثم انقر على الزر مقابل Composite سوف يفتح نافذة Composite Lookup ويكون الاختيار على القيمة CP5_Account_Number ومنها انقر على الزر Open سوف تفتح نافذة Composite Definition وهي المستخدمة لتكوين هذا النوع من البيانات وهنا سوف تلاحظ ان الحقل Account Number في الحقيقة مكون من عشرة اجزاء وتم جمعها لتظهر على انها حقل واحد وهذا ما تستطيع التاكد منه من الجدول GL00100 وهنا الرقم 10 يذكرنا باحدى خطوات تنصيب GP حيث ان اقصى عدد مسموح به لهذا الرقم هو 10 والتحديد جاء من هذا الحقل. لاحظ الشكل 3.
ملاحظة لمزيد من المعلومات راجع الملحق PRGV1 .

الان بعد ان عرفنا كل المعلومات الضرورة يمكن ان نبداء بعملية تصميم Data Type الخاصة بنا وسوف استخدم البادئة ARB في تسمية الحقول وانواع البيانات وكذلك فيما بعد النماذج والنوافذ وهي مختصر ل GP4ARAB .

humam
15-Jul-2011, 01:29 PM
1) النوع ARBCUSTNMBR
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية

Name: ARBCUSTNMBR
Control Type: String
Keyable Length: 15
Storage Size: 16
Format: ARBID

ملاحظة: ان الفورمات ARBID يجب ان تقوم بتكوينها عن طريق الضغط على الزر بجانب الفورمات سوف تؤدي الى فتح نافذة Format Lookup(لاحظ الشكل 4) منها اختر الزر New سوف يؤدي الى فتح نافذة Format Definition وهنا في هذه النافذة ادخل الاسم ARBID ثم اختر Upper Case Only وهذا الخيار سوف يؤدي الى اظهار النص في هذا النوع على شكل احرف كبيرة باقي الخيارت سوف نشرحها عندما نستخدمها لاحقا ثم انقر الزر OK حيث تعود الى نافذة Format Lookup وكذلك انقر OKلتعود الى نافذة تصميم Data Type وتلاحظ ظهور الاسم ARBID في خانة الفورمات.ثم انقر OK لاغلاق نافذة تصميم Data Type ويجب ان تكون محتويات النافذة كما في الشكل 5 .

humam
15-Jul-2011, 01:52 PM
2) النوع ARBCUSTNAME:
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل Customer Name

Name: ARBCUSTNAME
Control Type: String
Keyable Length: 64
Storage Size: 66
Format:


3) النوع ARBSHRTNAM :
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل Short Name

Name: ARBSHRTNAM
Control Type: String
Keyable Length: 15
Storage Size: 16
Format:


4) النوع ARBADDRSID :
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل Address ID هنا ايضا استخدمنا الفورمات لان هذا الحقل سوف يمثل ID وهو Address Code

Name: ARBADDRSID
Control Type: String
Keyable Length: 15
Storage Size: 16
Format: ARBID


5) النوع ARBCONTACT :
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل Contact

Name: ARBCONTACT
Control Type: String
Keyable Length: 60
Storage Size: 62
Format:


6) النوع ARBADDRS1 :
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل Address1

Name: ARBADDRS1
Control Type: String
Keyable Length: 60
Storage Size: 62
Format:


7) النوع ARBADDRS2 :
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل Address2

Name: ARBADDRS2
Control Type: String
Keyable Length: 60
Storage Size: 62
Format:


8) النوع ARBADDRS3 :
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل Address3

Name: ARBADDRS3
Control Type: String
Keyable Length: 60
Storage Size: 62
Format:


9) النوع ARBCITY :
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل City

Name: ARBCITY
Control Type: String
Keyable Length: 35
Storage Size: 36
Format:


10) النوع ARBSTATE :
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل State

Name: ARBSTATE
Control Type: String
Keyable Length: 35
Storage Size: 36
Format:


11) النوع ARBCOUNTRY :
انقر على الزر New بعد اختيار Data Type من Base وادخل المعلومات التالية:
وهذا النوع سوف يستخدم فيما بعد لتكوين الحقل Country

Name: ARBCOUNTRY
Control Type: String
Keyable Length: 60
Storage Size: 62
Format:

Monzer Osama
15-Jul-2011, 02:03 PM
دروس رائعة أخي همام
تستحق لقب التميز..... جزاك الله خير

humam
15-Jul-2011, 02:08 PM
تصميم الحقول Fields

في بداية هذه الحلقة تكلمنا عن الحقول وهنا اود ان اعطي بعض التوضيحات بما اننا سوف نتعامل مع الحقول في الحقيقة تقسم الحقول في DEX الى نوعين هما
Global Fields
Local Fields
الان ما هو الفرق بين كلا النوعين واين يمكن استخدام كل منهما ان النوع الاول والمسمى Global Field وهو يشمل كل الحقول التي يمكن اضافتها الى النوافذ وهذا ما نطلق عليه Window Field وكذلك يمكن اضافتها الى الجداول وعند ذلك يسمى Table Field وهناك سوف نلاحظ فيما بعد سوف تكون العلاقة وثيقة بين Window Field والحقل المقابل له في الجدول Table Field ويتم تصميم هذه الحقول في مرحلة تصميم قاعدة البيانات وسوف نوضح كيفية ذلك بعد تعريف النوع الثاني.
وهو Local Field وهو حقل يستخدم فقط في النافذة اي هو من نوع Window Field ولايمكن استخدامه ك Table Field ويتم تصميمه في مرحلة تصميم النوافذ وكمثال علية Save Button هو في الواقع زر ولكن يصنف هنا في مصطلحات Dexterity على انه Local Field .

humam
15-Jul-2011, 02:10 PM
اشكر حسن اسقبالكم اخي منذر وعسى ان تكون هذه الدروس نافعة لاخواننا العرب في هذا المجال التقني وسعيا لكسر احتكار الاخرين والله الموفق

humam
15-Jul-2011, 02:41 PM
كيفية تصميم Global Fields

هنا اتوقع ان Dictionary قد تم فتحه بواسطة Dex المناسبة ثم عليك بالنقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة كما في الشكل 6 سوف تفتح نافذة Field Definitions وهنا عليك ادخال المعلومات في Field Name و physical Name هنا ان Field Name سوف يمثل اسم الحقل عندما يتم عرضه للمستخدم في نوافذ المساعدة مثل نافذة Field Description التي يستطيع المستخدم الوصول اليها عن طريق Tools> Resources > Field
وكذلك هو الاسم الذي سوف نستخدمه عند استدعاء الحقل في الكود واذا كان الحقل مكون من كلمتين يجب استخدام Single Quotation لاحاطة اسم الحقل مثلا
‘Customer Name’ of table Customer;
اما الاسم Physical Field وهو الاسم الذي سوف يستخدم فعليا في تكوين هذا الحقل في SQL Table .
هنا في مثالنا هذا سوف استخدم نفس الاسم لكلا الحقلين اولا للسهولة وثانيا لتلافي الاخطاء في الكود وخصوصا عند الذين يكتبون الكود لاول مرة.
الان في مثالنا سوف نكون الحقول التالية :
1)الحقل Customer ID :
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBCUSTID
Physical Name: ARBCUSTID

الان انتقل الى الجزء الاهم وهو تحديد نوع Data Type المناسب لهذا الحقل وهذا ما تم تصميمه في الخطوات السابقة هنا ضع المؤشر في Data Type List واطبع الاحرف الاولى من Data Type وسوف تلاحظ ظهور كل Data Type التي صممتها في المرة الاولى وبشكل منسق وهذه فائدة استخدام prefixومنها اختر نوع Data Type المناسبة لهذا الحقل وفي هذه الحالة ARBCUSTNMBR ثم انقر على الزر Open لفتح نافذة Data Type ثم اغلق هذه النافذة وهذه الخطوة ضرورية لتكوين الحقل ثم انقر على الزر OK وبذلك انتهت عملية تكوين الحقل الجديد.لاحظ الشكل 6

humam
15-Jul-2011, 03:05 PM
حول Array Size سوف اتحدث لاحقا عن هذا الموضوع وكذلك عن Lookup الان اسخدم نفس الخطوات السابقة لتكوين باقي الحقول وكما يلي:


2)الحقل Customer Name:
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBCUSTNAME
Physical Name: ARBCUSTNAME
Data Type : ARBCUSTNAME
3) الحقل Short Name:
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBSHORTNAME
Physical Name: ARBSHORTNAME
Data Type : ARBSHRTNAM
4) الحقل Address ID:
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBADDRESSID
Physical Name: ARBADDRESSID
Data Type : ARBADDRSID

5) الحقل Contact:
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBCONTACT
Physical Name: ARBCONTACT
Data Type : ARBCONTACT

6) الحقل Address1:
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBADDRESS1
Physical Name: ARBADDRESS1
Data Type : ARBADDRS1

7) الحقل Address2:
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBADDRESS2
Physical Name: ARBADDRESS2
Data Type : ARBADDRS2

8) الحقل Address3:
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBADDRESS3
Physical Name: ARBADDRESS3
Data Type : ARBADDRS3

9) الحقل City:
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBCITY
Physical Name: ARBCITY
Data Type : ARBCITY

10) الحقل State :
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBSTATE
Physical Name: ARBSTATE
Data Type : ARBSTATE

11) الحقل Country:
ولتكوين هذا الحقل انقر على Base لتوسيع القائمة ثم اختر Fields وانقر على الزر New في اعلى يسار الشاشة واملاء النافذة كما يلي:
Field Name : ARBCOUNTRY
Physical Name: ARBCOUNTRY
Data Type : ARBCOUNTRY

humam
15-Jul-2011, 03:22 PM
الرجاء الالتزام بالتسميات الواردة في هذا التمرين وذلك لسهولة متابعة الاخطاء التي قد تحدث عن كتابة الكود

humam
15-Jul-2011, 04:26 PM
تصميم الجداول Table Design

بعدما اكملنا تصميم الحقول الان سوف نحاول الانتقال الى مرحلة ثانية وهي تصميم الجداول طبعا في الناحية العملية تصميم الجدول يتم بعد اخذ Requirements من الزبون بشكل كامل وثم بعد ذلك يتم تصميم الجداول والاخذ بنظر الاعتبار في اي نقطة سوف يتم الالتقاء بين Module الجديد الذي تصممه و GP وهنا توجد نقطة مهمة ان التصميم السيء للجدول في البداية وعدم الاخذ بنظر الاعتبار احتمال توسع المشروع بعد استخدامه من الزبون سوف يجعل مهمة المطور اصعب في تعديل الخطاء وخصوصا وقد اصبحت الجداول تحتوي على Data وهنا يبرز دور GP Consultant Of والذي يجب ان خبرة يمتلك كبيرة في جداول GP والعلاقات مابين الجداول لكي يسدي النصح لل GP Developer في مرحلة التصميم الاولي للمشروع وهذا افضل بكثير من ايجاد الحلول الثانوية والتي تؤدي الى مضيعة للوقت والجهد.
هنا سوف نتناول فقط قواعد البيانات من نوع SQL Server وذلك لانه هناك خيارات تتعلق بانواع مختلفة من قواعد البيانات الان الخطوة الاولى لتصميم الجدول عليك بعد فتح القاموس اختيار Tables ثم اضغط على الزر New في اعلى يسار الشاشة وهذا سوف يؤدي الى ضهور نافذة Table Definition كما في الشكل رقم 1 في هذه النافذة سوف نلاحظ العناصر الاساسية لتكوين الجداول Table Elements وهي تتمثل بما يلي:
Table Name: وهنا سوف نقوم بادخال الاسم التقني للجدول او Technical Name of Table حيث ان للجدول الواحد ثلاث اسماء ويستخدم هذا الاسم في كتاية الكود وهنا يفضل استخدام الحرف Underscore للفصل بين الكلمات وهنا يفضل اتباع الطرق المستخدمة في GP لتسمية الجداول هنا مثلا نستخدم الاسم :
ARB_Customer_MSTR
حيث الجزء الاول هنا استخدمنا Prefix الخاص بالموقع و يمكن استخدام اسم مختصر للمشروع او اسم مختصر للشركة التي تعمل بها وهذا جدا مهم لعمل جدولة وتنسيق للجداول الخاصة بمشروعك ولكي تظهر ككتلة واحدة سواء كان في SQL Server او عند عرضها على المستخدم.
الجزء الثاني يدل على محتوى الجدول والثالث وحسب تصنيفات GP يعتبر من Master Cards الاساسية وكذلك في الحقيقة النافذة التي نحن بصدد تطوريها تصنف كذلك اي Master Window وهي تعتبر من اسهل انواع نوافذ GP بالمقارنة مع الانواع الاخرى مثل Lookups و Transactions حيث لكل نوع تصنيف من حيث العمل وصعوبة التصميم.
Display Name: وهو الاسم الثاني الذي سوف نقوم بادخاله وهو يستخدم لعرض اسم الجدول للمستخدم في نوافذ مثل Tools> Resources > Tables
او عند استخدام File > SQL > Maintenance لاضافة جداولك الى قواعد البيانات وهنا يحبذ استخدام اسم تفصيلي ومن كلمات كاملة مع فراغات وفي مثالنا سوف يكون :
GP4Arab Customer MSTR
Physical Name: وهو واضح من الاسم سوف يستخدم من قبل SQL Server في تسمية الجدول وهنا الحد الاقصى المسموح به هو 8 احرف وما زاد عنها سوف يتم تجاهله وهنا يمكن او يفضل اتباع التسميات الموضوعة من قبل GP في تسمية الجداول مثلا سوف يكون اسم الجدول هنا هو ARB00101
Series:وهو مهم لعمل نوع من التجميع او Grouping لجداولك كما تفعل GP هنا توجد عدة خيارات امام المطور منها يمكن ان يجعل كل جداوله تحت المجموعة 3rd Party على اعتبار انك تطور مشروع Third Party Project وهذا يفضل اذا كنت تريد بيع المشروع لاكثر من جهة واحدة والمشروع يحتوي على عدد كبير من الجداول . او يمكن اخيار نوع Series اعتمادا على نوع البيانات التي سوف يحتويها جدولك كما في GP. وهنا في مثالنا سوف نختار Sales لان هذا الجدول للزبائن.
Database Type: وهنا واضح سبب وجود هذا الخيار ودائما نختار SQL Server.

humam
15-Jul-2011, 04:50 PM
Table Fields: وهنا سوف نقوم بادراج الحقول الخاصة بالجدول من قائمة Global Fields والتي تشمل كل الحقول الخاصة ب GP والتي يمكنك استخدامها بسهولة في جدولك دون تكبد عناء تصميم الData Type وال Fields ولكن لهذه السهولة سوف تدفع الثمن فيما بعد وهذا ما اكتشفته عندما بداء بعض الزبائن عندنا بتطوير نسخ GP عندهم من GP7.5 و GP8 الى GP9 حيث ان معظم الزبائن عندهم Customization على نسخ GP وهنا يجب ان نقوم نحن كذلك وبعد تحديث GP للزبون بان نحدث Our Products وكما تفعل المايكروسوفت وهذه العملية تزداد صعوبة اذا كنت قد استخدمت حقول GP الاصلية في جداولك لان عليك متابعة كل التغيرات التي اجرتها المايكروسوفت على حقولها وجداولها وانواع البيانات الخاصة بها وان عملية Upgrade التي تقوم بها لل GP سوف لن تؤثر على الجداول الخاصة بك حتى لو كنت تستخدم نفس الحقول ونفس انواع البيانات وعليك ان تقوم ان بعملية Upgrade خاصة بك.

الان بعد وضع المؤشر في قائمة Global Fields اطبع الاحرف ARB سوف تنتقل مباشرة الى مجموعة الحقول الخاصة بنا وهنا نلاحظ فائدة اخرى للبادئة التي استخدمناها حيث تعمل على تجميع الحقول وتسهل عملنا الان اختر الحقول حسب التسلسل الذي تريد ترتيب الحقول به في SQL Table واختر الحقل الاول والذي يكون عادة ID Field وهنا اختر ARBCUSTNMBR ثم اختر Insert وهكذا استمر بالعملية و حسب التسلسل التالي والواضح في شكل رقم 1

طبعا يمكن استخدام الزر Remove لازالة الحقل بعد اضافته هنا الخيار الوحيد المتوفر هو الخيار Allow Active Locking وهذا مهم عندما تبداء في عملك باخذ Multiuser Environment في مشاريعك اي ماذا سوف يحصل عندما يحاول اكثر من مستخدم استخدام نفس Record في احدى نوافذك وهو مفهوم متقدم لذا يجب ان تفعل هذا الخيار عند تصميم الجداول في حالة اردت العمل مع اكثر من مستخدم .

humam
15-Jul-2011, 05:18 PM
Keys: وهي الخطوة الاخيرة والاكثر اهمية في تصميم الجدول هي تحديد اولا ما يعرف ب Primary Key وهو المفتاح الاساسي للجدول والذي سوف يحمي قاعدة البيانات من عملة Duplication اي تمنع المستخدم من تكرار البيانات وهذا احد اسس تكامل قواعد البيانات وهنا لكي نكون هذا المفتاح علينا ان نضعط على كلمة New اسفل حقل Key وهذا سوف يفتح نافذة Key Definition كما في الشكل 2 وهنا عليك تحديد الحقول التي سوف تظهر في Primary Key وهنا عدد الحقول سوف يعتمد على المتطلبات في حالتنا نحتاج الى حقل واحد هنا هو ARBCUSTID وسوف يكون كافي لحماية الجدول من التكرار غير السليم للبيانات ثم بعد ذلك نفعل الخيار Primary Key والذي بدروه وبصورة ذاتية سوف يعمل على انشاء Index لكي يسهل فرز البيانات وفق المفتاح الاساسي وكذلك يفعل Unique لكي يشير الى ان تركيبة الحقول الداخلة في المفتاح الاساسي يجب ان تكون فريدة لكل Record بقي الخيار Clustered والذي يعمل على خزن البيانات وبصورة فعلية في قاعدة البيانات وفق نسق المفتاح الاساسي وغير ضروري تفعيل هذا الخيار.النقطة المهمة وهي اسم المفتاح وهنا يفضل بشكل كبير استخدام التركبية التالية :
Technical Name of Table_Key1
وفي حالتنا سوف يكون الاسم ARB_Cutomer_MSTR_Key1 ويمكن اضافة Keys اخرى للجدول عدى المفتاح الاساسي حيث ان الجدول يمتلك مفتاح اساسي واحد فقط اما فائدة المفاتيح الاخرى هي في تكوين علاقات بين الجداول وكذلك في عملية فرز الجدوال باستخدام حقول غير حقول Primary Key بعد اكمل هذه المعلومات اضغط على الزر Ok للعودة الى نافذة تصميم الجدول ولتغيير محتوي Primary Key اختر المفتاح من قائمة المفاتيح وثم اختر Open.
الخطوة التالية هي تكوين مفتاح ثانوي للجدول اضغط على الزر New مرة اخرى وادخل الاسم التالي للمفتاح ARB_Cutomer_MSTR_Key2 وهنا اختر الحقل Customer Name اي ARBCUSTNAME وارفع الخيار Unique من خيارت الجدول وابقي فقط على الخيار Index كما في الشكل رقم 2

أحمد الغامدي
16-Jul-2011, 10:07 AM
ماشاء الله تبارك الله يا استاذ همام

شي بحياتي ما شفت زيه ..... جهد رائع ومتميز
لنا الشرف بوجودك معنا .... هذا الموضوع من أكثر المواضيع مشاهدة ومشاركة
نشكرك ونتمنى لك التوفيق

humam
16-Jul-2011, 02:17 PM
الشكر لله اخي الكريم وتمنياتي للجميع بالتوفيق

mohmah15
22-Jul-2011, 11:59 AM
بارك الله فيك
ارجو منك الاستمرار يا اخي فالجميع يحقق الاستفاده

ahmedi
22-Jul-2011, 08:49 PM
سلام عليكم اخ همام

مشكور على المعلومات القيمة

لدي سؤال اذا سمحت

هل يمكن استخدام ٍSQL views داخل الديكسترتي؟

شكرا

humam
23-Jul-2011, 07:27 AM
سلام عليكم اخ همام

مشكور على المعلومات القيمة

لدي سؤال اذا سمحت

هل يمكن استخدام ٍSQL views داخل الديكسترتي؟

شكرا

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

wesamskr107
27-Aug-2011, 02:44 AM
مشكور جدا علي هذا متننين لك المزيد والمزيد

khalidagm2
27-Aug-2011, 04:31 PM
اخواني الاعزاء السلام عليكم ورحمة الله وبركاته
جزاك الله خير علي المجهود الرائع والطيب ولكن اود ان اضيف شئ متواضع وهو عند القيام بتنصيب الديكستيريتي يجب نسخ الملف dex.ini من فولدر GP الي فولدر الديكسينريتي لأن عندما نعدل فيما بعد في اي شاشة ونريد ان نجرب ونري التأثير في برنامج جريت بلينز نضغط CTRL+T واذا لم ننسخ الملف dex.ini فلن نستطيع تجربة التعديل
khalid - Qatar +974 5238968

Monzer Osama
27-Aug-2011, 08:10 PM
شكرا لاضافتك اخي خالد ... اخونا همام مسافر الان في اجازة مفتوحة يبحث عن مأوى بعد أن شرد الاحتلال الغاشم العراقين من ديارهم
نسأل الله له التوفيق والسلامة ونتمنى عوده قريبا....

khalidagm2
27-Aug-2011, 09:07 PM
السلام عليكم اخي منذر
شكرا جزيلا علي ردك ونتمني عودة الاخ همام وانا علي استعداد بفضل الله ان ارد او اجاوب علي اي مسأله فنية في الديكستيرتي او اي تعديل يريده الاخوه المشتركين علي جريت بلينز والله ولي التوفيق . حتي وان كان الامر يتعلق بتعريب جريت بلينز بالكامل وجزاكم الله خير

Monzer Osama
27-Aug-2011, 09:38 PM
وإياك اخي خالد .. أشكر لك اهتمامك وحماسك ويسرنا ان تتابع بما بدءه الاخ همام
أو تتحفنا بدروس جديدة تثري المنتدى بجهودك وخبراتك ....
وفقك الله لكل خير
ومرحبا بك أخ عزيزا بيننا

khalidagm2
28-Aug-2011, 11:48 AM
السلام عليكم ورحمة الله وبركاته اخ منذر
انا ان شاء الله سأبذل قصاري جهدي لأبدء مع اخواني في المنتدي موضوع جديد ولكن ساحوال ان ابدأ من ناحيه عمليه وهي انني ساحوال ان اعدل شاشة من شاشات المستودعات ولتكن اضافه حقل في شاشة الادخال لكي نستطيع ان نعرف الادارة المستلمه الصنف - ان شاء الله قريبا
والله المستعان

Monzer Osama
28-Aug-2011, 12:14 PM
السلام عليكم ورحمة الله وبركاته اخ منذر
انا ان شاء الله سأبذل قصاري جهدي لأبدء مع اخواني في المنتدي موضوع جديد ولكن ساحوال ان ابدأ من ناحيه عمليه وهي انني ساحوال ان اعدل شاشة من شاشات المستودعات ولتكن اضافه حقل في شاشة الادخال لكي نستطيع ان نعرف الادارة المستلمه الصنف - ان شاء الله قريبا
والله المستعان

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

hanohmhm
29-Sep-2011, 07:23 AM
أين أنت يا أخ همام
والله وحشتنا أوى
وفى شوق شديد لإستكمال باقى مواضيعك
يارب تكون بخير ورمضان كريم

Monzer Osama
29-Sep-2011, 11:18 AM
الأخ همام مازال يبحث عن بلد عربي صاحي الضمير يأويه بعد أن شرد الإحتلال أهل العراق الحبيب ...
نسأل الله له التوفيق والتييسير ليرجع لنا سالما غانما...

humam
24-Dec-2011, 02:38 PM
الحمد لله على كل حال والله كان بودي الاسترسال في هذا الموضوع ولكن ظروفي الخاصة وظروف العمل حتمت علي استخدام اسلوب المواضيع المنفصلة بدل استخدام موضوع واحد مطول يتطرق الى كل تفاصيل الدكسترتي لذا كان هذا الموضوع يشكل مقدمة لابأس بها لسلسلة مواضيع تعلم الدكسترتي وبعد هذا الموضوع بأمكان المتتبع الانتقال الى موضوع تصميم النماذج والنوافذ ومن ثم الى موضوع كتابة الشفرة البرمجية الذي يعطي مقدمة بسيطة عن كيفية التعامل واستخدام اوامر لغة السانسكربت وانا انشاء الله بصدد اضافة مواضيع جديدة بأذن الله تغني هذه السلسلة وسوف تكون المواضيع منفصلة.

kero_kero
14-May-2012, 04:59 PM
بارك الله فيك موضوع رائع و محترف بشكل كامل
لى طلب بسيط و هو تثبيت الموضوع و جعله فى شكل ملف Pdf لسهولة تجميعه و استخدامه
شكرا لك

kemotkd
04-Sep-2012, 09:28 PM
شكراً
وياريت موضوعات أكثر

saed_adnan
20-May-2013, 11:00 AM
السلام عليكم و رحمة الله و بركاته
اود ان اشكر اخي همام على ما قدمه في هذا المنتدى
حيث اني تابعت معه كل كلمة كتبها و اتمنى ان يكون بصحة جيدة

ارجو منكم ان تكملوا ما بدأه همام
قد تتبعت معه كل كلمة كتبها و عملت مثلما عمل

و بعد ان تعذر عليه ان يكمل ما بدأه , لا اعرف اين اذهب ولا ماذا افعل
حيث ان اخر شيء قمت بعمله هو Table Definition
حيث قمت باختيار Table و Table Fields و عملت ايضا Keys
و انا الان اقف محتارا ولا اعرف ماذا افعل بعد ذلك :( :confused: :confused:

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