اذهب الي المحتوي
أوفيسنا

برنامج جمعية .. بحاجة إلى كود بسيط


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

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

 

بالملف المرفق برنامج جمعية 

 

كل شهر الأعضاء يدفعوا مبالغ مختلفة ،

 

شخص يدفع 1000 ( سهم واحد ) شهريا

 

والثاني 2000 ( داخل بسهمني ) وهكذا

 

سويت شاشة لادخال البيانات وفيها زر واحد

 

الزر هذا ابغا اذا ضغطت عليه يسحل لي ان الشخص هذا سدد جمعيته 

 

مثلا :  أحمد يبغى يسدد جمعية شهر شعبان 

 

نضغط على الزر ، يتقيد في قاعدة البيانات ان أحمد دفع 1000 ريال لشهر شعبان 

 

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

 

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

 

انا استخدمت دالة FindFirst بحيث يبحث لي في القاعدة عن اسم احمد ، ولكن المشكلة ، أن هذه الدالة تبحث عن اسم أحمد ولكن لا تبحث في خانة الدفع ، هل دفع أحمد الجمعية أو لا ،

 

اترككم مع المثال  في الملف المرفق وأعتذر لو في أخطاء في البرنامج نتيجة تحويل اكسس 2016 إلى 2003 :

 

 

maysoon.rar

رابط هذا التعليق
شارك

كل شهر المفروض ينزل اسم العميل ، والمبلغ الذي دفعه في قاعدة البيانات

 

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

 

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

 

وشكرا لاهتمامك ومتابعتك ، وبانتظار الحل 

رابط هذا التعليق
شارك

السلام عليكم اخى الكريم قمت بعمل تعديلات بسيطة

اولا انشات جدول لاسماء  العملاء وارقام هويتهم

حيث افترضت ان لكل عميل رقم هويه ثابت خاص به تقوم انت بادخاله عند توريد الشهر

وفرت عليك كل هذا فعند اختيار اسم العميل يقوم البرنامج باستدعاء الرقم الخاص به (رقم الهويه)

 

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

 

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

http://recordit.co/CKn9qm2Gfk

استعملت الكود التالى

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

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

If IsNull(fid) Then
MsgBox "برجاء كتابة هوية العميل"
Exit Sub
End If

If IsNull(PayMony) Then
MsgBox "برجاء كتابة المبلغ المدفوع"
Exit Sub
End If

If IsNull(monthfild) Then
MsgBox "برجاء كتابة شهر الدفع"
Exit Sub
Else
Dim Y As Date
Y = Nz(DLookup("monthfild", "databace", "id=" & Me.fid), 0)

If Month(monthtext) = Month(Y) Then
MsgBox "عفوا تم تسجيل هذا الشهر مسبقا لهذا العميل", vbInformation, "مكرر"
Else
DoCmd.SetWarnings False
   DoCmd.RunSQL "INSERT INTO databace  " & "(id,monthfild,namee,WorkPlace,PayMony,Mountfild) VALUES " & "(fid, monthtext,fname, WorkPlace ,PayMony,Mountfild);"
 DoCmd.SetWarnings True
MsgBox "تم سداد الشهر بنجاح"
End If
End If

 

المرفق الخاص بك

 

maysoon.rar

  • Like 1
رابط هذا التعليق
شارك

اولا بيض الله وجهك ، ووفقك لكل خير 

 

هناك بعض المشكلات

 

في حال تم تحويل الحقل id_no إلى نص 
وتم تعديل الدالة 

تظهر رسالة خطأ : ( خطأ في بناء الجملة ( عامل التشغيل مفقود ) في تعبير استعلام id_no10331

Y = Nz(DLookup("mnth", "salary", " 'id_no='" & Me.id_no), 0)

حيث salary اسم الجدول ( قاعدة البيانات )
mnth : حقل الشهر في الجدول
id_no : حقل رقم الهوية في الجدول
 Me.id_no : حقل الهوية في النموذج

وفي حال تعديل نوع الحقل id_no  إلى رقمي ، تظهر الرسالة التالية :

نوع بيانات غير مطابق 

 

وأخيرا ، اكتشفت أنه اذا اضفنا عملية دفع في شهر ( مايو ) مثلا ، تنجح عملية الدفع ، ولو اردنا أن نكرر الدفع في نفس الشهر ( تظهر رسالة ان الشخص سدد ) ولحد الان ممتاز

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

 

لمزيد من الايضاح ، أرجو النظر إل الصورة :

 

تكرار.png

تم تعديل بواسطه الساحة البريدية
رابط هذا التعليق
شارك

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

اخى الكريم  عوضا عن دوال الاستدعاء ومشاكلها تم تعديل الكود

واستخدام دوال التجميع

استبدل الكود السابق بهذا الكود

If IsNull(fid) Then
MsgBox "برجاء كتابة هوية العميل"
Exit Sub
End If

If IsNull(PayMony) Then
MsgBox "برجاء كتابة المبلغ المدفوع"
Exit Sub
End If

If IsNull(monthfild) Then
MsgBox "برجاء كتابة شهر الدفع"
Exit Sub
Else
Dim Y As Integer

Y = Nz(DCount("[monthfild]", "databace", "monthfild=#" & Me.monthtext & "#"), 0)

If Y >= 1 Then
MsgBox "عفوا تم تسجيل هذا الشهر مسبقا لهذا العميل", vbInformation, "مكرر"
Else
DoCmd.SetWarnings False
   DoCmd.RunSQL "INSERT INTO databace  " & "(id,monthfild,namee,WorkPlace,PayMony,Mountfild) VALUES " & "(fid, monthtext,fname, WorkPlace ,PayMony,Mountfild);"
 DoCmd.SetWarnings True
MsgBox "تم سداد الشهر بنجاح"
End If
End If

 

رابط هذا التعليق
شارك

أهدانا  الأخ أبو خليل الحل فى موضوع مشابه

لعدم تكرار الإلحاق للسجلات

اجعل حقلى الاسم و الشهر حقلين مفتاحين أساسيين

حينها لن يقبل التكرار

رابط هذا التعليق
شارك

في ٢٨‏/٥‏/٢٠١٦ at 07:49, Elsayed Bn Gemy said:

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

اخى الكريم  عوضا عن دوال الاستدعاء ومشاكلها تم تعديل الكود

واستخدام دوال التجميع

استبدل الكود السابق بهذا الكود


If IsNull(fid) Then
MsgBox "برجاء كتابة هوية العميل"
Exit Sub
End If

If IsNull(PayMony) Then
MsgBox "برجاء كتابة المبلغ المدفوع"
Exit Sub
End If

If IsNull(monthfild) Then
MsgBox "برجاء كتابة شهر الدفع"
Exit Sub
Else
Dim Y As Integer

Y = Nz(DCount("[monthfild]", "databace", "monthfild=#" & Me.monthtext & "#"), 0)

If Y >= 1 Then
MsgBox "عفوا تم تسجيل هذا الشهر مسبقا لهذا العميل", vbInformation, "مكرر"
Else
DoCmd.SetWarnings False
   DoCmd.RunSQL "INSERT INTO databace  " & "(id,monthfild,namee,WorkPlace,PayMony,Mountfild) VALUES " & "(fid, monthtext,fname, WorkPlace ,PayMony,Mountfild);"
 DoCmd.SetWarnings True
MsgBox "تم سداد الشهر بنجاح"
End If
End If

 

أسعد الله صباحكم بكل خير

 

جربت الكود الجديد ، 

 

لم يتغير شيء ، بل بالعكس ، أصبح يكرر الدفعات لنفس الشهر ولم ينظر لأي سجلات موجودة

 

هل هناك طريقة أخرى يا غالي ؟

 

في ٢٨‏/٥‏/٢٠١٦ at 08:06, عبد الفتاح كيرة said:

أهدانا  الأخ أبو خليل الحل فى موضوع مشابه

لعدم تكرار الإلحاق للسجلات

اجعل حقلى الاسم و الشهر حقلين مفتاحين أساسيين

حينها لن يقبل التكرار

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

 

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

 

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

 

بارك الله فيكم منتظرين حل 

 

رابط هذا التعليق
شارك

يمكن جعل حقلين أو ثلاثة مفتاحا أساسيا

مثلا الاسم و الشهر

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

لاحظ معا

فقد يتكرر الاسم لكن ليس مع نفس الشهر

لعمل ذلك

فى تصميم الجدول

اسحب حقل الشهر ليكون تاليا و مجاورة لحقل الاسم

حدد الحقلين معا

و هما مظللان

اضغط من أعلى رمز المفتاح الأساسى

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

تمت التجربة ، ومع الاسف حصل تكرار للاسم والشهر أكثر من مرة

 

انا جربت الدالة rs.findlast  يبحث في اخر سجل عن الاسم والتاريخ ، اذا لم يجده ، يقوم بإنشاء سطر جديد

 

الطريقة ممتازة إذا لم يلعب أحد في تاريخ الكمبيوتر ، 

 

 

رابط هذا التعليق
شارك

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

جرب الكود بعد تغير بسيط على الكود الاستاذ/ ELsayed الاول

Private Sub أمر11_Click()

If IsNull(fid) Then
MsgBox "برجاء كتابة هوية العميل"
Exit Sub
End If

If IsNull(PayMony) Then
MsgBox "برجاء كتابة المبلغ المدفوع"
Exit Sub
End If

If IsNull(monthfild) Then
MsgBox "برجاء كتابة شهر الدفع"
Exit Sub
Else
Dim Y As Date
Y = Nz(DLookup("monthfild", "databace", "id=" & Me.fid & "And month(monthfild)=" & Month(monthtext)), 0)

If Y <> 0 Then
MsgBox "عفوا تم تسجيل هذا الشهر مسبقا لهذا العميل", vbInformation, "مكرر"
Else
DoCmd.SetWarnings False
   DoCmd.RunSQL "INSERT INTO databace  " & "(id,monthfild,namee,WorkPlace,PayMony,Mountfild) VALUES " & "(fid, monthtext,fname, WorkPlace ,PayMony,Mountfild);"
 DoCmd.SetWarnings True
MsgBox "تم سداد الشهر بنجاح"
End If
End If


End Sub
رابط هذا التعليق
شارك

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