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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. اخوي خالد 🙂 لما تحط كود في مشاركة ، انتقر على هذا الزر : وبتنفتح لك نافذة ، ادخل فيها الكود ، علشان تحصل على الكود بطريقة صحيحة ، قارن كودك بالاعلى مع هذا الكود : =Nz(DMax("[id]";"monsrf";"Month([c_date])=Month(date())"))+1 جعفر
  2. النموذج هو المكان الصحيح لعمل التسلسل ، فانت على الطريق الصحيح 🙂 ليش تريد تعمل التسلسل من الاستعلام؟ ورجاء ضع لنا الكود الشغال على النموذج 🙂 جعفر
  3. علشان اخلص الشغل بسرعة ، انا عملت جميع النماذج ، فاحذف اللي ما تريده 🙂 وفيه تعديل بسيط على الوحدة النمطية لإصطياد خطأ عدم وجود الحقل في النموذج المفتوح : Function Update_All() On Error GoTo err_Update_All Dim mySQL As String Dim arr_Fields() As Variant Dim New_value As Long Dim Old_value As Long Dim Number_Field As String Dim tbl_Name As String Dim This_Count As Integer Dim Prev_Count As Integer Dim ctrlN As String Dim frmN As String Dim i As Integer Dim j As Integer Dim This_CountF As Integer Dim Prev_CountF As Integer frmN = Screen.ActiveForm.Name ctrlN = Screen.ActiveControl.Name arr_Fields = Array("من رقم الوارد", "الي رقم الوارد", "من رقـم الرمبة", "الي رقـم الرمبة", "من رقم التخليص", "الي رقـم النخليص") New_value = Forms(frmN)(ctrlN) If Len(Forms(frmN)(ctrlN).OldValue & "") <> 0 Then Old_value = Forms(frmN)(ctrlN).OldValue End If tbl_Name = "جدول الرصاص" 'save Form values If Forms(frmN).Dirty Then Forms(frmN).Dirty = False '1 'get the hieghst value of all fields For i = LBound(arr_Fields) To UBound(arr_Fields) ctrlN = arr_Fields(i) Number_Field = ctrlN & "_2" 'New value This_CountF = DCount("*", tbl_Name, "[" & ctrlN & "]=" & New_value) If This_CountF > 0 Then This_Count = This_Count + This_CountF End If 'Old value If Len(Old_value & "") <> 0 Then Prev_CountF = DCount("*", tbl_Name, "[" & ctrlN & "]=" & Old_value) If Prev_CountF > 0 Then Prev_Count = Prev_Count + Prev_CountF End If End If Next i 'save Form values If Forms(frmN).Dirty Then Forms(frmN).Dirty = False '2 'change the values in the Fields For i = LBound(arr_Fields) To UBound(arr_Fields) ctrlN = arr_Fields(i) Number_Field = ctrlN & "_2" 'New value mySQL = "UPDATE [" & tbl_Name & "] SET [" & Number_Field & "] = " & This_Count mySQL = mySQL & " WHERE [" & ctrlN & "]=" & New_value 'Debug.Print i & "N > " & mySQL; "" DoCmd.RunSQL mySQL 'Old value If Len(Old_value & "") <> 0 Then mySQL = "UPDATE [" & tbl_Name & "] SET [" & Number_Field & "] = " & Prev_Count mySQL = mySQL & " WHERE [" & ctrlN & "]=" & Old_value 'Debug.Print i & "O > " & mySQL DoCmd.RunSQL mySQL End If 'force the field in the Form to take the new value Forms(frmN)(Number_Field).Requery Next i Exit_Update_All: Exit Function err_Update_All: If Err.Number = 438 Then 'field not in the Form Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function جعفر 1095.رصاص رقم.accdb.zip
  4. اولا لا يوجد عندك جدول بهذا الاسم !! ثانيا ، حتى لو افترضنا ان قصدك "جدول الرصاص" ، فهو يحتوي على الكثير من الحقول ، فأي الحقول اللي تريد ان نطبق عليها المثال؟ . واي النماذج اللي تريد ان يكون فيها الكود؟ جعفر
  5. رجاء اشرح المطلوب ، على اي جدول / نموذج / اسماء الحقول اللي يجب العمل عليها!! انا وقتي اصبح جدا ضيق ، و بسافر قريبا ان شاء الله ، فرجاء اعطني المعلومات بسرعة 🙂 حياك الله اخوي قاسم 🙂 جعفر
  6. وعليكم السلام 🙂 في تصميم النموذج ، اهب الى الادوات ، واختار : . . وامشي مع التعليمات والخطوات اللي يعطيها البرنامج 🙂 جعفر
  7. في هذه الحالة ، جرب هذا المرفق ، وبدون مكتبة MessageBoxW جعفر
  8. اخذا بالاعتبار مرفقك الاول ، الطريقة اللي تريدها تصير فقط عن طريق النموذج ، اعمل الكود التالي قبل حفظ النموذج: Private Sub Form_BeforeUpdate(Cancel As Integer) Me.مفتاح = Me.[م] & Me.[رقمها] & Me.[الآية] End Sub جعفر
  9. الحمدلله انك حصلت على ما تريد 🙂 ولكن ، سؤالك هو بينما عمل لك اخوي مسفر ، حقل محسوب ، والذي لا يمكن عمل مفتاح اساس له !! جعفر
  10. وعليكم السلام 🙂 سبحان الله ، قبل يومين كنت اتصفح احد المشاركات القديمة وشفت اسمك واسم واخوان آخرين غابوا عنا ، واليوم جمعنا الله سبحانه وتعالى مرة ثانية 🙂 اشتغلت على قاعدة بيانات القرآن الكريم من فترة ، فإستقطعت جدول الآيات لك وعملته كمثال ، اسم الجدول tbl_Ayah : 1. اضفت حقل sKey ، ونوعه رقم ، ولاحظ انه عندي سابقا حقل مفتاح اساس Auto_ID . استعلام تحديث ، وضم الحقل الثلاث الى الحقل الجديد . والنتيجة . ازيل مفتاح الاساس ، واحفظ الجدول . 1. انقر على حقل Auto_ID ثم خليك ضاغط على زر Ctrl على الكيبورد ، ثم انقر على الحقل sKey 2. انقر على ايقونة المفتاح . ونرى انه صار عندنا الحقلين ، بمفتاح الاساس (في الواقع الحقل الاول هو مفتاح الاساس ، والاكسس رابط الحقل الثاني بالمفتاح الاساس مال الحقل الاول 🙂 ) احفظ الجدول ، اذهب الى اعدادات الحقل sKey ، واجعله مفهرس وغير قابل للتكرار ، احفظ الجدول . وللعلم ، الجدول فيه حقلين للآيات ، حقل بالتشكيلة Ayah_Text2 (ونستعمل هذا الحقل للعرض) ، وحقل آخر بدون تشكيلة Ayah_Text_Simple (ونستعمل هذا الحقل للبحث عن الكلمات) 🙂 جعفر 1103.Database1.accdb.zip
  11. اخي الفاضل ، جوابك لا يفيدك ولا يفيدنا في حل مشكلتك !! لازم تخبرنا اللي عملته ، واين صادفتك المشكلة ، وايش نوع المشكلة ، واذا في رسالة خطأ ، فنريد نعرف هذه الرسالة ، وعلى اي سطر ، ووووو جعفر
  12. اصل الموضوع من هنا . اخي امير ، يجب ان تعطينا معلومات علشان نقدر نرد عليك بالطريقة الصحيحة !! 1. شو اسم النموذج الرئيسي ، 2. شم اسم حقل البحث ، 3. شو اسم النموذج الفرعي ، 4. شو مصدر بيانات النموذج الفرعي ، 5. شو المعيار اللي عندك للبحث ، 6. شو اسم الحقل اللي يقوم عليه البحث؟ جعفر
  13. نفس الطريقة اعلاه ، ولكن بتغيير في الوحدة النمطية التالية: Public Function MyMesg(Mesgtxt As String, _ Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, _ Optional ByVal Title As String = "Judy", _ Optional ByVal HelpFile As Variant, _ Optional ByVal Context As Variant, _ Optional ByVal AdditionalInfo As String) As VbMsgBoxResult Mesgtxt = Replace(Mesgtxt, "& Strxx", AdditionalInfo) MyMesg = MsgBox(Mesgtxt, Buttons + vbMsgBoxRtlReading + vbMsgBoxRight + vbDefaultButton1, Title) End Function حعفر 1102.الرسائل من داخل V .01.mdb.zip
  14. المرفق فيه وحدة نمطية اخرى اسمها Update_Each تعمل للحقل الذي نغير فيه القيمة فقط 🙂 جعفر
  15. هممم ، يعني في اعضاء آخرين ، غير صاحب الموضوع ، يقراؤن اجاباتي 🙂 جعفر
  16. بما انك ترسل مجموعة بيانات الى الوحدة النمطية MyMesg ، فتستطيع ارسال معلومة اخرى ، وهي بيانات الحقل المتغير يعني ، بدل: بدل MyMesg (txtOfMesg), vbOKOnly, strMsgTitle & strUserLogin استعمل MyMesg (txtOfMesg), vbOKOnly, strMsgTitle & strUserLogin,,, me.txtProfessor وبعدين في الوحدة النمطية تلعب فيها كما تشاء ، مثل: Public Function MyMesg(Mesgtxt As String, _ Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, _ Optional ByVal Title As String = "Judy", _ Optional ByVal HelpFile As Variant, _ Optional ByVal Context As Variant, _ Optional ByVal AdditionalInfo As String) As VbMsgBoxResult Mesgtxt = "This text is additional:" & AdditionalInfo & vbCrLf & Mesgtxt MyMesg = MsgBox(Mesgtxt, Buttons + vbMsgBoxRtlReading + vbMsgBoxRight + vbDefaultButton1, Title) End Function جعفر
  17. لوسمحت تفتح موضوع جديد بهذا السؤال ، فقوانين المنتدى تسمح بسؤال لكل موضوع 🙂 جعفر
  18. تفضل الشرح 🙂 . . . جعفر 1101.تجربة تقرير.accdb.zip
  19. v[hx jvtr hglvtr hgwpdp ، يعني رجاء ترفق الملف الصحيح 🙂 جعفر
  20. وعليكم السلام 🙂 في الواقع في امور ما يحتاج ان نعطيها اكثر من حجمها ، وإلا ، فالإحتمالات لا تنتهي !! هذا الجدول مثله مثل اي جدول ، Users مثلا ، اذا تم حذف هذا الجدول فماذا سيحصل للبرنامج !! هناك طريقتين بسيطتين بأتون على بالي الآن: 1. اول ما تفتح البرنامج ، تأكد عن وجود الجدول (الجداول الاساسية) ، اذا ما موجود ، اخرج من البرنامج بعد اعطاء رسالة بعدم وجود الجدول الفلاني الذي يعتمد عليه البرنامج ، بس المستخدم المسكين شو ممكنه يعمل!! 2. وبما انني اعرف انك لن تقبل بالطريقة اعلاه ، فاليك طريقة ثانية ، وهي ان تجعل هذا الجدول كما هو ، وتستعمله كل مكان في البرنامج ، وتعمل منه نسخة اضافية يبدأ اسمه Msys حتى يكون مخفي ، ولما تفتح قاعدة البيانات ، تتأكد من وجود الجدول كما هو ، وإلا ، فتقوم بنسخه من الجدول الاحتياط 🙂 طبعا بدلا عن جدول الاحتياط ، تقدر يكون عندك ملف txt تحتفظ به في البرنامج بطريقة Blob او كمرفق ، ولما يفتح البرنامج ، تستخدمه للتأكد من بيانات الجدول ، او وجود الجدول. قد تكون هناك طرق اخرى ، ولكني دائما اميل الى البساطة 🙂 جعفر
  21. للأسف لا يمكن جعل النموذج المنقسم ، نموذج فرعي !!
  22. عملت نسخة من النموذج الفرعي veiw_buy_invoice_ditail subform ، واسميته veiw_buy_invoice_ditail subform_Split ، ثم : اختار نوع النموذج Split Form . . ثم نختار ان يكون DataSheet في الاسفل: . ثم النتيجة: . والآن ، افعل به ما شئت 🙂 جعفر 1099..accdb.zip
  23. هنا تجد شرح للبرنامج . هنا وضعت روابط اكثر لمثل هذه العملية . جعفر
  24. السلام عليكم 🙂 وبعد تحدي ، وصلنا للمطلوب ان شاء الله 🙂 اضفت الحقول البرتقالية لتحسب عدد المرات الموجود فيها الرقم (من او الى) ، ويمكن جعل هذا الحقل مخفي ، الحقول الخضراء هي حقل محسوب في الجدول (موجود سابقا في البرنامج) . وهذا هو التنسيق الشرطي للحقل بالسهم الاحمر: . هذه الوحدة النمطية التي تقوم بالعمل ، Function Update_All() Dim mySQL As String Dim arr_Fields() As Variant Dim New_value As Long Dim Old_value As Long Dim Number_Field As String Dim tbl_Name As String Dim This_Count As Integer Dim Prev_Count As Integer Dim ctrlN As String Dim frmN As String Dim i As Integer Dim j As Integer Dim This_CountF As Integer Dim Prev_CountF As Integer frmN = Screen.ActiveForm.Name ctrlN = Screen.ActiveControl.Name arr_Fields = Array("من رقم الوارد", "الي رقم الوارد", "من رقـم الرمبة", "الي رقـم الرمبة", "من رقم التخليص", "الي رقـم النخليص") New_value = Forms(frmN)(ctrlN) If Len(Forms(frmN)(ctrlN).OldValue & "") <> 0 Then Old_value = Forms(frmN)(ctrlN).OldValue End If tbl_Name = "جدول الرصاص" 'save Form values If Forms(frmN).Dirty Then Forms(frmN).Dirty = False '1 'get the hieghst value of all fields For i = LBound(arr_Fields) To UBound(arr_Fields) ctrlN = arr_Fields(i) Number_Field = ctrlN & "_2" 'New value This_CountF = DCount("*", tbl_Name, "[" & ctrlN & "]=" & New_value) If This_CountF > 0 Then This_Count = This_Count + This_CountF End If 'Old value If Len(Old_value & "") <> 0 Then Prev_CountF = DCount("*", tbl_Name, "[" & ctrlN & "]=" & Old_value) If Prev_CountF > 0 Then Prev_Count = Prev_Count + Prev_CountF End If End If Next i 'save Form values If Forms(frmN).Dirty Then Forms(frmN).Dirty = False '2 'change the values in the Fields For i = LBound(arr_Fields) To UBound(arr_Fields) ctrlN = arr_Fields(i) Number_Field = ctrlN & "_2" 'New value mySQL = "UPDATE [" & tbl_Name & "] SET [" & Number_Field & "] = " & This_Count mySQL = mySQL & " WHERE [" & ctrlN & "]=" & New_value 'Debug.Print i & "N > " & mySQL; "" DoCmd.RunSQL mySQL 'Old value If Len(Old_value & "") <> 0 Then mySQL = "UPDATE [" & tbl_Name & "] SET [" & Number_Field & "] = " & Prev_Count mySQL = mySQL & " WHERE [" & ctrlN & "]=" & Old_value 'Debug.Print i & "O > " & mySQL DoCmd.RunSQL mySQL End If 'force the field in the Form to take the new value Forms(frmN)(Number_Field).Requery Next i End Function . ويتم مناداتها من حدث بعد التحديث لكل حقل ، مثلا : Private Sub الي__رقـم_الرمبة_AfterUpdate() Call Update_All End Sub . اسماء الحقول صارت مبرمجة في: الجدول ، النموذج ، الوحدة النمطية ، والتنسيق الشرطي ، لذا ، اذا فكرت بتغيير اسم الحقل في الجدول (او اضافة حقول جديدة) ، فيجب مراعاة تعديل الكائنات التي اشرت اليها اعلاه 🙂 جعفر 1095.مثال.accdb.zip
×
×
  • اضف...

Important Information