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

[ تمت الإجابة ]مشكلة عند تقسيم قواعد البيانات

بدأه almalek2010 في 19 يناير 2010 · 3 رد · 810 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخوتي الاعزاء لقد عملت برنامج على الاكسس وهو جاهز الان ولكن هناك مشكلة عندما أقوم بتقسيم قواعد البيانات يتم تعطيل الاوامر هل من حل لذلك؟؟؟!!!!

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

اسم المستخدم admin

كلمة المرور admin

Purchase Programs.rar

#2

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

عزيزي almalek2010

عندك مشكلة في الكود هنا لأنك تعمل index

post-193655-12639108852945_thumb.jpg

يجب أن تعيد صياغة الكود

والله لا يحضرني الحل الآن

تم تعديل هذه المشاركة بواسطة hamidymom في 19 يناير 2010 في 17:22

post-12787-12741339659298.jpg

ومامن يد إلا يد الله فوقها *** وما من ظالم إلا سيبلى بأظلم

تفضل أخي الكريم | موسوعة الحميدي الذهبية | بأجزائها الثلاثة مع هدية الموسوعة .

#3

اخواني الأفاضل

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

هذا الموضوع يوجد به حركه ذكيه تدعو من يقوم بإيجاد الحل يقع في حيرة من أمره مع ان وضع الأكواد صحيح فيما يخص Index و Seek

ولكن اذا عرف السبب بطل العجب

الآن دعونا نتعرف على المشكلة عند تنفيذ امر تقسيم القاعده او حتى تشغيل النموذج LOG بعد التقسيم

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

اما بعد التقسيم فيحدث الخطأ !!!!! شيء عجيب فعلا

الآن عرف السبب : الجداول اصبحت في هذه الحالة مرتبطة اي Linked Tables اي انها اصبحت في قاعدة ثانية ولن يتعرف عليها الكود السابق

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

Public Function OpenForSeek(TableName As String) As Recordset
 Set OpenForSeek = DBEngine.Workspaces(0).OpenDatabase _
 (Mid(CurrentDb().TableDefs(TableName).Connect, _
 11), False, False, "").OpenRecordset(TableName, _
 dbOpenTable)
End Function

ثم نقوم بإزالة الكود السابق هذا او ايقافه عن العمل

Dim MyDb As Database
Dim Tuser As Recordset
Set MyDb = DBEngine.Workspaces(0).Databases(0)
Set Tuser = MyDb.OpenRecordset("TUSER")

ونستبدله بإستداعاء الوظيفة الجديده بهذه الطريقة

Private Sub FOK_Click()
Dim rst As Recordset
Set rst = OpenForSeek("Tuser")
rst.Index = "primarykey"
rst.Seek "=", Me![FUSER]

If rst.NoMatch Then
 MsgBox " You'r can't ues these is program "
Else
 If Me![FPASS] = rst![USERPASS] Then
 DoCmd.Close
 If rst![USERPASS] = "ADMIN" Then
 	DoCmd.OpenForm "ADMINMENU"
 	GUSER = rst![UserName]
 	GLAVEL = rst![USERLAVL]
 Else
 	DoCmd.OpenForm "USERMENU"
 	GUSER = rst![UserName]
 	GLAVEL = rst![USERLAVL]
 End If
 Else
 x = x + 1
 If x < 4 Then

 	MsgBox " You'r Password is Error " & x
 Else
 	Quit
 End If

 End If

End If

End Sub

والآن لنجرب ما قمنا بعمله

نجد ان البرنامج قد عمل بدون أخطاء واشتغل 100%

ملاحظة : تم وضع القاعدتين Purchase Programs.mdb ( تحوي النماذج والجداول المرتبطه ) و Purchase Programs_be.mdb ( تحوي الجداول الرئيسية فقط ) في المجلد C:\Purchase Programs

اي عند فتح البرنامج يجب ان يكون بهذه الطريقة C:\Purchase Programs

فإن رغبت في تغيير مكان المجلد فيجب عليك اعادة ربط الجداول من القاعدة الثانية

Purchase Programs.rar

بالتوفيق

تم تعديل هذه المشاركة بواسطة zahrah في 24 يناير 2010 في 22:56

#4

الف شكر أختي zahrah

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

شكرا لك

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