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

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

مغلق
بدأه mkmk في 6 مايو 2006 · 19 رد · 1,492 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخوانى الاعزاء اهديكم اليوم كود انا اعتبرة جديد

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

و الكود هو

if [اسم الحقل]=20 then

[DoCmd.Quit

End If

End Sub

و يفصل ان يكون اسم الحقل هو مفتاح اساسى او ان يكون ترقيم تلاقى

و يوضع هذا الكود فى حدث الحالى للنموذج

و ارجو من السادة المشرفين التعديل على هذا الكود

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

اخوكم محمد خليل

#2

اخوانى الاعزاء

اليكم الكود الصحيح مجرب و يعمل 100/100

If ([اسم الحقل]) = 100 Then

MsgBox "عليكم الاتصال بالمبرمج"

DoCmd.Quit

end if

#3

اخي الفاضل محمد خليل

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

بارك الله فيك على هذه المحاولات

الان حاول تجعل عدد السجلات قليل مثل 10 سجلات فقط

امسح جميع السجلات من الجدول واجعله فاضي

اضف عدد 10 سجلات من خلال النموذج

ثم اضف سجل جديد ليكون عدد 11 ستظهر لك الرساله انه لايمكن اضافة سجل جديد لانك محدد السجلات بـ 10 سجلات فقط

انظر للجدول ستجد به 11 سجل

لو فتحت النموذج مره ثانية واضفت سجل جديد فسوف يتم وضعه في الجدول ليكون 12 سجل وهكذا

يعني ان هناك خطأ في الكود

جرب هذا المثال حسب شرحك ( يوجد بالمثال عدد 6 سجلات اكمل حتى 10 ثم اضف سجل جديد وهكذا )

Demo.rar

#4

يمكن التحكم تماما من خلال تعديل الكود الى مايلي

Private Sub Form_Current()
 Call LockTable("Table", 65)
End Sub

اما الاجراء LockTable فهو على الشكل التالي

Sub LockTable(ByVal TableName As String, ByVal MaxRecord As Long)

Dim sExpr, sCriteria As String
Dim CuurentRecord As Long

sExpr = "[ID]"
sCriteria = ""
 CuurentRecord = DCount(sExpr, TableName, sCriteria)

If CuurentRecord >= MaxRecord Then
MsgBox "عليكم الاتصال بالمبرمج"
DoCmd.Quit
End If
End Sub

مع ملاحظة امكانية اضافة الكود في بقية النماذج و التقارير

مرفق المثال بعد التعديل

LockTables.rar

تم تعديل هذه المشاركة بواسطة aboeessaa في 7 مايو 2006 في 11:35

#5

تعديل بسيط

ضع الكود هذا عند تحميل الفورم

If DCount("[ID]", "Table") > 10 Then
MsgBox "اتصل بالمبرمج"
DoCmd.Quit
End If

Demo.rar

تم تعديل هذه المشاركة بواسطة المبرمج2003 في 7 مايو 2006 في 12:32

ريح من الزفرات تعصف في الحشى &&& و ورائها مطر من العبرات

ابو حسن

#6

شكرا الى الاستاذة زهرة على هذا الرد و شكرا للاستاذ / خبير الاكسس المبرمج 2003 و طبعا تحيه الى الاستاذaboeessaa

و هذه تحيه منى الى كل المشرفين و القائمين على هذا المنتدى الرائع الذى طالما افدانى كثيرا

و قد قمت بتعديل الكود

و هو الان يعمل 200/200 و ليس 100/100

اخوكم محمد خليل

#7

بارك الله فيكم جميعا

استاذنا ابو عيسى

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

استاذنا المبرمج

الكود الذي تفضلت به نفس الكود الذي وضعه الاستاذ محمد خليل ولكن مع استخدام دالة المجاميع DCount وتعطي نفس النتيجه لهذا عند استخدام هذه الدالة فهي تقوم بعملية عد السجلات في الجدول فقط ولا تقوم بإيقاف عملية الاضافة

طبعا المثال الذي تفضلتم به موجود لديك افتح النموذج واضف سجلات جديده ستجد ان الجدول يقبل السجلات حتى لو وصلت الى 100 سجل افتح الجدول بعد عمليات اضافة السجلات وانظر عدد السجلات والمفروض ان لا يقبل البرنامج اكثر من 10 سجلات في الجدول حسب الكود الذي قمت بوضعه عن طريق الدالة DCount

قم بالتجربة وانظر هل هذه الملاحظة صحيحة ام لا

اختكم

زهره

#8

الاستاذة / زهرة

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

شكرا لكى على هذا الرد

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

و مرفق نفس المثال بعد التعديل

اخوكم محمد خليل

Demo.rar

#9

الاخت زهرة

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

هذا مثال الاخ المبرمج 2003

و الكود يوضع فى حدث عند الحالى للنموذج

و مرفق مثال على ذلك

اخوكم محمد خليل

____________.rar

#10

اخي الفاضل : محمد خليل

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

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

ما هو المقصود من جعل البرنامج نسخة تجريبية ؟

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

لننظر الان ماذا يحدث داخل الكود الذي قمت بعمله انت والاخ المبرمج

1. يتم اضافة سجلات جديده ( على اعتبار ان البرنامج خالي من السجلات ) حتى يصل الى العدد المطلوب في الكود

2. يتم استدعاء الكود عند نقطه معينه وهي اذا تجاوز البرنامج العدد مثلا 10 سجلات

3. يتم اغلاق البرنامج

النقطة الاولى والثالثة صحيحه ولا عبار عليها

النقطة الثانية خطأ .............. لماذا ؟

لان البرنامج لا ينظر لمجمل السجلات ككل بل يتم التركيز على متى يصل العدد الى 10 سجلات فقط وبعدها ينهي البرنامج وهذا خطأ .

لو نظرت الى مثالك لاتضحت لك الرؤية . حسب الطريقه التالية :

1. قم بمسح عدد من السجلات من الجدول ( من ثلاثة الى اربعة سجلات )

2. قم بإضافة سجلات جديده حتى تظهر لك الرسالة وينهي البرنامج نفسه .

3. اعد فتح البرنامج وذلك بالضغط على مقتاح الشفت قبل فتح البرنامج ثم ارفع يدك عن مفتاح الشفت وافتح النموذج

4. اضف الان عدد من السجلات ( المفروض هنا ان البرنامج لا يقبل اي اضافة سجل جديد حسب ما تم تحديده في الكود )

5. افتح الجدول وانظر كم اصبح الان عدد السجلات لقد تجاوز الحد المسموح به وهو 10 سجلات

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

الكود الصحيح هو ما تفضل به الاخ ابو عيسى

#11

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

الاخت زهرة :angry: :angry: :D :D

نزلي المرفق اعلاه وشوفي هل تستطيعين زيادة السجلات عن 10

هذا الكود

If DCount("[ID]", "Table") > 10 Then
MsgBox "اتصل بالمبرمج"
DoCmd.Quit
End If

لو وضعناه عند تحميل الفورم وش يصير

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

ما المشكلة ؟؟ :( :(

لن يتم زيادة عدد السجلات طيب على كذا ضمنا ان البرنامج لن يسمح بتسجيل اكثر من 10 سجلات

اعتقد انه هذا ما يريده الاخ

طبعا هناك حلول كثيرة جدا كما تفضلوا بها الاخون وغيرها كثير

:lol: :lol: شكرا للجميع

ريح من الزفرات تعصف في الحشى &&& و ورائها مطر من العبرات

ابو حسن

#12

اعتقد انني لن اصل معكم الى حل

يمكن اضافة اكثر من 10 سجلات عن طريق النموذج

جرب الملف الخاص بك ويالاخ محمد خليل

يالتأكيد ستقول انه لا يمكن اضافة اكثر من 10 سجلات وانا اقول يمكن

يعد وصول العدد 10 في النموذج سوف يغلق البرنامج نفسه وهذا جميل

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

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

ولكن المشكله لازالت في الجدول فيوجد به اكثر من 10 سجلات

تأكد من الجدول هل به اكثر من 10 سجلات ام لا

#13

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

الاخت الاستاذة زهرة و الاخ المبرمج

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

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

بالاضافه هو انى استعملت هذا الكود و بعد ذلك قمت بتحزيم قاعدة البيانات عن طريق برنامج Microsoft Office Access 2003 Developer Extensions

الذى تعلمته طريق الشرح الوافى للاستاذة زهرة

#14

لا اخي الكريم mkmk لا يوجد جدل ولا شي ......... اختنا الغالية زهرة نحن طلابها *-) :D

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

اساسا اذا فتحت النموذج هذا على طول عند التحميل يقوم بجمع السجلات فإذا وجدها اكثر من 10 يقوم بإغلاق النوذج تلقائي فكيف تتم الإضافة ؟؟؟؟؟؟؟؟؟؟

ام انك تقصدين انه يضيف عن طريق الجدول مباشرة فكذلك مثال الاخ aboeessaa يمكن الاضافة عن طريق الجدول مباشرة

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

هل تستطيعين اضافة سجلات بعد ال 10

ارجو تجربته

وإذا كان هناك مشكلة ارجو توضيحها لي

Demo.rar

ريح من الزفرات تعصف في الحشى &&& و ورائها مطر من العبرات

ابو حسن

#15

اخي الفاضل محمد خليل

اخي المبرمج

لا يوجد جدل ان شاء الله ولكن كل ما هنالك ان هذا الكود لا يفي بغرض الحماية

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

1. الاكواد التي وضعتموها تعتبر من وجة نظر البرنامج خاصة بعد السجلات ولا تمنع من اضافة سجلات جديده في البرنامج

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

3. جميع تركيزكم انت والاخ محمد على عدد السجلات فقط ثم ينهي البرنامج نفسه اذا وصل الى 10 سجلات

4. اعلم والله العظيم ان البرنامج عندما تضع الكود له في اي حدث سواء في الحالي او بعد التحديث او في اي مكان من الاحداث سوف يقوم بالعد اذا وصلت عشرة سجلات ثم يغلق البرنامج نفسه .

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

انظروا الان الى الجدول كم عدد السجلات التي به هل زادت ام بقيت على عشرة سجلات .

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

خاص للاخ محمد خليل

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

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

انظروا الى هذه المشاركات تكاد تكون تقريبا نفس مشكلتكم

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

عبدالهادي الالمعي - عبدالمانع

/index.php?showtopic=58161

عدم اضافة اكثر من اربع سجلات

ابو عقيل - ايهاب عثمان

/index.php?showtopic=52187

كود لتوقف البرنامج بعد اكثر من 10 سجلات

ابن مسقط - ابو افنان

http://uni.hiarab.net/showthread.php?t=1476"

تم تعديل هذه المشاركة بواسطة zahrah في 8 مايو 2006 في 17:52

#16

اختي الغالية انا راح اجن :( :(

هل جربتي المثال الاخير واستطعتي اضافة سجلات ؟؟؟؟؟؟؟؟؟؟؟

انا لما اضيف تضهر لي الرسالة ثم يخرج من البرنامج بدون الاضافة فكيف يضيف معاكي

اتمنى تجاوبيني على هذي الجزئية فقط هل استطعتي الاضافة ام لا

ثانيا كود عبد الهادي الالمعي

Dim mm
mm = DCount("[اسم الحقل]", "[اسم الجدول]")
If mm > 10 Then
MsgBox (" هذا النسخة تجريبية لا يمكنها تعبئة أكثر من 10 سجلات ... راجع المبرمج  ")
Docmd.quit
End If

نفس ما تكلمنا عنه

ريح من الزفرات تعصف في الحشى &&& و ورائها مطر من العبرات

ابو حسن

#17

نعم اخي المبرمج استطعت اضافة 3 سجلات جديده

حيث كانت السجلات السابقه سبعة سجلات

والان اصبحت 10 سجلات فقط

ولم استطع اضافة اي سجل بعدها

لهذا يكون الكود الخاص بك هو

Private Sub Form_BeforeInsert(Cancel As Integer)
If DCount("[ID]", "Table") >= 10 Then
MsgBox "عليكم الاتصال بالمبرمج"
DoCmd.Quit
End If
End Sub

الان يعمل بشكل صحيح

هل عرفتم اين كانت المشكله ؟

حسنا انظروا لجزء من كود الاخ ابو عيسى

If CuurentRecord >= MaxRecord Then
MsgBox "عليكم الاتصال بالمبرمج"
DoCmd.Quit
End If
End Sub

وهذا الكود الخاص بك

If DCount("[ID]", "Table") >= 10 Then
MsgBox "عليكم الاتصال بالمبرمج"
DoCmd.Quit
End If
End Sub

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

تم تعديل هذه المشاركة بواسطة zahrah في 8 مايو 2006 في 18:41

#18

الاخت الاستاذة / زهرة

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

نشكرك على هذا المجهود الرائع الذى يبهرنا فى كل مناقشه

و شكر خاص الى الاستاذ / المبرمج

و لم اقصد من كلمه ( جدل ) اى معنى حاشا لله و المقصود منها هو المناقشه و المحاولات حتى نصل الى الحل الصحيح

و قد تعلمت من هذا المنتدى و خاصه من الاستاذة / زهرة التى اتمنى ان اكون احد تلاميذها فى هذا المجال

و لى سوال بسيط

هل تحزيم القاعدة لا يمنع من الدخول الى النماذج و الجداول و التقارير و لا يمنع من استيرادها ايضا ام لا ؟؟؟؟؟؟

اى لا يفى بغرض الحمايه

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

#19

انتي اضفت ثلاث سجلات لكن انا اقصد انك تضيفي بعد العشرة لان الكود محدد ب 10

الحمد لله الحين اقدر انام :rolleyes: :rolleyes:

انا عارف اذا كان الكود = 10 يكون هناك مشكلة علشان كذا انا وضعت علامة اكبر من >

بس مرة ثانية لا تزعليني :angry: :angry:

اشكرك اختي الغالية على رحابة صدرك :D :D

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

تم تعديل هذه المشاركة بواسطة المبرمج2003 في 9 مايو 2006 في 18:20

ريح من الزفرات تعصف في الحشى &&& و ورائها مطر من العبرات

ابو حسن

#20

اخي الفاضل محمد خليل

برنامج تحزيم قاعدة البيانات ليس له اي دخل في عملية الحماية

يقوم البرنامج بجعل قاعدة البيانات في حزمه ( كأنك تستخدم برنامج الضغط WINRAR ) ويجعل الملف الناتج على شكل EXE وهذا الملف ليس ملف تنفيذي مستقل حيث لو قمت بتشغيله سوف يبحث عن برنامج الاكسيس فهو مرتبط به ويقوم ايضا بفك نفسه الى نفس قاعدة البيانات التي كانت في جهازك سابقا وعند فتح القاعدة سترى الجداول والنماذج والتقارير وغيرها من كائنات القاعدة وتستطيع التعديل عليها او حذفها .

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…