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

محمد طاهر عرفه

إدارة الموقع
  • Posts

    8,496
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    36

كل منشورات العضو محمد طاهر عرفه

  1. مرفق الملف بعد التعديل و به الشرح جرب و اخبرني Tansiq.rar
  2. السلام عليكم راجع موضوع استعلامات الالحاق فى دورة الأكسس من هنا و أبسط الحلول هو عمل ربط للجداول المختلفة ثم عمل استعلام الحاق بينها
  3. الحمد لله الاستيراد يتم بدون الكود أي أن التعديل مازال شكلي
  4. حديث حول المتغيرات فى VB - لأبي هاجر أولاً : هل يجب تعريف المتغيرات ؟ لو حاولت استخدام أي متغير في الكود الذي تكتبه فإن أكسس سيعرض عليك رسالة خطأ تفيد بأن هذه المتغير غير معرف ، مع ذلك فإن تعريف المتغيرات ليس أمراً إلزاميا ففي أعلى كل وحدة نمطية سواء كانت هذه الوحدة عامة أم خاصة بنموذج أو تقرير ستجد العبارة التالية : Option Explicit وهي تخبر أكسس VB يجب تعريف المتغيرات ولو حذفت هذه العبارة فلن يتغير شيء في برنامجك سوى أنك لن تكون ملزماً بتعريف المتغيرات هذا يقودنا إلى النقطة الثانية ثانياً : إذاً لماذا نقوم بتعريف المتغيرات رغم أن تعريف المتغيرات يعني مزيداً من الأسطر ومزيداً من الجهد إلا أن فوائد تعريف المتغيرات تجعل منه أمراً ضرورياً لا سيما مع البرامج الكبيرة ومن هذه الفوائد ما يلي : 1- يؤدي عدم تعريف المتغيرات إلى حجز المتغير قدراً كبيراً من ذاكرة الجهاز مما يؤثر على عمل البرنامج 2- يساعد تعريف المتغيرات بشكل كبير على تتبع الأخطاء 3- يضمن عدم استخدام أكثر من متغير بنفس الاسم وفي نفس المجال الزمني وهو الأمر الذي قد ينتج عنه أخطاء يصعب اكتشافها ثالثاً : المدى المكاني للمتغيرات أقصد بهذه النقطة أننا عند تعريف متغير فأين نستطيع استخدامه هناك ثلاث فئات من المتغيرات : 1- المتغيرات التي يتم تعريفها داخل الدالة أو الإجراء الفرعي وهذه يمكن استخدامها داخل الدالة أو الإجراء الفرعي فقط ولا تستطيع إسناد قيم لها بحيث تستدعي هذه القيم من خارج الدالة أو الإجراء مثال : Public Function fun1() Dim a As String a = "كيف الحال؟" End Function Public Function fun2() MsgBox a End Function عند استدعاء الدالة fun2 سيعرض البرنامج رسالة خطأ تفيد بأن المتغير a غير معرف 2- المتغيرات التي يتم تعريفها في أعلى الوحدة النمطية الخاصة بالنموذج أو التقرير وهي ما يسمى بمنطقة التعريفات هذه يمكن استخدامها داخل النموذج أو التقرير ولا يمكن استخدامها في نموذج أو تقرير آخر وهذه تعرف عادة باستخدام العبارة Dim مثل Option Compare Database Option Explicit Dim myvar As Integer 3- المتغيرات التي يتم تعريفها داخل الوحدات النمطية العامة يمكن استخدامها في أي مكان من البرنامج وهذه تعرف عادة باستخدام العبارة Public أما إذا عرفت باستخدام العبارة Private فيمكن استخدامها من داخل الوحدة النمطية فقط وكذلك لو عرفتها باستخدام العبارة Dim بقي أن أشير إلى أن العبارة Static تستخدم عادة لتعريف المتغيرات التي نريد أن تحافظ على قيمتها عند استدعائنا لها عدة مرات الأمر المهم هنا هو ضرورة استخدام هذه الأنواع بدقة لا سيما المغيرات العامة حيث يتم تحميلها عند تشغيل البرنامج وتبقى محملة في الذاكرة حتى يتم إيقاف البرنامج ، وهذا يؤثر على عمل البرنامج بلا شك ، أضف إلى ذلك أن الأسماء التي تستخدمها لتلك المتغيرات العامة يجب أن تكون فريدة حتى لا يحدث تعارض بينها وبين بعض المتغيرات الأقل مدى رابعاً : أنواع المتغيرات يحتوي الأكسس على عدد كبير من المتغيرات التي يصعب حتى ذكرها هنا فضلاً عن شرحها لكن يمكنك الاطلاع عليها عن طريق القائمة التي يتم عرضها بعد أن تكتب عبارة As أثناء تعريفك لمتغير ما وهذه المتغيرات منها ما هو عام يمكن استخدامه في لغة VBA في أي من برامج أوفيس ومنها ما هو خاص بأكسس VB وهذه في الغالب هي المتغيرات المتعلقة بتعريف كائنات أكسس أي الجداول والاستعلامات والنماذج وغيرها وسأعرض هنا قائمة بالمتغيرات العامة في لغة VBA وهي موجودة أيضاً في أغلب لغات البرمجة وهي : Boolean قيمة False ,True Byte بايت Integer عدد صحيح Long عد صحيح طويل Currency عملة Double رقم مزدوج String سلسلة Date تاريخ Variant غير محدد النوع هذه هي أنواع المتغيرات الأكثر شهرة واستخداماً ويجب استخدامها بدقة إذ يودي الاختلاف بين نوع المتغير والقيمة المسندة إليه إلى خطأ أثناء تنفيذ البرنامج فالعبارة التالية خطأ Dim a as integer A= "name" وكذلك العبارة التالية Dim a as integer A = 50000 لأن أكبر رقم يمكن أن يحتويه متغير من نوع Integer هو 32767 وهكذا هذه نبذة مختصرة عن تعريف المتغيرات ==== تم ====
  5. هذا الشرح لأبي هاجر أقدم لكم شرحا مبسطاً عما يسمى بدوال تدفق البرنامج وهي الدوال التالية : دالة Choose تستخدم دالة Choose من أجل تحويل قيمة حقل من رقم إلى نص أو بمعنى آخر لنفترض أن لديك في الجدول حقلاً يحتوي على قيم رقمية ابتداء من 1 حتى 6 مثلاً وكل رقم تستخدمه في الدلالة على شيء معين مثلاً 1 يعني سعودي 2 يعني مصري وهكذا بالطبع حين تريد عرض هذه القيم للمستخدم فإنك تحتاج إلى تفسيرها أي تحويلها إلى نص في هذه الحالة فإنك ستحدد الحقل الذي يحتوي على الأرقام في متغير الفهرس بالنسبة للدالة وترتب القيم النصية حسب ما يعنيه كل رقم بالترتيب وتستخدم دالة Choose بالصيغة التالية : Choose(index, value1, value-2, value-3) حيث index هو الحقل أو المتغير الذي يحتوي على الفهرس value1, value-2, value-3 القيم 1 و2 و3 بحسب ما تستوعبه الدالة وهي تستوعب متغيرات بطول 255 حرفاً في حالة وجود قيم في الفهرس أصغر من 1 أو أكبر من القيم المحددة فإن الدالة ترجع قيمة خالية NULL دالة Switch تستخدم دالة Switch بنفس الطريقة التي تستخدم بها عبارة Select Case أي تبدأ بشرط ثم قيمة ثم شرط ثم قيمة وهكذا فإذا تحقق الشرط 1 أرجعت الدالة القيمة 1 وإذا تحقق الشرط 2 أرجعت الدالة الشرط 2 وهكذا أما إذا لم يتحقق أي من الشروط فإن الدالة ترجع قيمة خالية NULL وتستخدم دالة Switch بالصيغة التالية : Switch(expr-1, value-1, expr-2, value-2, expr-3,value-3) حيث expr هو الشرط و value القيمة التي سيتم عرضها عند تحقق الشرط السابق لها دالة IIF تستخدم دالة IIF بنفس الطريقة التي تستخدم بها عبارة If then else حيث يتم تمرير شرط واحد وقيمتين إلى الدالة فإذا تحقق الشرط فإن الدالة ترجع القيمة الأولى أما إذا لم يتحقق فإن الدالة ترجع القيمة الثانية وتستخدم دالة IIF بالصيغة التالية IIf(expr, truepart, falsepart) حيث expr هو الشرط و truepart القيمة التي ترجعها الدالة عند تحقق الشرط و falsepart القيمة التي ترجعها الدالة عند عدم تحقق الشرط
  6. الاسم : محمد طاهر سنة الميلاد : 1968 م المهنة : مهندس مدني و أعمل فى مجال إدارة المشاريع الهندسية التعليم : بكارولويس هندسة مدنية 1991 - هندسة القاهرة ماجيستير إدارة مشروعات 1998 - هندسة القاهرة PMP 2008 RMP 2012 MVP 2010-2013 الحالة الاجتماعية : متزوج و رزقني الله ب 4 أطفال بلد الجنسية / بلد الاقامة : مصر / الامارات أقسام الاهتمام فى المنتدي : كل الأقسام - و بالذات الأكسيس و الإكسيل معلومات أخري : أحب الأكسس و أنشأت تطبيقات مختلفة له ، و أيضا أحب جدا الاكسيل و استخدام ال vba به . تتركز خبرتي فى مجال ادارة المشاريع عموما و مشاريع التشييد بصفة خاصة، و لدى خبرة عملية فى هذا المجال من حيث التطبيق و التدريب. أجيد إستخدام برامج ادارة المشروعات بالاضافة الي بعض البرامج الهندسبة و أستخدم بعض برامج الرسم و الجرافيك بصورة متوسطة. و لدي دراية بسيطة بتصميم الويب و لغاته . خبرتي فى المنتديات : عضو شرف و مشرف قسمي الأكسس و الأوفيس ( سابقا ) و مراقب سابق فى الفريق العربي للبرمجة و إفتتحت هذا الموقع رسميا فى فى الثاني من جمادي الأولي 1424 هـ الموافق أول يوليو 2003 مـ
  7. بسم الله الرحمن الرحيم يَا أَيُّهَا النَّاسُ إِنَّا خَلَقْنَاكُم مِّن ذَكَرٍ وَأُنثَى وَجَعَلْنَاكُمْ شُعُوباً وَقَبَائِلَ لِتَعَارَفُوا إِنَّ أَكْرَمَكُمْ عِندَ اللَّهِ أَتْقَاكُمْ إِنَّ اللَّهَ عَلِيمٌ خَبيرٌ صدق الله العظيم أخوتي الكرام هذا الموضوع مخصص للتعارف بين أعضاء المنتدي و نأمل أن يزيدنا قربا و محبة و تعارف و أرجو أن تكون بداية المواضيع بنفس نسق المشاركة التالية قدر الامكان مع تحياتي
  8. السلام عليكم من الممكن اختبار رغبته الاولي مع جميع الشركات اولا ثم الثانية ثم الثالثة و ذلك بتعديل مسار الحلقات و لكن ... ماذا عن أولوية الشركات فى التسكين هل ليست فى نفس مستوي الاهمية ؟ فاما أن تكون االأهمية الاولي لتسكين الشركات باولوياتها كما هو حادث ، أي أننا نملأ الاماكن فى الشركات ذات الاولوية اولا بصرف النظر عن ترتيب الرغبة ( ما هو الان ) أو يمكننا الاهتمام بالرغبة أولا و لكن هذا سيعود بنا الي اقتراحي الاصلي ، بفصل رغبات الطلاب فى جدول منفصل فان هذا سيمكننا من ادخال الرغبات الثلاثة فى حلقة اخري مثلما فعلنا مع الطلاب و الفرص و هذا هو الافضل و يمكن ايضا التعامل معها بالتصميم الحالي و لكن هذا ليس الافضل فى انتظار ردك مع تحياتي
  9. طبق الكود السابق هكذا On Error GoTo errsub DoCmd.Hourglass True DBEngine.CompactDatabase datapath, Backuppath, DB_LANG_ARABIC DoCmd.Hourglass False errsub: If Err.Number = 3204 Then MsgBox " A database with the same name exists in the same location ! ", 64, "Duplicate Backup Name" ElseIf Err.Number = 3356 Then MsgBox "Another user is Currently using the Database" + Chr(10) + Chr(13) + "Wait Until No Other Users are Using the Database !", 16, " Other Users WArning Message " ElseIf Err.Number = 3024 Then m = " The Database Source File : " + datapath + Chr(10) + Chr(13) + " is not available !" + Chr(10) + Chr(13) + "Please check the Source Database Name and Location" MsgBox m, 16, "Missing Data Table " ElseIf Err.Number = 3044 Then m = " Invalid File Name : " + Chr(10) + Chr(13) + "Please check the File name and location " MsgBox m, 64, "Invalid File Name " ElseIf Err.Number = 20477 Then m = " Invalid File Name : " + m3 + Chr(10) + Chr(13) + " OR " + m4 + Chr(10) + Chr(13) + " is not available !" + Chr(10) + Chr(13) + "Please check the Source Database Name and Location" MsgBox m, 64, "Invalid File Name " Else MsgBox Str(Err.Number) + Err.Description End If MsgBox "Action Canceled ! " DoCmd.Hourglass False فى زر اغلاق التطبيق
  10. الأخ أبو دلال وصلني الملف ، مع الشكر و هو نفس الملف المنشور أعلاه
  11. السلام عليكم و جزاكم الله خيرا ، و فى انتظار مشاركاتك و نحن جميعا سعداء لاحساسك هذا و بالنسبة لاضافة ال 1 فهذا لاحتساب يوم نهاية الاجازة نفسه ضمن الاجازة اما لو سجلنا يوم العودة من الاجازة فلن نضيف 1 و أهلا بك
  12. السلام عليكم أخي الكريم لم يصلني بعد شيء علي البريد الا يمكنك رفعه علي موقع مجاني أو مركز تحميل ؟؟ و هذا هو كود الاخ ابو بكر الذي أشاراليه الاخ عبدالله مشكورا و مرف المثال 'قم بتحديد رقم المنفذ لعنصر المودم إن كان غير الرقم 1 Private Sub Form_Load() On Error GoTo errhandle MSComm1.PortOpen = True MSComm1.Output = "AT+VCID=1" & vbCr 'يتيح الأمر السابق للمودم استقبال رقم المتصل 'و ليست جميع المودمات تدعم كاشف الرقم 'كما أنها لا تستخدم جميعها نفس التعليمة السابقة ' كما أنا الكثير منها يعاني من عدم الاستجابة أحياناً 'لذا تأكد من ظهور 'OK 'عند تشغيل البرنامج Exit Sub errhandle: MsgBox "خطأ في رقم المنفذ أو أن المنفذ مفتوح مسبقاً", vbOKOnly + vbCritical End Sub Private Sub MSComm1_OnComm() If MSComm1.CommEvent = comEvReceive Then Dim Buffer As Variant Buffer = MSComm1.Input Text1 = Text1 & Buffer End If End Sub myid.zip
  13. هذا شرح مبسط علي السريع و إن شاء الله لنا أن نكمل الدورة ، سيكون هناك شرح بطريقة أفضل ملاحظة : فى نهاية الكود استبدل 'mychances.Close 'mystudents.Close ب mychances.Close mystudents.Close حيث انها منسية Private Sub CmdTaskin_Click() 'استدعاء دالة التسكين ثم تحديث لبيانات النموذج TheTaskin Me.Refresh End Sub Sub TheTaskin() 'تعريف مجموعتي سجلات من نوع ادو الاولي لعدد الفرص و التثانية للطلاب Dim mychances As ADODB.Recordset, mystudents As ADODB.Recordset 'فتح مجموعتي السجلات Set mychances = New ADODB.Recordset Set mystudents = New ADODB.Recordset 'تخصيص مجموعتي السجلات الي الجداول المناظرة mychances.Open "qryremchances", CurrentProject.Connection, adOpenKeyset, adLockOptimistic mystudents.Open "QryStudents", CurrentProject.Connection, adOpenKeyset, adLockOptimistic 'تعريف متغيرين لاستخدامهما كعدد للطلاب و الفرص Dim Students As Long, comp As Long 'تحديد قيمة عداد الشركات الي عدد سجلات مجموعة الفرص comp = mychances.RecordCount 'تحديد قيمة عداد الطلاب الي عدد سجلات مجموعة الطلاب Students = mystudents.RecordCount 'اذا عدد السجلات فى أي من المجموعتين = صفر نخرج ولا نكمل التنفيذ مع اصدار رسالة If comp = 0 Or Students = 0 Then MsgBox "chances or Students are not recorded" Exit Sub End If 'التحرك الي أول سجل فى مجموعة الطلبة mystudents.MoveFirst 'بدء حلقة للمرور علي جميع سجلات مجموعة الطلبة Do Until mystudents.EOF 'MsgBox "Sudent : " & Str(mystudents!lngstudid) 'التحرك الي أول سجل فى مجموعة الفرص mychances.MoveFirst 'بدء حلقة للمرور علي جميع سجلات مجموعة الفرص Do Until mychances.EOF ' MsgBox "Sudent : " & Str(mystudents!lngstudid) & " comp : " & Str(mychances!lngcompid) ' كانت عدد الفرص المتاحة فى السجل الحالي = صفر أو كود المادة فى الفرصة ' لا يوافق تخصص الطالب نخرج من اختبار السج لالحالي بالذهاب الي النهاية الحلقة ' فى المكان المحدد If Nz(mychances!intchancesrem, 0) = 0 Or mystudents!lngspecid <> mychances!lngspecid Then GoTo nextchance End If 'اذا توافقت رغبة اللأولي للطالب في شركة مع كود الفرصة يتم تخفيض عدد الفرص المتاحة ن الشركة بواحد ' و يتم تسكين كود الشركة فى مجموعة الطلاب لهذا الطالب If mystudents!lngreqcompID1 = mychances!lngcompid Then mychances!intchancesrem = mychances!intchancesrem - 1 mystudents!lngcompid = mychances!lngcompid 'تحديث بيانات مجموعتي السجلات بناء علي ما سبق mychances.Update mystudents.Update ' و يتم تخطي اختبار الرغبات التالية له GoTo nextstudent End If ' نفس الموضوع للرغبة الثانية If mystudents!lngreqcompID2 = mychances!lngcompid Then mychances!intchancesrem = mychances!intchancesrem - 1 mystudents!lngcompid = mychances!lngcompid mychances.Update mystudents.Update GoTo nextstudent End If ' نفس الموضوع للرغبة الثالثة If mystudents!lngreqcompID3 = mychances!lngcompid Then mychances!intchancesrem = mychances!intchancesrem - 1 mystudents!lngcompid = mychances!lngcompid mychances.Update mystudents.Update GoTo nextstudent End If 'مكان محدد لتخطي الدراسة و الوصول الي خطوة التحرك الي الفرصة التالية فى المجموعة nextchance: 'التحرك الي السجل التالي فى مجموعة الفرص mychances.MoveNext 'نهاية حلقة للمرور علي جميع سجلات مجموعة الفرص Loop 'مكان محدد لتخطي الدراسة و الوصول الي خطوة التحرك الي الطالب التالي فى المجموعة nextstudent: 'التحرك الي السجل التالي فى مجموعة الطلبة mystudents.MoveNext 'نهاية حلقة للمرور علي جميع سجلات مجموعة الطلبة Loop 'اغلاق مجموعتي السجلات التين تم فتحهما mychances.Close mystudents.Close End Sub ------------------ ' كود الغاء التسكين و هو عبارة عن تفعيل لجملة اس كيو ال مناظرة لاستعلام تحديث 'و يقوم بوضع''مكان كود الشركة السابق تسكينه فى جدول الطلاب و يجعل عدد الفرص المتبقية مساوي للكلية Private Sub CmdcancelTaskin_Click() DoCmd.SetWarnings False DoCmd.RunSQL "UPDATE tblstudents SET tblstudents.lngcompid = '';" DoCmd.RunSQL "UPDATE tblchances SET tblchances.intchancesrem = [tblchances]![intchancesno];" DoCmd.SetWarnings True Me.Refresh End Sub
  14. أنشيء 3 مربعات نص الاول لتاريخ بداية الاجازة و سمه d1 الثاني لتاريخ نهاية الاجازة و سمه d2 و اختار تنسيقهما أحد تنسيقات التاريخ و الثالث تنسيقه Standard بدون علامات عشرية ضع فى مصدر بياناته الجملة التالية =[d2]-[d1]+1
  15. بالنسبة للتصدير يمكنك استنتاج التقدير فى حقل فى استعلام بنفس الطريقة و تصدير الاستعلام و من وجهة نظري ، عدم تخزين التقدير فى حقل لن ينقص من البرنامج بل يزيده :) ، لانك لن تخزن بيانات لا لزوم لها و عموما لو أردت تخزينه ، فقد تكلمنا عن كيفية تخزينه فى حقل بالكود مع ادخال الدرجة مع تحياتي
  16. قد يوجد حل أسهل و لكن هذا أحد الحلول : أنك عند فتح التقرير ( الفاتورة) تقوم بحساب كل ما سحيه المشترك ، و كل ما سدده ، و تطرحهم لتحصل علي الرصيد السابق هذا مثال لما أقصد ضع تسمية لنحسب رصيد المديونية السابق ثم نضعه فيه مع فتح التقرير و التسمية هذه هنا اسمها PREVBAL Private Sub Report_Open(Cancel As Integer) Dim M As Double If DCount("[AMOUNT]", "BILLS", "(([FIDFROM]=" & [Forms]![FBILLIN]![FIDFROM] & _ " ) AND ( [BID] < " & Forms![FBILLIN]![BID] & "))") Then M = DSum("[AMOUNT]", "BILLS", "(([FIDFROM]=" & [Forms]![FBILLIN]![FIDFROM] & _ " ) AND ( [BID] < " & Forms![FBILLIN]![BID] & "))") M = M - DSum("[PAID]", "BILLS", "(([FIDFROM]=" & [Forms]![FBILLIN]![FIDFROM] & _ " ) AND ( [BID] < " & Forms![FBILLIN]![BID] & "))") Else M = 0 End If M = Format(M, "#,##0.00") Me!PREVBAL.Caption = M End Sub حيث فى المثال أعلاه BID هو رقم الفاتورة و FIDfrom هو كود العميل و ما حدث فى الكود السابق هو حساب قيمة الفواتير السابقة علي الفاتورة الجالية لهذا العميل و طرح المدفوع منها و في البداية تم اختبار هل هناك فواتير سابقة علي رقم هذه الفاتورة لهذا العميل ام لا ، فاذا لم يكن يكون الرصيد السابق = صفر
  17. أن تقوم بعمل نموذج بدون مصدر بيانات و تسجل به بيانات المعاملة و تستدعي قيمة العملة من جدول العملات باستخدام Dlookup ثم تسجل مجموعة البيانات فى الجدول فكلما يحدث تحديث تستبدل القيمة فى جدول العملات و مع كل عملية يتم ساتدعاء القيمة الموجودة فى جدول العملات و تسجيلها فى جدول العمليات و يوجد أمثلة علي اضافة السجل من فورم بدون مصدر بيانات ب3 طرق فى اوائل مشاركات قسم النماذج فى الارشيف و يوجد موضوع لشرح دوال تجميع المجال و أمثلة عليها فى قسم الدوال فى الارشيف مع تحياتي
  18. السلام عليكم بالرغم من أن الحل الذي تفضل به الأخوة هو الأفضل الا أنه حدثت هذه المشكلة علي أحد الاجهزة قريبا و انتهت بعد تحميل فيجوال بيزيك 6 علي الجهاز طبعا هذا ليس حل مناسب ، و لكن وددت ذكره أيضا مع تحياتي
  19. و لك منا جميعا أجمل تحية هل جرب الأخوة المزيني و أبو هاجر ، طريقة برنامج الفيجوال مع ملفك ؟؟
  20. يبدو أنني لم أوضح قصدي بصورة كافية :) ما قصدته هو أن جدول أسعار العملات يتم تحديث القيمة فيه دوريا (به دائما قيمة واحدة لكل عملة ) و مع تنفيذ أي عملية يتم سحب القيمة من جدول العملات الي جدول العمليات ما قصدته بالقيمة الاخيرة ، هو اخر تحديث للقيمة المناظرة لكل عملة فى جدول العملات مع تحياتي
  21. أخي الكريم أنت فقط تدخل الدرجة ، و التقدير سيظهر فى النموذج أو التقدير كما فى المثال و لن يكون هناك تغيير حال كون مربع النص الذي به الدرجة مرتبط بحقل فى جدول ( الباقي مثل المثال تماما )
  22. بالنسبة للاستفسار سيتم اتباع نفس الخطوات بان ترسل رقم المستخدم الي النموذج عند فتحه مثلما حدث سابقا : Forms!data_frm!user_code = Me.userlist و تعدل الاسماء بحسب النماذج لديك و بعد ذلك يتم الحفظ بنفس الطريقة و بوجود نفس المربعات و الحقول المبنية عليها ( أو بحسب الأسماء لديك ) : Private Sub Form_BeforeUpdate(Cancel As Integer) If IsNull(Me![DateEntered]) Then Me![DateEntered] = Date Me![DateModified] = Date Me![TimeEntered] = Time Me![TimeModified] = Time Me.userentered = Me.user_code Me.userModified = Me.user_code Else Me![DateModified] = Date Me![TimeModified] = Time Me.userModified = Me.user_code End If End Sub
  23. هذه نسخة من المثال المفيد مع الشكر لابن مسقط و ابو هاجر save_undo.rar
  24. أخي أبو دلال يمكنك وضع الكود نفسه هنا أو رفع المثال علي أي موقع تحميل أو ارساله الي الأخ فيصل ليضعه أو أرسله لي مع تحياتي
×
×
  • اضف...

Important Information