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

jjafferr

أوفيسنا
  • Posts

    10148
  • تاريخ الانضمام

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

  • Days Won

    415

كل منشورات العضو jjafferr

  1. وعليكم السلام انت تريد هذا النموذج ان يفتح مرة واحدة ، وبعدها لا يفتح؟ اعمل جدول خاص لهذا الغرض ، واجعل فيه خانة واحدة ، Shall_I_Open (مثلا)واجعلها نعم/لا ، 1. كلما اردت تشغيل هذا النموذج (عند تشغيل البرنامج مثلا) ، فيجب ان تقرأ القيمة من الجدول ، فاذا كانت = نعم ، فيسمح لك الكود بالدخول في النموذج ، واذا كانت = لا ، فلا يسمح لك بالدخول ويفتح لك نموذج آخر انت تختاره ، 2. عند حدث اغلاق النموذج ، غيّر القيمة الى لا (بواسطة استعلام تحديث مثلا) ، جعفر
  2. السلام عليكم أخي بسام بكرة ان شاء الله اعطيك مثال عن ملاحظتي في الموضوع الاخر جعفر
  3. سؤال الاخ احمد كان كلمات متقاطعة ، فحاولت احلها من الكود ولما كود ADO ما وصلني مكان ، التجأت الى DAO بس ياريت تكمل الكود ، لأني اعتقد بأن الاخ أحمد عنده اسئلة لاحقه لسؤاله الاصلي ، وكودك حيكون اول خطوة للجواب التالي جعفر
  4. تفضل أخي أحمد ، الكود بالشرح: Private Sub cmd_another_DB_Click() 'نشير الى المرجع الصحيح 'فعندنا مرجع 'ADO ومرجع DAO 'وهنا سنستخدم المرجع الاخير ، DAO Dim rst As dao.Recordset Dim db As dao.Database 'اختار قاعدة البيانات ، وفي حالتنا فهي خارجية Set db = OpenDatabase(Application.CurrentProject.Path & "\rr.mdb") 'الآن نربط الكود بقاعدة البيانات اعلاه ، بالجدول المحدد 'ونستطيع ان نعطي امر للتصفية وامر للفرز كذلك Set rst = db.OpenRecordset("Select * From emplyee") 'لكي يتم قراءة الجدول اعلاه بطريقة كاملة ، يجب ذهاب المؤشر الى آخر الجدول ثم الرجوع الى اوله rst.MoveLast: rst.MoveFirst 'عدد سجلات الجدول RC = rst.RecordCount 'إقرأ السجلات من اول سجل الى آخر سجل For i = 1 To RC 'اطبع قيمة السجلsatff_name MsgBox rst!satff_name 'انتقل الى السجل التالي rst.MoveNext 'واصل اللف حول السجلات Next i 'اغلق قاعدة لبيانات ، وازلها من الذاكرة rst.Close: Set rst = Nothing End Sub جعفر
  5. انت لما تحذف بيانات من جدول الطالب ، فتلقائيا سجلات الطالب في جدول الدرجة ينحذف. وين المشكلة؟ لوسمحت تعطيني اسماء الجداول جعفر
  6. السلام عليكم وهذه طريقة اخرى: Private Sub cmd_another_DB_Click() Dim rst As dao.Recordset Dim db As dao.Database Set db = OpenDatabase(Application.CurrentProject.Path & "\rr.mdb") Set rst = db.OpenRecordset("Select * From emplyee") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC MsgBox rst!satff_name rst.MoveNext Next i rst.Close: Set rst = Nothing End Sub جعفر
  7. شكرا لك أخي محمد أخي بسام نعم ممكن ، ولكن في الخلفية ، سيكون الحقلين يستخدمون نفس استعلام البحث!! وبالطريقة التي عملتها انا ، يمكنك ان تبحث اولا عن الكلمات التي في "موضوع الخطاب" ثم تترك مسافة ، ثم تبحث في كلمات الحقل "كلمات ارشادية" جعفر
  8. السلام عليكم ورحمة الله وبركاته قمت بالعمل لإثبات انه ممكن ، ولكن الشئ المهم ما قاله أخي أبو خليل: . لهذا ، هذه النتيجة: . وهذا الكود الذي يقوم بالعمل كاملا: 1. استعلام الحاق للجدول table1 ، 2. استعلام تحديث للجدول table2 ، 3. استعلام تحديث للجدول table3 ، Private Sub cmd_append_update_Click() Dim rstFrom As DAO.Recordset Dim rstTo As DAO.Recordset Set rstTo = CurrentDb.OpenRecordset("Select * From table4") 'table1, Append Set rstFrom = CurrentDb.OpenRecordset("Select * From table1") rstFrom.MoveLast: rstFrom.MoveFirst RC = rstFrom.RecordCount For i = 1 To RC rstTo.AddNew rstTo!a = rstFrom!a rstTo.Update rstFrom.MoveNext Next i 'table2, Update rstTo.MoveFirst Set rstFrom = CurrentDb.OpenRecordset("Select * From table2") rstFrom.MoveLast: rstFrom.MoveFirst RC = rstFrom.RecordCount For i = 1 To RC rstTo.Edit rstTo!b = rstFrom!b rstTo.Update rstFrom.MoveNext rstTo.MoveNext Next i 'table3, Update rstTo.MoveFirst Set rstFrom = CurrentDb.OpenRecordset("Select * From table3") rstFrom.MoveLast: rstFrom.MoveFirst RC = rstFrom.RecordCount For i = 1 To RC rstTo.Edit rstTo!c = rstFrom!c rstTo.Update rstFrom.MoveNext rstTo.MoveNext Next i MsgBox "Done" End Sub جعفر mo_esam_sample.zip
  9. السلام عليكم شكرا لك على هذه الملاحظة ، واللي كان لها الفضل في ايجاد حل سهل: . عليه تم اضافة 2000 الى السنوات ، وكان الله رؤوف رحيم . جعفر 310.N2.mdb.zip
  10. لا يمكن حذف البيانات من جميع الجداول باستعمال استعلام واحد ، لذا يجب عمل استعلام حذف مستقل بكل جدول ، وفي الكود تقوم بتشغيل الاستعلامات واحدة خلف الاخرى ، هكذا: لا تعرض رسالة حذف البيانات التحذيرية docmd.setwarnings false الآن نشغل جميع استعلامات الحذف docmd.openquery "qry_1" docmd.openquery "qry_2" docmd.openquery "qry_3" الآن اعرض جميع الرسائل التحذيرية docmd.setwarnings true . . انا اعطيتك الطريقة لعمل هذا الاستعلام للحقل تاريخ الميلاد ، فكل اللي عليك عمله هو تغيير الحقل الى "تاريخ تقديم المادة" مع الحفاظ على المعيار بين التاريخين. جعفر
  11. . لما قلت لي: . فهمت منها انك فهمتها وطبقتها!! وإلا ، كان بإمكانك ان تستوضح أكثر!! على العموم ، مثل ما قلت سابقا ، استعمل طريقة أخي محمود ، وياريت انك تسجل اعجابك بمشاركته . لا الفكرة جدا بسيطة ، فبدل ان تعمل alt+shift يدويا ، يقوم الكود بعمله جعفر
  12. السلام عليكم أخي بسام لأن سؤالك توسع ، فرأيت ان اعمل موضوع منفصل لتعم الفائدة رجاء مراجعة الرابط التالي: http://www.officena.net/ib/topic/65856-هدية-البحث-عن-اي-جزء-من-الكلمة-،-في-اي-عدد-من-الحقول/ جعفر
  13. السلام عليكم ورحمة الله وبركاته الموضوع هذا بدأ بسؤال الرابط التالي: http://www.officena.net/ib/topic/65783-البحث-عن-اي-جزء-من-الكلمة-عنوان-معدل/ ولكن لأني غيرت الكود وجعلته يبحث في اي عدد من الحقول في السجل ، لذا رأيت ان اجعل له موضوعا مستقلا يمكنك البحث عن اي جزء من الكلمة ، واذا اردت البحث عن كلمة اخرى في السجل او جزء منها ، فما عليك الا ان تضع (مسافة او / او *) بين الكلمات ، فسيعتبرها البرنامج على انها كلمة اخرى يجب البحث عنها. الشئ المهم في الكود هو طريقة إضافة حقول جديدة للبحث فيها: هذا اول حقل يتم البحث فيه fld = "[كلمات ارشادية]" لما نريد ان نضيف حقول إضافية للبحث فيها ، يجب ان يكون الكود كالتالي fld = fld & " & ' ' & " & "[موضوع الخطاب]" fld = fld & " & ' ' & " & "[my other field]" وكل ما عليك الآن هو ان تطبع وترى نتيجة بحثك: . ملاحظة مهمة: اذا كان برنامجك على الشبكة ، فلا تضع الكود على "حدث التغيير" (معناه ، كلما اضفت/حذفت حرف ، فارجع الى الجدول وخذ البيانات منه) ، لأنه سيجعل البرنامج جدا بطئ ، وانما استخدم زر البحث. جعفر 309.Search_as_you_Type_Multiple_Fields_jj.mdb.zip
  14. وعليكم السلام أخي محمود في الواقع اذا كان قصد الاخ محمد سعيد ان يغير لغة الكمبيوتر ، ويحتفظ بهذا التغيير لكل البرنامج (وليس للنموذج الذي هو عليه الان فقط) ،فطريقتك هي الاسهل والافضل ، (مع مراعاة إضافة كود محاذاة الحقل لليمين او اليسار عند الكتابة) اما اذا كان القصد للنموذج الحالي فقط ، فكذلك طريقة الاخ محمود الافضل ، مع مراعاة تغيير اللغة عند الخروج من النموذج الحالي ، (مع مراعاة إضافة كود محاذاة الحقل لليمين او اليسار عند الكتابة) طريقتي لا تلعب/تغير إعدادات الكمبيوتر ، وانما تستغل الاعدادات الموجودة في نماذج/حقول الاكسس جعفر
  15. وعليكم السلام الظاهر ان الكود اللي عملته الان صحيح ولكنك لم ترسل اي قيمة بالحقل EmpID ، اي ان الحقل EmpID فارغ ، لها السبب لا يوجد لديك سجل حيث قيمة EmpID تساوي لا شئ!! ولأني لا ارى برنامجك ، ومن خلال الصورة السابقة اللي ارفقتها انت ، ارى انك عملت الكود على حدث زر ، ولم تعمله كما قلت لك: . عندما تنقر على EmpID ، فقيمة EmpID ممكن اخذها من السجل الذي تم النقر عليه ، واما عندما تنقر في اي مكان آخر (زر الامر مثلا) ، فقيمة EmpID غير متوفرة!! جعفر
  16. ممكن تشوف الرابط التالي ، كيف اني جعلت التقرير (وهو عبارة عن رسالة رسمية) بدون مربعات النص والمسافات اللي بينها ، فالبيانات اصبحت جزء من التقرير: http://www.officena.net/ib/topic/63872-مساعدة-بمعاينة-وطباعة-التقرير/?do=findComment&comment=416983 جعفر رجاء فتح سؤال خاص لهذا الموضوع ، والشباب ما بيقصروا معاك ان شاء الله جعفر
  17. تفضل تم تغيير اعدادات النموذج "عقد ايجار" ، حتى يُظهر جميع السجلات (بدل ان يكون لإدخال البيانات فقط) ، تم عمل الاستعلام الالحاقي qry_Contracts_Append ، والذي يعمل نسخة من السجل الحالي في النموذج ، ويغير تاريخ الدخول الى تاريخ اليوم ، الاستعلام الالحاقي يعمل على الزر "عقد جديد" ، والذي يستنسخ العقد الحالي في النموذج ، ويعمل نسخة جديدة منه دون تغيير اي من البيانات ، سوى تاريخ الدخول ، عندك مشكلة اذا اردت تكرار رقم العقد ، فهو "رقم تلقائي" في الجدول ولا يمكن تكراره. جعفر 312.Rent_Renew.accdb.zip
  18. السلام عليكم أخي عمر في الواقع اخي شوقي قد اعطاك الجواب ، وانا جمعته مع بعض هذه النتيجة: . هنا انا استعملت استعلام لأقوم بالحسابات المطلوبة ، واستخدمت هذا الاستعلام كمصدر للتقرير. وستلاحظ اني حولت السنة/الشهر/اليوم الى تاريخ من (1) ، وتاريخ الى (2) ، ثم ارسلت هذين التاريخين الى الوحدة النمطية التي تخص المطلوب (يعني وحدة نمطية للسنين ، واخرى للاشهر وثالثة للايام ، والتي ارفقها الاخي شوقي في مشاركته في الموضوع). وهذا هو الكود: Option Compare Database Function CalcAge(vDate1 As Date, vdate2 As Date) Dim vYears As Integer, vMonths As Integer, vDays As Integer vMonths = DateDiff("m", vDate1, vdate2) vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) If vDays < 0 Then vMonths = vMonths - 1 vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) End If vYears = vMonths \ 12 vMonths = vMonths Mod 12 CalcAge = vYears & " ÓäÉ, " & vMonths & " ÔåÑ, " & vDays & " íæã" End Function Function CalcYears(vDate1 As Date, vdate2 As Date) Dim vYears As Integer, vMonths As Integer, vDays As Integer vMonths = DateDiff("m", vDate1, vdate2) vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) If vDays < 0 Then vMonths = vMonths - 1 vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) End If vYears = vMonths \ 12 vMonths = vMonths Mod 12 CalcYears = vYears End Function Function CalcMonths(vDate1 As Date, vdate2 As Date) Dim vYears As Integer, vMonths As Integer, vDays As Integer vMonths = DateDiff("m", vDate1, vdate2) vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) If vDays < 0 Then vMonths = vMonths - 1 vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) End If vYears = vMonths \ 12 vMonths = vMonths Mod 12 CalcMonths = vMonths End Function Function CalcDays(vDate1 As Date, vdate2 As Date) Dim vYears As Integer, vMonths As Integer, vDays As Integer vMonths = DateDiff("m", vDate1, vdate2) vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) If vDays < 0 Then vMonths = vMonths - 1 vDays = DateDiff("d", DateAdd("m", vMonths, vDate1), vdate2) End If vYears = vMonths \ 12 vMonths = vMonths Mod 12 CalcDays = vDays End Function جعفر 310.N1.mdb.zip
  19. أخي الفاضل لو تكرمت تخبرنا اسم النموذج الذي تريد ان تكرر سجله ، وتعطينا اي معلومات اخرى تفيدنا لهذه العملية
×
×
  • اضف...

Important Information