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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. وعليكم السلام اخوي عمر جرب هذه الطريقة: افتح الاكسس (مو قاعدة بياناتك ، وإنما برنامج الاكسس) ، ثم اختار قاعدة بياناتك ، واختار Open Exclusive . جعفر
  2. تفضل اخوي حربي نسخة من برنامج ابو زاهر بصيغة 2003 جعفر 947.ترحيل الطلبيه.mdb.zip
  3. وعليكم السلام اخوي ابو زاهر تفضل: هذا استعلام تحديث الحقلين في الجدول a_tlbia_Hr ، وبمعيار الفاتورة ورقم الصنف . وهذا كود حدث نقر زر التحديث: Private Sub cmd_update_a_tlbia_Hr_Click() DoCmd.SetWarnings False DoCmd.OpenQuery "qry_Update_Alkmiah_mjmo" DoCmd.SetWarnings True End Sub . جعفر 947.ترحيل الطلبيه.accdb.zip
  4. وعليكم السلام عند البحث في المنتدى ، حصلت لك على: و جعفر
  5. وعليكم السلام تفضل هذا الرابط به طريقة سهلة ، ولكن قم بتغيير الامر من Dlookup الى DCount جعفر
  6. السلام عليكم ورحمة الله وبركاته عندي برنامج في احد المؤسسات ويعمل تمام ، ولكنهم اضطروا لعمل فورمات للجهاز وتم تنصيب الوندوز العربي ، وقاموا بعمل مجلد جديد للبرنامج ، وتغيير اسم البرنامج الى اللغة العربية. عند تشغيل البرنامج ، بدأ كود الواجهة FE بعمل ربط مع برنامج الجداول BE ، وظهرت لهم نافذة اختيار مكان وجود برنامج الجداول BE : . وبعد اختيار المسار والبرنامج ، ظهرت هذه الرسالة: . ثم هذه الرسالة: . وبعد النظر في هذه الصور ، اتضح لي ان هناك شيء غريب في الصورة (لاحظ السهم الاحمر) : . لاحظت وجود علامة استفهام في اسم برنامج BE ، لذا طلب من الشباب ان يقوموا بحذف علامة الاستفهام من الاسم ، وعليه حصلوا على هذه الرساله: . السؤال كان ، من اين اتى هذا الاسم ، والجواب انه من جدول MSysObjects ، ولكن وكما نرى من الصورة ادناه ان اسم البرنامج والمسار في الجدول صحيحين: . لذا اردت التأكد ، واردت ان ارى ما يراه الكمبيوتر ، فنسخت بيانات الحقل والصقتها في Notepad : . ولم الحظ اي شيء غريب ، ولكن ، Notepad يعمل على unicode و ansi ، لذا الصقت البيانات في صفحة كود VBA ، وحصلت على النتيجة التالية: . هذا يعني ان الوندوز العربي اضاف بعض الرموز لإسم البرنامج ، وبذلك لم يوجد تطابق بين اسم البرنامج BE وبيانات المسار التي يتوقعها برنامج الاكسس !! الحل الاسهل كان بتغيير اسم برنامج الجداول BE الى اللغة الانجليزية ، وتم حل المشكلة (او حذف ربط الجداول ، واعادة الربط مرة ثانية) ------------------------------------------------------- اضافة بتاريخ 12/11/2020 والامر غير مقتصر على عملية ربط قاعدة البيانات ، فقد نحصل على رسالة الخطأ التالية ، والسبب هو كما اشرنا اليه اعلاه : جعفر
  7. السلام عليكم في الواقع الجواب الاصح هو دمج بين جوابي المشاركات: اعمل قاعدة بيانات جديدة وقم باستيراد جميع الكائنات من القاعدة القديمة و قم بعمل ضغط واصلاح للقاعدة الجديدة وهذا الذي قمت بعمله في المشاركة التالية ، حيث ان الضغط والاصلاح لم يكفي (طبعا تم التعديل على الصور ايضا لجعلها مربوطة بدل ان تكون مضمنه) : جعفر
  8. وعليكم السلام☺️ اخذ نسخه منه ، ثم اعمل له ضغط واصلاح. جعفر
  9. جرب المواضيع في هذا الرابط جعفر
  10. وعليكم السلام واهلا وسهلا بك في المنتدى جرب هذا التعديل: =sum([نوع الاحازة]+[المجموع الاجازات]) جعفر
  11. السلام عليكم تفضل اخوي حربي: هذه قاعدة بيانات مشاركتك الاولى، 1. في المجاميع ، استخدامك للتاريخ يجب ان لا تظهر نتائجه ، لذلك يجب ان يكون بالطريقة ادناه، 2. الحقل Sum_Mony نوعه "نص" (طبعا هذا غير صحيح ويجب تعديله من جانبك) ، وعلشان تحصل على مجموع حقل النص ، يجب ان تستعمل الامر Val اي تأخذ قيمة حقل النص: . والنتيجة . جعفر 945.Prog3.3.mdb.zip
  12. السلام عليكم اخوي ابوخليل سبحان الله ، صرنا اثنين نشتغل على الموضوع انا استعمل المثال الاول. جعفر
  13. تفضل . وهكذا اصبح الكود Private Sub أمر140_Click() Dim ctl As Control Str2 = "" For Each ctl In Me.التعديل.Controls If (ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox) Then If Len(ctl.Value & "") = 0 Or ctl.Value = 0 Then Str2 = Str2 & ctl.ControlSource & vbCrLf End If End If Next If Len(Str2 & "") <> 0 Then MsgBox "الحقول التالية فارغة" & vbCrLf & _ "للموظف " & Me.التعديل!نص161 & " " & Me.التعديل!نص62 & vbCrLf & vbCrLf & _ Mid(Str2, 1) Else MsgBox "جميع الحقول كامله، سيتم الان حفظ بيانات" & vbCrLf & _ "الموظف " & Me.التعديل!نص161 & " " & Me.التعديل!نص62 Me.Refresh End If End Sub جعفر 944.1.Nouveau Microsoft Office Access 2007 قاعدة بيانات.accdb.zip
  14. يمكنك استخدام الكود التالي كذلك: Private Sub أمر140_Click() Dim ctl As Control Str2 = "" For Each ctl In Me.التعديل.Controls If (ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox) Then If Len(ctl.Value & "") = 0 Or ctl.Value = 0 Then Str2 = Str2 & ctl.ControlSource & vbCrLf End If End If Next If Len(Str2 & "") <> 0 Then MsgBox "الحقول التالية فارغة" & vbCrLf & vbCrLf & Mid(Str2, 1) Else Me.Refresh End If End Sub . والنتيجة . جعفر 944.Nouveau Microsoft Office Access 2007 قاعدة بيانات.accdb.zip
  15. السلام عليكم اخي بلال رجاء مواصلة الموضوع في هنا، وعدم فتح موضوع جديد لنفس الموضوع، فهذا فيه تشتت للأفكار! وخصوصا ان معك من الاعضاء من يحاول مساعدتك، والكود الذي ارفقته هو كود الاخ @Mo3taz3zzat جعفر
  16. السلام عليكم كان لي هذا الموضوع جعفر
  17. طلبك غير واضح!! وعلى العموم ، نحن بهذه الطريقة خرجنا عن اصل الموضوع الذي تم الوصل لحل له ، فرجاء تعمل لك موضوع جديد ، ولكن اشرح فيه المطلوب وبالتفصيل ، وبمثال جعفر
  18. وعليكم السلام 1. تختار جميع الحقول ، 2. تختار لون الخلفية الذي تريده اذا كان الحقل فيه قيمة ، وهنا انا اخترت الاخضر ، وتلون الحقول كلها ، . 1. واثناء اختيار جميع الحقول ، 2. انقر على زر التنسيق الشرطي ، 3. ادخل هذه القيمة ، و ضع الرمز ' مرتين (يعني هذا ليس الرمز " ) . والنتيجة: . وللأمانه العلمية ، فانا اتبعت الطريقة من هذا الرابط: https://stackoverflow.com/questions/10703461/is-null-conditional-formatting-ms-access-forms جعفر
  19. انا اوضحته في الصورة المرفقة في مشاركتي السابقة ، وعملت تحتها خط بالاحمر، لا تضاف ، وانما تستبدل ، في اي مكان في الكود او الاستعلام ، لا تستعمل usys-invoicesale وانما استعمل [usys-invoicesale] ، وطبعا في الاستعلام usys_account ونصيحتي ، واذا عندك مجال والبرنامج في بدايته ، فغير اسم الاستعلام usys-invoicesale الى usys_invoicesale وابدا كتابة الاستعلام usys_account من جديد. جعفر
  20. سيدي الفاضل ابو عبدالله عندك مشكلتين: 1. في الاستعلام usys_account ، عندك كلمة usys مكررة مرتين ، وهذا خطأ مطبعي ، 2. ولكن المشكلة الاكبر والتي لا يعرفها الكثير من المبرمجين ، وهو عدم استعمال علامة "ناقص" في مسميات كائنات الاكسس (لاحظ اسم الجدول usys-invoicesale ) ، واذا اردت استعمالها كلٌ ولابد ، فيجب ان تضع هذا المسمى بين قوسين مربعين في الكود ، هكذا: [usys-invoicesale] جعفر
  21. وعليكم السلام اذا كان اسم الحقل: A ، فغيّره الى A1 مثلا ، ونفترض ان مصدر الحقل هو A كذلك ، فغيّره الى: =nz([A];0) جعفر
  22. وعليكم السلام في النموذج TestF نضيف الحدث على التحميل ، و وحدة نمطية لحساب عدد الحقول: Function Count_Fields() Dim rst As DAO.Recordset 'Set rst = Forms!main!Datamasterform!TestF.Form.RecordsetClone Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst: RC = rst.RecordCount K1 = 0: K2 = 0 For i = 1 To RC If rst!Country = "اسكندرية" Then K1 = K1 + 1 End If If rst![on or of] = -1 Then K2 = K2 + 1 End If rst.MoveNext Next i Me.Count_Esk = K1 Me.Count_True = K2 Me.Count_False = RC - K2 End Function Private Sub Form_Load() Call Count_Fields End Sub . وعند الضغط على زر التصفية ، ننادي الوحدة النمطية اعلاه: Call Form_TestF.Count_Fields جعفر 660.2.Test2006.mdb.zip
  23. انا لم انزل مرفقك ، فالكود السابق لم يكن يعمل على المادة اصلا !! جرب الكود التالي Private Sub Form_BeforeUpdate(Cancel As Integer) On Error GoTo err_chk_BeforeUpdate Dim ctl As Control Dim rst As DAO.Recordset Dim dbs As DAO.Database Dim fName As String: Dim myCriteria As String Dim A0 As String: Dim A1 As String: Dim A2 As String If Left(Me.ActiveControl.Name, Len("TextBox")) <> "Textbox" Then Set ctl = Me.ActiveControl Else Set ctl = ctlDrop End If 'fName = "[" & Mid(ctl.Name, 1, Len(ctl.Name) - 1) & "-مادة" & Right(ctl.Name, 1) & "]" '[الاثنين-مادة1] fName = "[" & Mid(ctl.Name, 1, Len(ctl.Name) - 1) & Right(ctl.Name, 1) & "]" myCriteria = "[" & ctl.Name & "]=" & Chr(39) & ctl.Value & Chr(39) Debug.Print "Select * From [Teacher Class] Where " & myCriteria 'A0 = DLookup(ctl.Name, "Teacher Class", myCriteria) 'A1 = DLookup(fName, "Teacher Class", myCriteria) 'A2 = DLookup("[NAMEe]", "Teacher Class", myCriteria) Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Select * From [Teacher Class] Where " & myCriteria) A0 = rst(ctl.Name) A1 = rst(fName) A2 = rst!NAMEe ' If A0 > 0 Then Beep If MsgBox("...هذا الفصل " & ctl.Name & "..لديه مادة.." & vbCrLf & _ " باسم : " & A1 & vbCrLf & _ " للمدرس : " & A2, _ vbYesNo + vbCritical + vbMsgBoxRight, "تنبيه") = vbNo Then Me.Undo Cancel = True End If ' End If Exit_chk_BeforeUpdate: rst.Close: Set rst = Nothing: dbs.Close Exit Sub err_chk_BeforeUpdate: If err.Number = 3021 Then Resume Next Else MsgBox err.Number & vbCrLf & err.Description End If End Sub واستخدم الطريقة اللي اخبرت في الصورة في مشاركتي السابقة ، على بقية حقول المادة في النموذج ايضا. جعفر
  24. وعليكم السلام بما انك عملت تغيير في الكود الاصل ، واللي كان تابع لحدث "قبل التحديث" الحقول ، فيجب ان نُرجع الكود ، بحيث انه يخاطب كود "قبل تحديث النموذج" ، وبدل ان اضيف الكود لكل حقل ، اعمل التالي: اختار الحقول التي يجب على البرنامج يتأكد منها (كما في الصورة ادناه) ، ثم في الحدث "قبل التحديث" لهذه الحقول ، ننادي الوحدة النمطية chk_BeforeUpdate (رجاء كتابة اسم الوحدة النمطية كما تراها في الصورة ادناه) ، هكذا : . وعليه ، فيجب علينا إضافة الوحدة النمطية الجديدة ، وعمل تعديل بسيط على الكود الاصل ، ليصبحا هكذا : Function chk_BeforeUpdate() Call Form_BeforeUpdate(0) End Function Private Sub Form_BeforeUpdate(Cancel As Integer) On Error GoTo err_chk_BeforeUpdate Dim ctl As Control Dim rst As DAO.Recordset Dim dbs As DAO.Database Dim fName As String: Dim myCriteria As String Dim A0 As String: Dim A1 As String: Dim A2 As String If Left(Me.ActiveControl.Name, Len("TextBox")) <> "Textbox" Then Set ctl = Me.ActiveControl Else Set ctl = ctlDrop End If fName = "[" & Mid(ctl.Name, 1, Len(ctl.Name) - 1) & "-مادة" & Right(ctl.Name, 1) & "]" '[الاثنين-مادة1] myCriteria = "[" & ctl.Name & "]=" & Chr(39) & ctl.Value & Chr(39) 'A0 = DLookup(ctl.Name, "Teacher Class", myCriteria) 'A1 = DLookup(fName, "Teacher Class", myCriteria) 'A2 = DLookup("[NAMEe]", "Teacher Class", myCriteria) Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Select * From [Teacher Class] Where " & myCriteria) A0 = rst(ctl.Name) A1 = rst(fName) A2 = rst!NAMEe ' If A0 > 0 Then Beep If MsgBox("...هذا الفصل " & ctl.Name & "..لديه مادة.." & vbCrLf & _ " باسم : " & A1 & vbCrLf & _ " للمدرس : " & A2, _ vbYesNo + vbCritical + vbMsgBoxRight, "تنبيه") = vbNo Then Me.Undo Cancel = True End If ' End If Exit_chk_BeforeUpdate: rst.Close: Set rst = Nothing: dbs.Close Exit Sub err_chk_BeforeUpdate: If err.Number = 3021 Then Resume Next Else MsgBox err.Number & vbCrLf & err.Description End If End Sub . اما بالنسبة الى رسائل الخطأ التي تكلمت عنها ، فلا علم لي بها , ولم تظهر لي. جعفر جدول الحصص.zip
×
×
  • اضف...

Important Information