الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Foxpro With Access

بدأه kmb في 20 سبتمبر 2009 · 5 رد · 1,448 مشاهدة · في قواعد بيانات Visual FoxPro
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

اخواني الكرام

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

والقيام بالعمليات على جدوال الاكسس كالحذف والتعديل والاضافة

حالوت عمل اتصال بين القاعدتين ونجحت في تكوين view

لكن لا اقدر الا على اسعراض البيانات فقط اما التعديل غير ممكن وحين حاولت اثنا تكوين view

تحديد المفتاح الاساسي لاتمكن من التعديل رفض الفوكس برو تكوين view

علما بن المفتح الاساسي لجدو الاكسس المطلوب مكون من اربعة حقول

وهو لبرنامج شؤون موظفين اجنبي مرفق مع جهاز بصمة ومطلوب مني عمل تقرير غياب

ارجو الا اكون قد اثقلت عليكم

#2

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

بالابتعاد عن Remote Views والاعتماد على أوامر SqlExec في التعامل مع قواعد البيانات الأخرى جرب الاوامر التالية:

عمل اتصال مع قاعدة البيانات:

Public oConn
oConn=0

lcDataBaseName=[Accs]

local oConn, lcString, lcDataBase, lcDriver, lcUID, lcPWD
lcDataBase = lcDataBaseName + [; ]
lcDriver   = [ {Microsoft Access Driver (*.mdb)}; ]
lcUID	  = [ Admin; ]
lcPWD	  = [ ]

lcString = [Driver=] + lcDriver + [DBQ=]+ lcDataBase + [UID=]+ lcUID + [PWD=] + lcPWD

oConn = sqlstringconnect(lcString)

if oConn < 1
	messagebox([غير قادر على الاتصال بقواعد البيانات])
	return .f.
endif

جلب البيانات من الـ Access وتخزينها في Cursor

cmd=[ Select * from MyTable]
nCmd= sqlexec( oConn , cmd, [crsMyCursor] )
if nCmd<1
	messagebox([خطأ])
	return .f.
endif
select crsMyCursor

من هنا تبدأ بالتعامل مع الــ crsMyCursor بالنموذج أو البرنامج الذي تقوم باعداده.....كأنك تعامل مع أي جدول عادي.....من ناحية الاضافة والتعديل والحذف ........

يتبقى عليك هنا ارسال بعض الاوامر لحفظها في الــ Accsess بواسطة أومر SqlExec على النحو التالي:

للاضافة

Cmd=[ Insert into MyTable (Field1, Field1) select Field1, Field1 from crsMyCursor where……. ]
OR
Cmd=[ Insert into MyTable (Field1, Field1) values +;
[('] + thisform.text1.value + [', '] + thisform.text2.value + [')]

nCmd= sqlexec( thisform.oConn , Cmd)
if nCmd<1
	messagebox([خطأ])
	return .f.
endif

للتعديل

Cmd=[ update MyTable Set Field1 = ] +[']+ thisform.text1.value +[']+;
[, Field2 = ] +[']+ thisform.text2.value +['] +;
[ where MyTable.MainID= '] + ALLTRIM(STR(MainIdReference))+[']

nCmd= sqlexec( thisform.oConn , Cmd)
if nCmd<1
	messagebox([خطأ])
	return .f.
endif

وللحذف

Cmd=[ delete from MyTable where MyTable.MainID = '] + ALLTRIM(STR(MainIdReference))+[']

nCmd= sqlexec( thisform.oConn , Cmd)
if nCmd<1
	messagebox([خطأ])
	return .f.
endif

لا تستصعب الموضوع فهو سهل جداً بمجرد أن تعتاد عليه... وكما ترى فان معظم الكود مكرر،

كل ما عليك هو:

- تغيير تعريف الـ cmd حسب رغبتك علما بأنه جملة SQL عادية يتم فيها تخزين الامر الذي نود تنفيذه

- تحديد أسماء الحقول والمتغيرات وقاعدة البيانات حسب ما هو موجود لديك

وهذا مثال بسيط فيه بيان لعملية الاضافة والاستعراض فقط ( عذرا على عدم اكماله لضيق الوقت ولكن فيه الافكار الاساسية ) accs.rar

ولا تتردد في طرح أي استفسار

وكل عام وانتم بخير..

مع التحية

أستغفر الله العظيم و أتوب إليه

#3

هل توجد امكانية لعمل العكس اي التعامل مع ملف فوكس وبرو من خلا اكسيس وذلك باستجلاب هذه البيانات وحفظها في ملف اكسيس

#4

نعم يمكن ذلك،هذا الموقع يشرح بالصور كيفية الربط

أستغفر الله العظيم و أتوب إليه

#5

مشكور اخي shadowz وما قصرت

وجعلة الله في ميزان حسناتك

#6

العفو أخي kmb

للعلم يوجد ثلاثة طرق للتعامل مع قواعد البيانات المختلفة هي:

1. SQL Pass-Through ( برأيي هي الأقوى من ناحية التحكم والاداء وان كانت صعبة الاستخدام للوهلة الاولى )

2. Remote Views ( سهلة من ناحية التصميم والتعامل، وعيبها عدم القدرة على تغيير شروط الفلترة )

3. CursorAdapter ( تقريبا تجمع ما بين الاسلوبين السابقين...حيث تعطيك قوة تحكم كالاولى وسهولة تصميم كالثانية )

وان شاء الله يأتي يوم ونتكلم عنهم بالتفصيل

مع التحية..

أستغفر الله العظيم و أتوب إليه

مواضيع مشابهة