مدونة منذر اسامة

العودة   منتديات جريت بلينز العربية Great Plains For Arab > منتدى مطوري جريت بلينز > مواضيع المطورين الأخرى

مواضيع المطورين الأخرى مواضيع المطورين التي لا تنتمي الى أي من التصنيفات السابقة
مثل لغة الديكستريتي (Dexterity) والأدوات التطويرية الأخرى (eConnect , Integration Maneger ,VS2005 for GP...etc.)

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 15-Jan-2012, 01:22 PM   #1
humam
مشرف منتدى المطورين
افتراضي Text File in Dexterity

في هذا الموضوع سوف نتطرق الى كيفية التعامل مع Text File ضمن الدكسترتي واخترت هذا الموضوع من ضمن مشروع اعمل عليه حاليا ومن الجيد في البداية ان نتطرق الى الفائدة العملية من التعامل مع Text File ؟
ومثل ما يقال ان الحاجة ام الاختراع ولكن بالنسبة للمطورين ان متطلبات العميل هي التي تدفع الى استخدام طريقة معينه بذاتها . مثلا يمكن استخدام Text File للقيام بعملية Integration بين الجريت بلينز وتطبيقات اخرى حيث يمكن تكوين ملف نصي يحتوي المعلومات المطلوبة من الجريت بلينز ويتم ارسال هذا الملف الى التطبيق الثاني والذي بدوره سوف يعيد المعلومات على شكل ملف نصي وهذه المرة على الجريت بلينز ان يسترجع المعلومات من الملف النصي ثم يقوم بتحديث النوافذ او الجداول تبعا للسيناريو المطلوب من قبل العميل.
وقد يقول قائل ان هذه ليست الطريقة المثلى لعمل Integration بين الجريت بلينز والتطبيقات الاخرى حيث من الافضل استخدام XML Files و eConnect بدل من استخدام Text File وهذا صحيح ولكن Requirement قد تدفعك الى خيارات غير متوقعة كما نوهت في البداية.
هناك استخدام اخر لدوال الملفات النصية حيث يمكنك استخدامها لبناء Macro من الصفر او لتعديل ماكرو موجود حيث ان ملف الماكرو يمتلك صيغة نصية يمكن التعامل معها على انها نص عادي.
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 15-Jan-2012, 01:24 PM   #2
humam
مشرف منتدى المطورين
افتراضي

Text File Libraries In Dexterity

توجد هناك مكتبتين في الدكسترتي للتعامل مع الملفات النصية من النوع tab- or comma-delimited text file :

Import function library
Text file function library

الفرق بين المكتبين يتعلق بالمواصفات التقنية للملف النصي حيث يمكن استخدام المكتبة الاولى عندما يكون السجل او السطر الواحد ضمن الملف النصي اكبر من 2048 رمز وعندما يكون طول الحقل الواحد ضمن هذا السجل اكثر من 255 رمز وهذه المكتبة تستخدم للقراءة فقط من الملفات النصية. وهي تحتوي على اربع ايعازات. اما المكتبة الثانية فتحتوي على سبع ايعازات مختلفة للتعامل مع الملفات النصية التي تكون مواصفاتها مخالفة لما ذكرنا مع المكتبة الاولى وهذه المكتبة تحتوي على ايعازات للقراءة والكتابة بعكس المكتبة الاولى. طبعا يمكن الدمج بين المكتبتين حيث ان المكتبة الاولى تقراء البيانات بشكل اسهل من المكتبة الثانية ويمكن استخدام المكتبة الثانية لكتابة الملفات النصية.
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 15-Jan-2012, 01:26 PM   #3
humam
مشرف منتدى المطورين
افتراضي

Import function library

وهي تحتوي على الايعازات التالية :
كود:
Import_CloseFile () 
Import_GetNextField () 
Import_GetNextRecord () 
Import_OpenFile ()
الايعاز Import_OpenFile يستخدم لفتح الملف النصي والصيغة النحوية له هي :

كود:
Import_OpenFile (product_ID, pathname, delimiter type, num_fields)
البارمتر الاول ويمثل معرف المنتج Product ID والذي قد يكون عبارة عن ثابت Constant تقوم بتعريفه ضمن المشروع الجديد وهذه هي الطريقة الاحترافية او يمكن امراره مباشرة كعدد صحيح.

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

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

COMMAFILE: Comma delimiter
TABFILE : Tab delimiter

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

كود:
Po Number, Item Number, Item Description, QTY
PO900, ITEM1, Item1 Test, 10
PO900, ITEM2, Item2 Test, 20
PO900, ITEM3, Item3 Test, 12
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 15-Jan-2012, 01:27 PM   #4
Monzer Osama
مدير عام منتديات جريت بلينز العربية
افتراضي

ممتاز أخي همام ... متابعون معك
__________________
Monzer Osama
Saudia Arabia - Jeddah
00966501826235
Microsoft Certified Business Management Solutions Professional
Microsoft Certified Trainer
Monzer Osama غير متواجد حالياً   رد مع اقتباس
قديم 15-Jan-2012, 01:29 PM   #5
humam
مشرف منتدى المطورين
افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة Monzer Osama مشاهدة المشاركة
ممتاز أخي همام ... متابعون معك
الله يخليك اخي منذر
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 15-Jan-2012, 01:30 PM   #6
humam
مشرف منتدى المطورين
افتراضي

هذا ما سوف يكون عليه الملف النصي المفترض قراءة البيانات منه الى برنامج الجريت بلينز طبعا السطر الاول فقط لتوضيح تركيب البيانات Data Format في التطبيق الفعلي سوف يكون غير موجود. المهم الان اذا فتحنا هذا الملف الافتراضي بشكل صحيح بواسطة الدالة السابقة فمن المفترض ان تكون القيمة المعادة من البارمتر الرابع هي 4 لانه لدينا اربع حقول تميز بينها الفاصلة Comma .

اخيرا القيمة المعادة بواسطة هذه الدالة هي unique file ID وهو معرف فريد يشير الى الملف النصي المفتوح وتحتاج اليه باقي الدوال في هذه المكتبة . اذا حصل خلل اثناء فتح الملف سوف تعاد القيمة Zero .

ملاحظة اخيرة عند قيامك بفتح ملف نصي بواسطة الدالة Import_OpenFile يجب عليك اغلاق هذا الملف بواسطة الدالة Import_CloseFile سواء تم فتح الملف بشكل صحيح او حصل خلل في عملية فتح الملف لتجنب ظهور Bugs في مشروعك.

اخيرا نختم بمثال عن الشفرة البرمجة :
كود:
local integer l_num_fields,l_file_ID,l_result,l_index,l_delimiter;
l_delimiter = COMMAFILE; {Comma delimited.}

	if getfile ("Choose an import file:", TEXTFILE, l_pathname) then
            l_file_ID = Import_OpenFile (BCI_PROD_ID, l_pathname, l_delimiter,  
                            l_num_fields);  
	    {Check for errors opening the file}
	    if (l_file_ID = 0) or (l_num_fields = 0) then
	        {The file couldn’t be opened}
	        warning "There was an error opening the text file";
	        {Release the file ID}
	        l_result = Import_CloseFile (l_file_ID);
	        abort script;
	    end if;
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 16-Jan-2012, 02:51 PM   #7
humam
مشرف منتدى المطورين
افتراضي

بالنسبة الى الدالة getfile فهي تستخدم لاظهار صندوق حوار تطلب من المستخدم ان يحدد الملف المراد فتحه وتمتلك هذه الدالة ثلاث برامترات الاول هو محتوى الرسالة التي سوف تظهر ضمن صندوق الحوار والثاني هونوع الملف المراد التعامل معه والبارامتر الثالث هو المسار والذي سوف تقوم الدالة بتحديده تبعا لمسار الملف الذي اختاره المستخدم وهذا المسار سوف يكون بصيغة Generic Path والذي تحتاج اليه ضمن الدالة Impor_OpenFile واخيرا تعيد الدالة قيمة منطقية للدلالة على نجاح العملية من عدمها

كان المفروض ان اكمل شرح باقي الدوال اليوم ولكن نسيت ان احمل الملف معي انشاء الله غدا سوف اكمل شرح باقي الدوال.
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 17-Jan-2012, 08:03 AM   #8
أحمد الغامدي
عضو مميز
 
تاريخ التسجيل: Jun 2007
المشاركات: 162
من مواضيعي  
افتراضي

جهد رائع وطيب اخوي همام الله يديك العافية والصحة
بس الله يحفظك إيش الشئ اللي أجبرك في مشروعك استخدام ملفات التيكست بدلا من الإي كوننيكت ؟ وانت ما شاء الله عليك محترف E-Connect?

على العموم جهود مباركة والله يقويك
أحمد الغامدي غير متواجد حالياً   رد مع اقتباس
قديم 17-Jan-2012, 09:05 PM   #9
humam
مشرف منتدى المطورين
افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة أحمد الغامدي مشاهدة المشاركة
جهد رائع وطيب اخوي همام الله يديك العافية والصحة
بس الله يحفظك إيش الشئ اللي أجبرك في مشروعك استخدام ملفات التيكست بدلا من الإي كوننيكت ؟ وانت ما شاء الله عليك محترف E-Connect?

على العموم جهود مباركة والله يقويك
مشكور اخي احمد والله السؤال في محله بس كما نوهت في بداية الموضوع سبب استخدام الملف النصي يعود الى العميل الذي اصمم المشروع له حيث ان هذه الشركة تمتلك نظام تستخدمه للباركود ويريدون عمل Integration له مع الجريت بلينز وطلبوا ان تكون عملية تبادل البيانات بواسطة الملفات النصية لذا علينا ان نصمم المشروع وفقا لمتطلبات العميل مع العلم ان استخدام eConnect كان سيوفر على جانب من الجهد البرمجي خصوصا فيما يتعلق بعملية Validation للبيانات حيث مع الملف النصي سوف اضطر للتحقق من البيانات برمجيا للتاكد من انها تصلح لتكوين Transactions في برنامج الجريت بلينز بينما في eConnect تتم عملية التحقق بشكل شبه ذاتي.

شكرا اخي على مشاركتك ونتمنى تواصل باقي الاعضاء معنا لكي تكتمل الفائدة من المواضيع المطروحة لان الاسئلة التي قد يطرحها الاعضاء سوف تسلط الضوء على جوانب لم يتم التطرق اليها ضمن الموضوع وبتالي تكون الفائدة اعم واشمل.
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
قديم 19-Jan-2012, 06:42 PM   #10
humam
مشرف منتدى المطورين
افتراضي

الايعاز Import_CloseFile ويستخدم لأغلا ق الملفات النصية التي تم فتحها بواسطة العبارة Import_OpenFile والصيغة العامة لهذه الدالة هي :

كود:
Import_CloseFile (file_ID)
تمتلك هذه الدالة بارامتر واحد هو File ID والذي يمثل معرف الملف الذي تعيده الدالة Import_OpenFile() وتعيد هذه الدالة قيمة صحيحة صفر في حالة اغلاق الملف بصورة صحيحية وتعيد File ID في حالة عدم تمكنها من اغلاق الملف بشكل صحيح.

الدالة Import_GetNextField() وتستخدم لاسترجاع قيمة الحقل الحالي ثم الانتقل وبشكل ذاتي الى الحقل التالي والصيغة العامة لهذه الدالة هي :

كود:
Import_GetNextField (file_ID)
وهي تمتلك ايضا برامتر واحد يمثل معرف الملف الذي تعود به الدالة Import_OpenFile الاستخدام الامثل لهذه الدالة هو ضمن حلقة تكرار للمرور على كل حقول السجل Record الحالي وقراءة قيمها وكل ما نحتاج اليه هو معرفة عدد الحقول وهذا توفره الدالة Import_OpenFile ايضا وبتالي يمكن استخدام For do للقيام بهذه المهمة لان القيمة القصوى للتكرار معروفة.

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

كود:
Import_GetNextRecord (file_ID)
وهي تمتلك ايضا برامتر واحد يمثل معرف الملف الذي تعود به الدالة Import_OpenFile ولكن القيمة المعادة من هذه الدالة هي قيمة منطقية تكون false لكي تشير الى وجود سجلات اخرى ضمن الملف واننا لم نصل الى نهاية الملف وتعيد القيمة true لتشير الى نهاية الملف او ما يعرف EOF Error .
__________________
GP Techno-Functional Consultant
humam غير متواجد حالياً   رد مع اقتباس
إضافة رد


يتصفح الموضوع حالياً : 1 (0 عضو و 1 ضيف)
 
أدوات الموضوع
انواع عرض الموضوع

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

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
مساعده في Dexterity y85.fox مواضيع المطورين الأخرى 4 19-Jan-2015 01:31 PM
تصغير حجم قاعدة البيانات بحذف الـ Log File Monzer Osama منتدى أكواد ومواضيع الـ SQL Server 20 15-Oct-2013 10:28 AM
Dexterity هاني مواضيع المطورين الأخرى 22 18-May-2013 08:54 AM
Question related to Dexterity mkhatib مواضيع المطورين الأخرى 2 05-May-2012 09:29 AM
Triggers in Dexterity humam مواضيع المطورين الأخرى 6 29-Apr-2012 04:18 AM


جميع الأوقات بتوقيت GMT +3. الساعة الآن 11:39 PM.


Powered by vBulletin® Version 3.8.3

الموقع والمنتدى من تطوير » شركة المنذر للاستضافة والتصميم

Copyright © 2000-2010 Jelsoft Enterprises Limited.
الموقع لا يمثل أي جهة رسمية بل هو جهد شخصي يرمي الى تجميع القدرات في برنامج جريت بلينز