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

كود الحفظ

بدأه السيد الجوهرى في 23 نوفمبر 2011 · 8 رد · 5,330 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

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

و عند الضغط على زر الحفظ واختيار لا لترحيل الفاتورة يتم الغاء الحفظ للجداول GLTRANSACTION والجدول GLTRANSINVO وهنــــــــــــــــا لاتوجد اى مشاكل

المشكلة هى انة لايتم الغاء الحفظ على كلا من الجداول Transaction والجدول Gtransaction والجدول invoiceselse

المطلوب فى حالة اختيار لا لترحيل الفاتورة يتم الغاء الحفظ على جميع الجداول كأن لم يكن شئ علما انة تم انشاء استعلامات الحاق للتغلب على مشكلة الحفظ التلقائى

فاتورة1.rar

وشكرااا

تم تعديل هذه المشاركة بواسطة sayedaaa في 23 نوفمبر 2011 في 17:47

1
#2

انا عارف ان السؤال معقد شوية بس ان شاء الله نوصل لحل يستفيد منة الجميع

#3

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

فعند الضغط عليه سيتم التراجع عن جميع البيانات التي تم تسجيلها في الحقول قبل الحفظ .

كما بالشكل التالي :

1322135962251.png

#4

استاذ ماجد فكرة جيدة لكن كيف يمكن دمج هذا الكود مع كود زر الحفظ لينفذ عملية الغاء الحفظ

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

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

وهنا نجحنا فى الغاء الحفظ دون الضغط على زر الحفظ

المشكلة تكمن عند اختيار لا للحفظ (لا لترحيل الفاتورة) لا يلغى الحفظ على كل الجداول

اسف على الاطالة

تم تعديل هذه المشاركة بواسطة sayedaaa في 24 نوفمبر 2011 في 15:27

#5
sayedaaa كتب:

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

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

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

و عند الضغط على زر الحفظ واختيار لا لترحيل الفاتورة يتم الغاء الحفظ للجداول GLTRANSACTION والجدول GLTRANSINVO وهنــــــــــــــــا لاتوجد اى مشاكل

المشكلة هى انة لايتم الغاء الحفظ على كلا من الجداول Transaction والجدول Gtransaction والجدول invoiceselse

المطلوب فى حالة اختيار لا لترحيل الفاتورة يتم الغاء الحفظ على جميع الجداول كأن لم يكن شئ علما انة تم انشاء استعلامات الحاق للتغلب على مشكلة الحفظ التلقائى

فاتورة1.rar

وشكرااا

الاخ العزيز

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

انا الطرقة الصحيحة التى اتبعتها لعدم الحفظ التلقائى هى:

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

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

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

قم بعمل زر حفظ وليس له كود حاليا--------------> سيتم الرجوع الية بعد شوية

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

قم بعمل ماكرو لتشغيل الاستعلام عندما تضغط على زر الحفظ

ارجع الى النموذج وادخل على التصميم له واضغط على خصائص زر الحفظ عند الضغط :اكتب الكود التالى

run macro ""

اسم الماكرو الذى قمنا بانشائه باعلى

ارجع الى وضع عرض النموذج واضغط على الزر بعد ان تكون قد كتبت فى الخانات ماتريد

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

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

بهذا يمكن تفادى مشكلة الحفظ التلقائى فى الجدول

طريقة مجربة وسهلة جدا

yasserhome

#6
sayedaaa كتب:

بسم الله الرحمن الرحيم مرفق مثال للتعديل عليةفى كود الحفظ الموجود على نموذج فاتورة المبيعات عند الضغط علية واختيار نعم للحفظ(ترحيل الفاتورة) يقوم بحفظ البيانات فى جميع الجداول ولا توجد مشكلة فى ذلكو عند الضغط على زر الحفظ واختيار لا لترحيل الفاتورة يتم الغاء الحفظ للجداول GLTRANSACTION والجدول GLTRANSINVO وهنــــــــــــــــا لاتوجد اى مشاكلالمشكلة هى انة لايتم الغاء الحفظ على كلا من الجداول Transaction والجدول Gtctionransa والجدول invoiceselse المطلوب فى حالة اختيار لا لترحيل الفاتورة يتم الغاء الحفظ على جميع الجداول كأن لم يكن شئ علما انة تم انشاء استعلامات الحاق للتغلب على مشكلة الحفظ التلقائىفاتورة1.rarوشكرااا

لتسهيل الاجابة على السؤال

تم حذف الجدول Gtctionransa وجعل مصدر النموذج الفرعى الجدول TRANSACTION

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

If MsgBox("ترحيل الفاتورة" & vbCrLf & "", vbYesNo, "تحديث") = vbYes Then

مرفق المثالفاتورة2011.rar

تم تعديل هذه المشاركة بواسطة sayedaaa في 25 نوفمبر 2011 في 02:43

#7

تفضل اخي الكريم

ملفك بعد التعديل

راجع الأكواد :

1. تم نقل كامل الكود من تحت زر الأمر 12 الى حدث قبل التحديث للنموذج الرئيسي

2. تم تغيير عبارة vbYes الى vbNO واضافة تعبير ME.UNDO

3. تم وضع عبارة Me.Requery تحت زر الأمر 12 بحيث يستدعي حدث قبل التحديث فإذا تم اختيار عبارة ( لا ) في الرسالة فلن يتم تحديث اي شيء في النموذج او القيام بأي حدث سواء في النموذج الرئيسي او الفرعي لأن هذا الأمر شامل الجميع

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

فاتورة-UP.rar

بالتوفيق

#8

اشكرك استاذة زهرة

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

#9

شكرااا على مرور كل الاخوة على الموضوع

واخص الاخت زهرة بالشكر

واثناء التفتيش بالمنتدى وجدت مجموعة من الافكار للاخت زهرة لحل مشكلة الحفظ التلقائى

تم تطبيقها على المثال المرفق وبفضل الله ثم فضل الاخت زهرة تم حل المشكلة

If MsgBox(" ترحيل الفاتورة ", vbYesNo) = vbNo Then
DoCmd.CancelEvent
SendKeys "{ESC}"
Exit Sub
Else
Dim strsavemessage As String
strsavemessage = "  تم الحفظ "
strsavemessage = strsavemessage & " "
strsavemessage = strsavemessage & Me.kind_of_trans
MsgBox (strsavemessage), vbInformation, "رسالة"
DoCmd.SetWarnings False
  Dim aa As Database
Dim Rd As Recordset
Set aa = CurrentDb
Set Rd = aa.OpenRecordset("GLtransinvo")
Rd.AddNew
Rd!debt = Me.text3.Value
Rd!accunt_id = Me.tt1.Value
Rd!date = Me.Zdate
Rd!entryexpln = Me.kind_of_trans
Rd!accunt_name = Me.Customer
Rd!entryn = Me.Issue_doc.Value
Rd.Update
Rd.Close
Dim db As Database
Dim rs As Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("GLtransinvo")
rs.AddNew
rs!date = Me.Zdate.Value
rs!credit = Me.text3.Value
rs!entryn = Me.Issue_doc.Value
rs!accunt_id = Me.text5.Value
rs!entryexpln = Me.kind_of_trans
rs!accunt_name = Me.text6.Value
rs.Update
rs.Close
End If

 On Error GoTo BCC
Dim Q As Recordset
Dim a As Recordset
Set Q = CurrentDb.OpenRecordset("SELECT * from invoiceselse where mz = false;")
DoCmd.SetWarnings False
DoCmd.OpenQuery "yGLtransinvo", acNormal, acEdit
CurrentDb.Execute ("UPDATE GLtransinvo SET MZ = True WHERE MZ = False ")

 Dim stDocName As String

While Not Q.EOF
Q.Edit
Q!mz = True
Q.Update
Q.MoveNext
Wend
DoCmd.GoToRecord , , acNewRec
Issue_doc.SetFocus
ACC:
Exit Sub
BCC:
Resume ACC
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

End Sub

فاتورة111.rar

اخوكم

السيد الجوهرى

1

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