• 0
a.jallad

التعامل مع قواعد البيانات الاخرى Sql – Mysql – Mdb من خلال الفوكس برو

سؤال

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

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

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

المهم :

للتواصل مع قواعد البيانات الاخرى لا بد من وجود وصلة خير وهي هنا نوعان ODBC و OLEDB

ويمكن تحميل النوعان من موقع Microsoft

ولان للفوكس برو دائما اكثر من طريقة لانجاز وحل الواجبات سأشرح هنا طريقة طريقة التعامل عبر Connection String

تسلسل الاحداث يقع ضمن البنود التالية:

انشاء اتصال مع قواعد البيانات ( بواسطة ODBC او OLEDB Provider )

سحب ما تريد من بيانات لجهازك

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

حفظ البيانات بعد التأكد من عدم وجود مشاكل

اغلاق الاتصال

انشاء اتصال ( Sqlstringconnect )

lcConnection = [Driver={Microsoft Access Driver (*.mdb)};DBQ=MyData.mdb;UID=Admin;PWD=pas]
oConn=Sqlstringconnect(lcConnection)
if oConn<0
Not Connected
Else
oConn= Connection No
endif

سحب البيانات للفوكس برو ( SQLExec )

 lnCmd=SQLExec(oConn, "SELECT * FROM Emp ", "LocalCursor")
if lnCmd < 0
Error
Else
Cursor is ready
endif

تجهيز الــ Cursor لارسال التعديلات للجدول الرئيسي بواسطة الامر CursorSetProp

CursorSetProp( "TABLES", "MyData.Emp", "LocalCursor" ) تحديد الجدول
CursorSetProp( "KEYFIELDLIST", "EmpNO", "LocalCursor" ) تحديد المفتاح الرئيسي
CursorSetProp( "UPDATABLEFIELDLIST", "EmpName, EmpTel", "LocalCursor") قائمة المتغيرات
CursorSetProp( "UPDATENAMELIST", "EmpNO MyData.Emp.EmpNO, EmpName MyData.Emp.EmpName, EmpTel MyData.Emp.EmpTel", "LocalCursor" ) قائمة الحقول التي سيتم التخزين فيها
CursorSetProp( "WHERETYPE", 1, "LocalCursor" ) لاختيار نوع الحفظ
CursorSetProp( "SENDUPDATES", .T., "LocalCursor" ) لقبول ارسال البيانات للجداول
CursorSetProp( "Buffering", 5, "LocalCursor" ) لتحديد الية التعامل مع السجلات وطريقةحجزها

الان الـــ Cursor جاهز ويتم التعامل معه كأي جدول فوكس برو عادي

وبعد الانتهاء من العمل يتم حفظ التعديلات باستخدام الامر TableUpdate

Local llOk
llOk = Tableupdate( .T., .T., 'LocalCursor' )
If llOk
Done…
Else
Error while saving….
Tablerevert( .T., ' LocalCursor' )
Endif

واخيرا الغاء الاتصال باستخدام الامر SQlDisconnect

SqlDisconnect(oConn)

والمثال المرفق يوضح العمليات السابقة عن طريق الربط مع قاعدة بيانات Access

Remot.rar

مع التحية

ويتبع ان شاء الله

1

شارك هذا الرد


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

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

  • 0

السلام عليكم وتحياتي للاخ شادو المبدع 

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

حبيت ان اذكر الخصائص للادوات والامثله عليها من المصدر اي كما شرحها فيجوال فوكس برو 

 

سأُخالفك الرأي هنا يا فراس...فالفرق ما بين الردود ظاهر ويميزه الجميع فلا مجال للنقاش في هذا الموضوع، ولا مجال الا للكلام المباشر الصريح

 

وردي هنا ليس لابراز الصح من الخطأ... فهذا ليس ما يثير غضبي الآن

 

ولأتكلم بصراحة ....كان بعدي في البداية عن المنتدى بسبب الأحاديث الجانبية التي أصبحت تُدار هنا وهناك ( ولن أقدم أي تفسير لما أقول )

 

أعتقد وحسب فهمي للأمور أننا في منتدى علمي مفتوح للنقاش....وهذا النقاش يحتمل الصح والخطأ....

 

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

 

 

سُمي منتدى للحديث والنقاش المباشر للوصول للمعلومة الصحيحة ....وليس لمتابعة المواضيع على الخاص....( الا اذا كان لدى أحد الأعضاء الأكارم أي وجهة نظر أخرى )

 

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

 

وللتأكيد أكثر....أنا أتكلم عن المواضيع المطروحة في المنتدى للنقاش وليس عن أي شؤون أخرى

 

هذه وجهة نظري...فاما أن نستمر على المنتدى....واما أن نتحول على الخاص

 

والله من وراء القصد

 

مع التحية للجميع ( على العام والخاص )

0

شارك هذا الرد


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

الاخ العزيز شادو

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

تختلف وجهات النظر فيه 

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

فثلاً 

انت ذكرت التوضيح الاتي

SQLSETPROP

يستخدم لتحديد بعض الخصائص المتعلقة بالاتصال الحالي ( موجودة كلها بملفات المساعدة بالفوكس )

وانا ذكرت 

1- SQLSETPROP:يلغي الاجراءات والتغييرات الذي يتم اجراءها في الاتصال الحالي.

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

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ولماذا هذا الغضب في اسلوب ردك لا داعي لهُ وكما تقول انت منتدى نقاش علمي  وبما انهُ نقاش علمي يختلف فيه الاراء وهذا من الجيد أليس كذلك؟
اما عن الطرح الخاص لم اذكر انهُ في المنتدى فهنالك الايميل والفيس بوك والموبايل وعندما ذكر لي العضو انه متناقض قصد فيه الكلام او انهُ لم يعرف المقصود ونحن بدورنا بقوم بالامكان للتوضيح 
وليس الردود انا الافضل او انت فللبرمجة قواعد كل مستخدميها يتبعوها 
اما عن ابتعادك بسبب الكلام هنا وهنالك فيجب ان لا يوثر فيك وانت من نصحني بذلك وهو لم يوثر في واردت الانسحاب لانهُ كان خياري برجوع الاعضاء اذا كنت انا قد اغضبتهم والله علي شهيدا لم اكن افكر في ردودي فقط في تقديم  الحلول قدر المستطاع لطالبيها 
لانه مرت لي تساولات في بداية عملي لم يقدمها لي احد 
 
وهل في كلامي خطا او شك من عدم الصحة ان انتظرك هنا كما تقول ليس على اي شي خاص

 

 

عزيزي فراس....

بداية غضبي ليس موجه لك أنت بشكل شخصي

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

ولا يتعلق بالأحاديث الجانبية ( سواء الشخصية، أو سواء ما دار بيننا من حديث أثناء تفكيرك بالانسحاب من الاشراف، أو أي أحاديث أخرى...وأنت تعلم أن معظم ما دار بيننا بشكل خاص لم يكن متعلقاً بالبرمجة )

 

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

ولا أعتقد أن مواضيع المنتدى قد تجزّأ ما بين الفيس والموبايل والايميل.....

 

وأنت كمشرف تريد انعاش المنتدى.....وهذا لن يتم اذا كان جزءاً من المواضيع تناقش هنا وجزء يناقش هناك

 

ولا أعتقد أن هناك ما يمنع أي أحد من المشتركين من وضع رده هنا...

 

وبصراحة لو أردت الخاص بمواضيع المنتدى....لكان ذلك من زمن...

 

عزيزي المواضيع...التي تثار هنا وهناك....بصراحة موضوعها لا يهمني كثيرا لانها ليست من شأني....

 

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

 

أتمنى أن أكون واضحاً...

 

ودمتم،،

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

شارك هذا الرد


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

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

ويزعجني جدا هذا الكلام منك وكلامي ايضا
 

0

شارك هذا الرد


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

عزيزي فراس....

 

أولاً: كلنا ندخل هنا من مبدأ الخير ومبدأ الاستفادة من النقاشات سواء بأخذ معلومة جديدة أو باعطاء معلومة....

 

ثانياً: أعلم مقدار الجهد الذي تبذله لابقاء المنتدى نشيطاً ولا أنكره عليك، على العكس أحُثك على الاستمرار وجميع مجهوداتك محط تقدير

 

ثالثاً: اتمنى ان لا تُشخصن الأمور ( لاني لم أشخصنها ولم أتلفظ بأي شيء مُسيء أو أشير لك بشكل شخصي )، وبالنسبة للفيس بوك أنت تعلم بأني أعلم بمجموعتك وبأني مشارك بها فلا مشكلة لي بهذا.

 

رابعاً: أستغرب وأستعجب لذكر الانسحاب من الاشراف !!! أو موضوع نجاحك أو فشلك فيه !!! فهذا ليس من اختصاصي.

 

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

 

وحتى لا تظن أن الكلام موجه لك، أقول بأن الكلام موجه لمن حوّل أو يحوّل أي مشاركة هنا للخاص...

 

وأعود....وأقول الله من وراء القصد

 

ودمتم بود

0

شارك هذا الرد


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

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

انتهى النقاش على هذة النقطة في هذا الموضوع 

واتمنى عدم ذكر اي مشاركة لا تخص الموضوع 

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

0

شارك هذا الرد


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

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

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

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

المهم :

للتواصل مع قواعد البيانات الاخرى لا بد من وجود وصلة خير وهي هنا نوعان ODBC و OLEDB

ويمكن تحميل النوعان من موقع Microsoft

ولان للفوكس برو دائما اكثر من طريقة لانجاز وحل الواجبات سأشرح هنا طريقة طريقة التعامل عبر Connection String

تسلسل الاحداث يقع ضمن البنود التالية:

انشاء اتصال مع قواعد البيانات ( بواسطة ODBC او OLEDB Provider )

سحب ما تريد من بيانات لجهازك

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

حفظ البيانات بعد التأكد من عدم وجود مشاكل

اغلاق الاتصال

انشاء اتصال ( Sqlstringconnect )

lcConnection = [Driver={Microsoft Access Driver (*.mdb)};DBQ=MyData.mdb;UID=Admin;PWD=pas]oConn=Sqlstringconnect(lcConnection)if oConn<0Not ConnectedElseoConn= Connection Noendif
سحب البيانات للفوكس برو ( SQLExec )

lnCmd=SQLExec(oConn, "SELECT * FROM Emp ", "LocalCursor")if lnCmd < 0ErrorElseCursor is ready endif

تجهيز الــ Cursor لارسال التعديلات للجدول الرئيسي بواسطة الامر CursorSetProp

CursorSetProp( "TABLES", "MyData.Emp", "LocalCursor" ) تحديد الجدولCursorSetProp( "KEYFIELDLIST", "EmpNO", "LocalCursor" ) تحديد المفتاح الرئيسيCursorSetProp( "UPDATABLEFIELDLIST", "EmpName, EmpTel", "LocalCursor") قائمة المتغيراتCursorSetProp( "UPDATENAMELIST", "EmpNO MyData.Emp.EmpNO, EmpName  MyData.Emp.EmpName, EmpTel MyData.Emp.EmpTel", "LocalCursor" ) قائمة الحقول التي سيتم التخزين فيها CursorSetProp( "WHERETYPE", 1, "LocalCursor" ) لاختيار نوع الحفظCursorSetProp( "SENDUPDATES", .T., "LocalCursor" ) لقبول ارسال البيانات للجداولCursorSetProp( "Buffering", 5, "LocalCursor" ) لتحديد الية التعامل مع السجلات وطريقةحجزها

الان الـــ Cursor جاهز ويتم التعامل معه كأي جدول فوكس برو عادي

وبعد الانتهاء من العمل يتم حفظ التعديلات باستخدام الامر TableUpdate

Local llOkllOk = Tableupdate( .T., .T., 'LocalCursor' )If llOkDone…ElseError while saving….Tablerevert( .T., ' LocalCursor' )Endif
واخيرا الغاء الاتصال باستخدام الامر SQlDisconnect

SqlDisconnect(oConn)
والمثال المرفق يوضح العمليات السابقة عن طريق الربط مع قاعدة بيانات Access

attachicon.gifRemot.rar

مع التحية

ويتبع ان شاء الله

 

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

0

شارك هذا الرد


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

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

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



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

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

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