اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

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

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

الأخوة والأخوات مشرفي وأعضاء المنتدى الكريم

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


Private Sub Form_Load()

If Date = #10/1/2012# Then


'لحذف العلاقات بين الجداول

Dim DB As DAO.Database, i As Integer

Dim totalRelations As Integer

	    Dim RS As Recordset

	    Dim TableName As String

Set DB = CurrentDb()

totalRelations = DB.Relations.Count

If totalRelations > 0 Then

For i = totalRelations - 1 To 0 Step -1

DB.Relations.Delete (DB.Relations(i).Name)

Next i

End If


'لحذف الجداول

	    Set RS = DB.OpenRecordset("Select name from MsysObjects where (type = 1 and name not like 'Msys*')")

	    Do While Not RS.EOF

	    TableName = RS("Name")

	    On Error Resume Next

	    DoCmd.DeleteObject acTable, TableName

	    RS.MoveNext

	    Loop

	    RS.Close

End If


End Sub

والكود يعمل بشكل ممتاز جدا

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

قاعدة الجداول فقط واسمها : برنامج متابعة السيارات_be.mdb

قاعدة النماذج والتقارير والجداول المرتبطة واسمها : برنامج متابعة السيارات.mdb

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

مع العلم أن القاعدتين موجودين في الدرايف D داخل مجلد ( برنامج متابعة السيارات )

وهل سوف يعمل الكود إذا ما تم وضعه على الجهاز الآخر الذي يشارك قاعدة البيانات ؟

مع جزيل الشكر والتقدير لكل من ساهم في الحل

قام بنشر (معدل)

فكرة قد خطرت في بالي

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

كود فتح قاعدة بيانات من قاعدة اخرى

ShellExecute Me.hwnd, "open", "D:\11.mdb", "", "", 1

طبعا 11 هو اسم القاعدة المراد تشغيلها وضع هذا الكود في قسم التصريحات العامة قبل اي كود
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long



ملاحظة

هذه الاكواد من صنع معلمنا ( ابا خليل ) جزاه الله كل خير و جزاه الجنة

تم تعديل بواسطه أبو آدم
:احتواء الكود ضن المحرر
قام بنشر

جزاك الله خيرا

ولكنها ليست من صنعي وانما وجدتها فنقلتها

ورب حامل فقه الى من هو افقه منه

الاخ alexandrien

الغالب ان الحذف يتم على الجداول المرتبطة في القاعدة الحالية .

وتستخدم هذه الخطوة لربط جداول اخرى من قاعدة اخرى

ولا يتصور حذف جداول تحتوي على بيانات لان هذا شيء خطير

وعلى كل حال كود الحذف مقدور عليه ، فقط لو بينت لنا الغاية من ذلك

قام بنشر

جزاك الله خيرا

ولكنها ليست من صنعي وانما وجدتها فنقلتها

ورب حامل فقه الى من هو افقه منه

الاخ alexandrien

الغالب ان الحذف يتم على الجداول المرتبطة في القاعدة الحالية .

وتستخدم هذه الخطوة لربط جداول اخرى من قاعدة اخرى

ولا يتصور حذف جداول تحتوي على بيانات لان هذا شيء خطير

وعلى كل حال كود الحذف مقدور عليه ، فقط لو بينت لنا الغاية من ذلك

أولاً أحب أن أشكر الأخ محمد أيمن على الرد على سؤالي له جزيل الشكر والتقدير

ثانياً أستاذنا الغالي أبو خليل

أشكر لك تجاوبك على الموضوع

والغرض من هذا الكود هو حماية البرنامج حيث أنني أقوم به لكي يعمل بشكل تجريبي

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

هذا هو الغرض الرئيسي

ولك جزيل الشكر

قام بنشر

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

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

اما الجداول فالاولى ان تكثف عليها الحماية وهذه الحماية بحد ذاتها مطلب للعميل

قام بنشر

اخي الكريم لدي طريقة افضل

وهي الربط مع الريجستري بتاريخ

اي جعل البرنامج تجريبي لمدة ( 15 يوم ) مثلا وعند انقضاء هذه المدة لايمكن فتح البرنامج الا بادخال رقم التسجيل

سارفع لك مثالا ولكن امهلني بعض الوقت

قام بنشر

هذا هو المثال كما وعدتك

يقوم البرنامج بالربط مع الريجستري ويعطي المستخدم مدة 15 يوم للعمل

طبعا في حال تلاعب المستخدم في تاريخ الجهاز لن يفتح البرنامج :wink2: :wink2: :wink2:

وبعد انقضاء المدة التجريبية تظهر رسالة بانتهاء الفترة التجريبية

عندها ياتي دورك اخي الكريم في اعطاء المستخدم النسخة الكاملة

اما الجداول فالاولى ان تكثف عليها الحماية وهذه الحماية بحد ذاتها مطلب للعميل

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

قام بنشر

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

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

اما الجداول فالاولى ان تكثف عليها الحماية وهذه الحماية بحد ذاتها مطلب للعميل

كلامك مضبوط يا أخي

وشكراً لك على وجهة نظرك المهمه فعلاً

جزاك الله خيرا

قام بنشر (معدل)

اخي الكريم لدي طريقة افضل

وهي الربط مع الريجستري بتاريخ

اي جعل البرنامج تجريبي لمدة ( 15 يوم ) مثلا وعند انقضاء هذه المدة لايمكن فتح البرنامج الا بادخال رقم التسجيل

سارفع لك مثالا ولكن امهلني بعض الوقت

أخي العزيز محمد أيمن

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

وجزاك الله خيرا

تم تعديل بواسطه أبو آدم
: حذف الاقتباسات المكررة
  • 11 years later...
قام بنشر

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

قام بنشر
12 ساعات مضت, رولي said:

هل يمكن للعميل أن يصل إلى ملف الرجيستري الخاص بالبرنامج ويحذفه؟

لا , لا يمكن لانه لا يعرف ماذا حفظت في ريجيستري بالتفصيل , واذا عرف ذلك نعم يمكن ... بهذه الطريقة حسب المثال الاعلى
 

DeleteSetting "aa", "bb", "trial"

 

  • Like 1
  • Thanks 1
قام بنشر
14 ساعات مضت, Shivan Rekany said:

لا , لا يمكن لانه لا يعرف ماذا حفظت

هلا ومرحب  بمعلمنا /shivan

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

جزاكم الله كل خير

قام بنشر

شكرا جزيلا أخي
لكن هل يمكن تغيير aa , bb , trial ؟  أم أن هذه أكواد ثابتة؟ 

DeleteSetting "aa", "bb", "trial"
قام بنشر (معدل)
في 23‏/9‏/2023 at 11:22, رولي said:

لكن هل يمكن تغيير aa , bb , trial ؟  أم أن هذه أكواد ثابتة؟ 

نعم يمكنك تغيره باسماء اللي حضرتك تريده 
 

في 23‏/9‏/2023 at 10:39, الحلبي said:

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

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

تم تعديل بواسطه Shivan Rekany
  • Thanks 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information