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

[ تمت الإجابة ]اجتناب تكرار الضغط على زر تشغيل االاستعلام

بدأه مصعبون في 27 أبريل 2009 · 27 رد · 1,972 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إخواني في الله

قمت بإنشاء جدول للإيراد اليومي ومن ثم قمت بعمل نموذج منه أسميته نموذج الإيراد اليومي ثم قمت بعمل بجدول لحساب الرصيد الإجمالي للثلاث محلات عن طريق إنشاء استعلام تحديث من جدول الرصيد ثم ربطته بنموذج الإيراد اليومي ثم قمت بعمل زر في النموذج لتشغيل الاستعلام

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

أريد حلا لكي امنع تكرار إضافة السجل أكثر من مرة إذا ضغطت بالخطأ على الزر أكثر من مرة

أرجوكم أريد حلا لأني أرسلت هذه المشكلة أكثر من مرة ولم يجيبني أحد كما أنني اعمل على أكسس 2007 وحاولت عمل هذا العمل على أكسس 2003 وفشلت

المرفقات في نظام أكسس 2007 ولم أتمكن من عملها في أكسس 2003

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

_____.rar

#2

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

اخي مصعبون

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

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

/index.php?showtopic=192655

شاكرين حسن تعاونكم

وبالتوفيق

#3
يوسف احمد كتب:
السلام عليكــم ورحمـة الله وبركاتــه ،،

اخي مصعبون

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

/index.php?showtopic=192655

شاكرين حسن تعاونكم

وبالتوفيق

#4

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

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

شكراً لك اخي الكريم

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

#5

أخى الكريم

بعد إذن أستاذنا يوسف ....

نحترم طبعاً اعتباراتك التى تجعل من الممكن وضع مقتاح أساسى بجدول الرصيد.

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

وأيضاً فكرة أخى أننى قمت بتعديل الاستعلام وأضفت حقل إسمه Checker يتكون من المبلغ والتاريخ معاً وجرب المرفق فلن يمكن التكرار.

والرد مكرر فى المشاركة الأصلية لك.

فى انتظار ردك

تحياتى

محمد ندا

None_Repeat.rar

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#6

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

السلام عليكــم ورحمـة الله وبركاتــه ،،الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

شكراً لك اخي الكريم

ارجو منك تحملي وسعة صدرك

لو سمحت افتح الملف المرفق وافعل الخطوات التالية بنفس الترتيب حتى ترى المشكلة الحادثة لي

أولا: افتح النموذج في طريقة عرض النموذج ثم احضر السجل الاول ستجده بتاريخ 1/4/2009 ثم اضغط على زر تشغيل الاستعلام ثم موافق ثم موافق مرة اخرى

ثانيا:افتح جدول الرصيد ولاحظ القيم الموجودة في الجدول ثم اغلق الجدول مرة اخري

ثالثا:افتح النموذج في طريقة عرض النموذج ثم احضر السجل الثاني ستجده بتاريخ 2/4/2009 ثم اضغط على زر تشغيل الاستعلام ثم موافق ثم موافق مرة اخرى

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

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

ما احاول منع تكراره هو هذا الخطا

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

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

_____.rar

#7

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

بارك الله فيك اخي Mohamed Nada وجزاك خير الجزاء

اخي مصعبون .. عزيز وغالي .. واشكرك على هذه الروح الطيبة

تم التعديل : يوجد معيار تحت حقل التاريخ يحتوي على شرط لاستعلام فرعي بحيث لا يتم الحاق اي قيمة للتاريخ موجودة مسبقاً بجدول الايراد الجديد.

بالتوفيق للجميع

db1.____.rar

#8

أستاذنا يوسف ...

بارك الله فيك وجعلك دوماً فى عون إخوانك.

وجعل مجهودك فى ميزان حسناتك.

تحياتى

محمد ندا

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#9

أخي الحبيب كم أنا محرج من كثرة سؤالي لكن مازالت المشكلة قائمة

هناك شئ غريب يحدث أنا أرسل لك ملف مرفق يحتوي على الآتي

1-جدول الإيراد اليومي 2-جدول الرصيد 3-استعلام تحديث 4- نموذج الإيراد اليومي

ثم يأتي منك الرد والتعديل في ملف مرفق يحتوي على الآتي

1- جدول الإيراد اليومي 2- جدول الإيراد الجديد 3-استعلام إضافة 4- نموذج الإيراد اليومي

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

لو سمحت افتح الملف المرفق وافعل الخطوات التالية بنفس الترتيب حتى ترى المشكلة الحادثة لي

أولا: افتح النموذج في طريقة عرض النموذج ثم احضر السجل الاول ستجده بتاريخ 1/4/2009 ثم اضغط على زر تشغيل الاستعلام ثم موافق ثم موافق مرة اخرى

ثانيا:افتح جدول الرصيد ولاحظ القيم الموجودة في الجدول ثم اغلق الجدول مرة اخري

ثالثا:افتح النموذج في طريقة عرض النموذج ثم احضر السجل الثاني ستجده بتاريخ 2/4/2009 ثم اضغط على زر تشغيل الاستعلام ثم موافق ثم موافق مرة اخرى

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

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

سامحوني على إلحاحي لكني سالت كثيرا وحاولت كثيرا ولم أصل إلي حل

_____.rar

#10

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

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

اخي مصعبون

الملف المرفق من طرفك لم اتمكن من فتحه لأنه 2007 لذا قمت بالتعديل على ملف اخي محمد ندا

عموماً الفكرة هي وضع معيار بالاستعلام تحت حقل التاريخ كالتالي :

Not In (select التاريخ from [الايراد الجديد] where التاريخ = التاريخ )

وهذا ان شاء الله سيمنع الحاق سجل سبق الحاقه

بالتوفيق

#11

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

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

،،شكراً لك اخي الكريم

هذا الحل لايتناسب مع مشكلتي

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

سامحني يااخي وارجو الا تمل مني

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

،،شكراً لك اخي الكريم

هذا الحل لايتناسب مع مشكلتي

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

سامحني يااخي وارجو الا تمل مني

#12

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

السلام عليكــم ورحمـة الله وبركاتــه ،،شكراً لك اخي الكريم

أعلم اني اثقلت عليكم

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

#13

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

اخي مصعبون

استطعت ان افتح الملف على اكسس 2007 ولكن اخي الكريم السؤال غير واضح تماماً بالنسبة لي وهناك بعض الاستفسارات اذا سمحت لي

1: هل تقوم بتدوين قيم للسجلات الخاصة بنقدي1 ونقدي2 ونقدي3 لكل يوم .. اي انه لا يتم تكرار هذا التاريخ في جدول الايراد اليومي ام انه يتكرر وفي فكل مرة تقوم بالضغط على زر الامر يتم تجميع القيم بناءً على التاريخ وتوضع القيم بجدول الرصيد .

2: من المهم جداً ان تشرح طريقة عمل البرنامج بتفصيل اكثر مع اعطاء امثلة للنتائج المتوقعة .. فعلى اي اساس لا تريد التكرار؟ فهم المشكلة يعتبر نصف الاجابة

قد يكون هناك استفسارات اخرى ولكن مبدئياً لا بد ان يعرف من يود مساعدتك ماهي خطة سير البرنامج لديك .. وان شاء الله نصل الى حل

في انتظار ردك

بالتوفيق

#14

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

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

شكراً لك اخي الكريم

لا أجد من الكلمات ما اعبر به عن امتناني وشكري على اهتممامكم بمشكلتي

اما بالنسبة لشرح البرنامج اتبع الخطوات اتالية

أولا امسح اي بيانات في جدول الرصيد

ثانيا ضع في خانة التاريخ 31/3/2009 ثم في نقدي 1 ضع 1000 ثم في نقدي 2ضع 1000 ثم في نقدي 3 ضع1000 وهو عبارة الرصيد الافتتاحي ثم اغلق الجدول

ثالثا افتح النموذج في طريقة عرض النموذج ستجدالسجل الاول بتاريخ 1/4/2009 ثم اضغط على زر تشغيل الاستعلام ثم افتح جدول الرصيد ستجد ان التاريخ تم تحديثه الى 1/4/2009 وان فيم الخانات نقدي 1و2و3 هي 3000وهي عبارة عن اضافة السجل الاول في النموذج الي الرصيد الافتتاحي في جدول الرصيد

رابعا انتقل الي السجل االثاني في النموذج ثم اضغط زر الاستعلام ثم افتح جدول الرصيد ستجد ان التاريخ تم تحديثه الي 2/4/2009وان فيم الخانات

نقدي هي 6000 وهي عبارة عن اضافة السجل الثاني الى اجمالي الرصيدالسابق وهكذا

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

البرنامج معمول على اساس ان يتم اضافة السجلات يوميا الى جدول الرصيد للحصول على اجمالي الرصيد حتى اخر يوم

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

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

#15

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

بارك الله فيك اخي الكريم وجزاك خير الجزاء

الآن وصلت المعلومة تماماً .. شكراً لك

اقدم لك حلاً برمجياً وبدون استخدام الاستعلامات

تم تغيير اسماء الحقول والجداول الى اللغة الانجليزية لتتمكن من معرفة الحل وتطبيقه ( بعد اذنك طبعاً )

التغييرات

1: تم تغيير اسم جدول الرصيد الى tblNew وتم تغيير اسماء حقوله الى Cash1 ... Cash2 .... Cash3 .... DDate

2: تم تغيير اسم جدول اليومية الى tblDaily وتم تغيير اسماء حقوله الى DDate.... DailyCash1 .... DailyCash2 .... DailyCash3

3: تم تغيير اسم النموذج الى frmDaily وتم تغيير اسماء مربعات النصوص على النموذج على النحو التالي txtDate .... txtCash1... txtCash3 ... txtCash2

الكود بناءً على التغييرات اعلاه سيقوم بفتح الجدول tblNew وتحديثه الى المطلوب مع التأكد من عدم تكرار التحديث بناءً على التاريخ الموجود مسبقاً

Dim db As DAO.Databas
	Dim rs As DAO.Recordset
	Dim datefieldcount As Integer
	datefieldcount = DCount("ddate", "tblnew", "[ddate]=forms!frmDaily!txtdate")
	If datefieldcount < 1 Then
		Set db = CurrentDb
		Set rs = db.OpenRecordset("tblNew")
		rs.Edit
		rs!ddate = Me.txtDatee
		rs!cash1 = rs!cash1 + Me.txtCash1
		rs!cash2 = rs!cash2 + Me.txtCash2
		rs!cash3 = rs!cash3 + Me.txtCash3
		rs.Update
	Else
		MsgBox "لا يمكن التحديث نظراً لوجود تاريخ مطابق"
		Exit Sub
	End If
	rs.Close
	db.Close
	Set rs = Nothing
	Set db = Nothing

الحل موجود بالمرفق على اكسس 2003

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

سؤال مهم جداً : ماذا لو عاد المستخدم الى تاريخ سابق ( سجل سابق ) على النموذج وضغط زر الامر ؟ لم تتطرق الى هذا .. فهل تريد ان يكون هذا كشرط ؟ بحيث لا يقبل التحديث لتاريخ سابق للتاريخ بالجدول tblNew

بالتوفيق

db1.____.rar

#16

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

كيف حالك إن شاء الله دائمــاً بخير ؟شكراً لك اخي الكريم

زادك الله علما وأضاء بصيرتك

اعذرني أخي الحبيب لم يتوافق هذا الكود مع 2007

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

#17

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

اخي الكريم

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

بارك الله فيك وجزاك خير الجزاء على دعواتك الطيبة .. ولك مثلها وزيادة .. آمين

ساقوم بعمل ذلك ان شاء الله على اكسس 2007 وارفاقه لك في اقرب فرصة .. حيث ان جهازي الخاص هو الذي به اكسس 2007

بالتوفيق

#18

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

اخي مصعبون

تم التعديل على اكسس 2007

وللفائدة اضع الكود هنا واود ان اكرر نصيحتي لك بخصوص الاسماء ان تكون باللغة الإنجليزية وبدون فراغات وايضاً الا يكون لأكثر من كائن نفس الاسم وان يكون الاسم دالاً على نوع الكائن ووظيفته .. هناك امور كثيرة متعلقة بالموضوع ويمكنك البحث عنها .

Dim db As DAO.Database
	Dim rs As DAO.Recordset
	Dim datefieldcount As Integer
	Set db = CurrentDb
	Set rs = db.OpenRecordset("الرصيد")
	If rs!التاريخ> Me.التاريخThen
		MsgBox " التاريخ اكبر من تاريخ الرصيد سينتقل بك البرنامج للسجل الاخير", vbCritical + vbMsgBoxRight, "تحذير"
		DoCmd.GoToRecord , , acLast
		Exit Sub
	End If
	datefieldcount = DCount("التاريخ", "الرصيد", "[التاريخ]=forms![الايراد اليومي]!التاريخ")
	If datefieldcount < 1 Then
		rs.Edit
		rs!التاريخ= Me.التاريخ
		rs!نقدي1= rs!نقدي1+ Me.نقدي1
		rs!نقدي2= rs!نقدي2+ Me.نقدي2
		rs!نقدي3= rs!نقدي3+ Me.نقدي3
		rs.Update
	Else
		MsgBox "لا يمكن التحديث نظراً لوجود تاريخ مطابق", vbCritical + vbMsgBoxRight, "تحذير"
		Exit Sub
	End If
	rs.Close
	db.Close
	Set rs = Nothing
	Set db = Nothing

تفضل المرفق

بالتوفيق

______2007.rar

تم تعديل هذه المشاركة بواسطة يوسف احمد في 4 مايو 2009 في 18:53

#19

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

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

post-74640-1241455792_thumb.jpg

post-74640-1241455816_thumb.jpg

#20

أخى يوسف ... حياك الله

كلما دخلت إلى موضوع أجد بصماتك فيه .. ولها من بصمات مميزة.

أحييك أولاً على صبرك ومثابرتك ... ما شاء الله عليك.

وأحييك ثانياً على هذا التألق.

محمد ندا

تم تعديل هذه المشاركة بواسطة Mohamed Nada في 4 مايو 2009 في 21:48

... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...

#21

حياك الله اخي محمد ندا

وشكراً لك اخي على هذا الشعور تجاهي وعلى اطرائك الذي لا استحقه فمازلت تلميذاً واكررها دائماً ( تلميذ يحل الواجب في الفصل .. هههه )

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

امنياتي لك بالتوفيق في الدنيا والآخرة

#22

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

شكراً لك اخي الكريم

مازالت هناك مشكلة

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

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

#23

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

بارك الله فيك اخي مصعبون

بإذن الله ساحاول في الحل لك في اقرب فرصة فليس كل الاجهزة التي اعمل عليها بها اكسس2007

#24

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

أخي الحبيب

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

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

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

#25

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

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

والله أسال ان يوفق الجميع ,,,, أخي مصعبون تفضل الحل سهل ومرفق , كل ماعليك قرائة الكود تحت الزر ومشاهدة مايحدث في المربعات الثلاثه التي أضفتها

كما يمكن اخفائها ولا تظهر للمستخدم ويمكنك زيادتها مع عدد السجلات كماتشاء فقط انسخ الكود وكرره لكل مربع وسجل تضيفه

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

تلميذ المنتدى

_____.rar

تم تعديل هذه المشاركة بواسطة فلاح العتيبي في 8 مايو 2009 في 03:04

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

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

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

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

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