السلام عليكم ورحمة الله وبركاته،،
كثرت الاسئلة حول هذا الموضوع سابقا، وبصراحة لم يكن لي دراية بها لعدم حاجتي لها ولاعتمادي على قواعد بيانات الفوكس برو بشكل اساسي، والمهم جاءت الحاجة والله لا يحشركم هيك حشرة
علما بانه علاقتي بالثلاثة قواعد المذكورة اعلاه علاقة وثيقة لا تتجاوز المعرفة بالاسم والحمد لله
المهم :
للتواصل مع قواعد البيانات الاخرى لا بد من وجود وصلة خير وهي هنا نوعان 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
مع التحية
ويتبع ان شاء الله
