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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. السلام عليكم شباب 🙂 ابو بهاء مو علوم وخبر 🙂 خلونا ننسى طلب ابو بهاء ، ونشوف عمل النموذج التالي: 1. عندي جدول ، 2.1. عملت استعلام 1 لهذا الجدول qry_1 ، لأدخال البيانات ، 2.2. عملت استعلام 2 لهذا الجدول qry_2 ، للبحث ، بحيث يكون هناك معيار/معايير لحقول البحث ، وهذه المعايير تشير الى حقول النموذج ، مثل (Forms!frm_1!ID) 3. عملت نموذج يأخذ بياناته من هذه الاستعلامات ، حسب صلاحيات المستخدم: أ.1. للمستخدم العادي ، نفتح النموذج بالطريقة العادية: docmd.openform "frm_1" أ.2. لمستخدمي البحث ، نفتح النموذج للقراءة فقط: docmd.OpenForm "frm_1",,,,acFormReadOnly ب. ممكن اعمل سجل جديد ، بدون مشاكل ، بإستخدام qry_1 ج. علشان البحث ، استخدم qry_2 د. اعمل على حدث فتح النموذج ، الكود التالي: if user_Group=1 then me.recordsource=qry_1 elseif user_Group=2 then me.recordsource=qry_2 end if اعتقد ممكن استعمال هذه الطريقة لأخونا ابو بهاء 🙂 جعفر
  2. وعليكم السلام 🙂 حسب فهمي للموضوع ، هناك طريقتين: 1. تضيف كلمة true في معيار الحقلين : . او 2. . جعفر
  3. وعليكم السلام ابو عبدالله 🙂 سؤالك غير واضح ، يا ريت تعمل مثال من بياناتك في ورقة اكسل/وورد مثلا 🙂 جعفر
  4. حياك الله 🙂 على راسي ، ولكن شروط المنتدى لا تسمح لأكثر من سؤال في موضوع واحد 🙂 رجاء ارفاق رابط بالموضوع ، او تعمل موضوع جديد ، وترفق الرابط هنا 🙂 جعفر
  5. السلام عليكم ورحمة الله وبركاته 🙂 اولا ، يجب تثبيت الموضوع 🙂 وبعدها ، هضم محتواه 🙂 واللي بعدها تطبيقه 🙂 ويا سلام عليك ، سيد بمعنى الكلمة 🙂 جعفر
  6. السلام عليكم 🙂 اذا تسمحوا لي بالمشاركة 🙂 لإصطياد رقم الخطأ ، يجب علينا ان نستعمل حدث "on error" ، في النموذج الذي نحصل فيه على الخطأ ، وفي حالتنا ، فهو النموذج الفرعي ، هكذا: Private Sub Form_Error(DataErr As Integer, Response As Integer) MsgBox DataErr End Sub وعند التجربة ، نحصل على هذا: الآن وقد عرفنا رقم الخطأ ، اصبح من السهل التعامل معاه ، هكذا مثلا: Private Sub Form_Error(DataErr As Integer, Response As Integer) 'MsgBox DataErr If DataErr = 3314 Then Response = acDataErrContinue strMsg = "لا يمكن ترك الحقل التالي فارغ " & vbCrLf & _ "المنصرف بالوحدة الصغرى" MsgBox strMsg End If End Sub ونلقى هذه الرسالة الآن: جعفر 1110.Market.accdb.zip
  7. السلام عليكم 🙂 رجاء من الجميع الالتزام بقوانين المنتدى ، والاهم حُسن استعمال الالفاظ ، وبدون تجريح لأحد 🙂 جعفر
  8. شكرا اخي صالح 🙂 هذه من الاسئلة المطلوبة ، تعبئة جدول 🙂 جعفر
  9. حياك الله 🙂 قوانين المنتدى تقتضي ان يكون هناك موضوع لكل سؤال ، وبما هذا الطلب جديد ، فرجاء عمل سؤال له ، وفي الواقع سؤالك يحتاج مزيد من التوضيح ، فلما تضع السؤال ، يفضل ان تضع فيه هذه الجزئية من برنامجك ، علشان الشباب يساعدوك ، اما الشياب ، فيقولون لكم تصبحون على خير جعفر
  10. ممتاز ، ولكن ناقصك ، اذا كان في اخطاء اخرى غير 7847 ، فعليك عمل الكود هكذا : On Error GoTo MyErr ثم الكود MyErr: If Err.Number = 7847 Then MsgBox " هذا الملف موجود سابقا ", vbInformation, " : عنوان الرساله " else msgbox err.number & vbcrlf & err.description end if جعفر
  11. الامر On Error Resume Next جدا خطير ، ويجب ان يُستعمل في حالات جدا خاصة 🙂 بينما كود اصطياد الخطأ الذي وضعته انا ، جدا مرن ، ويستوعب اي عدد من الاخطاء ، ويمكن معالجة كل نوع منها بطريقة خاصة 🙂 شوف مثلا اصطياد هذه الاخطاء ، وهذا كود من احد برنامجي : Exit Sub ProcError: Select Case Err Case 7874 'could not find QueryDef Resume Next Case 9 'Worksheet doesn't exist objXLWb.Worksheets.Add Set objXLSheet = objXLWb.ActiveSheet objXLSheet.Name = strWorkSheet Resume Next Case 1004 'Workbook doesn't exist, make it objXLApp.Workbooks.Add Set objXLWb = objXLApp.ActiveWorkbook objXLWb.SaveAs strWorkBook, FileFormat:=strSaveAs Resume Next Case 53 'file not found Resume Next Case 3270 'Field Caption not found, use field name objXLCell(, i + 1) = rs.Fields(i).Name Resume Next Case 3061 'too few parameters, expected 1 or more 'this error occurs when trying to run a query which needs its parameters from a Form, 'the Form should be open with the parameter, then this code take the values properly Dim qdf As QueryDef Dim prm As Parameter 'Set qdf = CurrentDb.QueryDefs("strSql") Set qdf = CurrentDb.CreateQueryDef("NewQueryDef", strSql) For Each prm In qdf.Parameters prm.Value = Eval(prm.Name) Next prm Set rs = qdf.OpenRecordset(dbOpenDynaset) DoCmd.DeleteObject acQuery, "NewQueryDef" Resume Next Case Else DoCmd.Hourglass False MsgBox Err.Number & " " & Err.Description 'Stop 'OkNotOk = "NotOk" Exit Sub Resume 0 End Select End Sub جعفر
  12. في الواقع يمكننا ان نتوسع في كود الصور اكثر ، حتى نخفي الصوره الغير موجودة : Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) on error goto err_Detail_Format dim int_Which_Picture int_Which_Picture=1 Me![ImageFrame1].Picture = Me![Picture1] int_Which_Picture=2 Me![ImageFrame2].Picture = Me![Picture2] int_Which_Picture=3 Me![ImageFrame3].Picture = Me![Picture3] int_Which_Picture=4 Me![ImageFrame4].Picture = Me![Picture4] Exit_Detail_Format: exit sub err_Detail_Format: if err.number=2220 then if int_Which_Picture=1 then Me![ImageFrame1].Picture ="" elseif int_Which_Picture=2 then Me![ImageFrame2].Picture ="" elseif int_Which_Picture=3 then Me![ImageFrame3].Picture ="" elseif int_Which_Picture=4 then Me![ImageFrame4].Picture ="" endif resume next else msgbox err.number & vbcrlf & err.description endif End Sub جعفر
  13. لا يا ابو ياسين ، هذا الكود موجود في حدث "الحالي" للنموذج ، واذا وضعت الكود اعلاه ، فالبرنامج ما راح يعطيه اي رسالة خطأ !! وطبعا احنا نعرف ان حدث "الحالي" من اهم الاحداث ، والكثير من الاكواد تكون فيه ، فما بيعرف شو الاخطاء الاخرى في الحدث هذا !! نعم ، ممكن نخليه على اوامر الزر الاخرى اللي طلبها السائل 🙂 جعفر
  14. وعليكم السلام 🙂 تفضل: Private Sub Command42_Click() on error goto err_Command42_Click Forms!Violations_Form_Share!Violations_Table_subform.SetFocus DoCmd.GoToRecord , , acPrevious Exit_Command42_Click: exit sub err_Command42_Click: msgbox "عفوا هذا اول سجل" resume Exit_Command42_Click End Sub كود السهم للأمام Private Sub Command41_Click() on error goto err_Command41_Click Forms!Violations_Form_Share!Violations_Table_subform.SetFocus DoCmd.GoToRecord , , acNext Exit_Command41_Click: exit sub err_Command41_Click: msgbox "عفوا هذا اخر سجل" resume Exit_Command41_Click End Sub وتقريباً نفس المشكلة في التقرير حيث يحتوي على صور ... في حال وجود سجلات يعمل بشكل ممتاز .. ولكن في حال عدم وجود سجلات وعمل بحث أو معاينة يكون الخطأ في الكود ... فإذا كان بالإمكان وجود حل لذلك Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) on error goto err_Detail_Format Me![ImageFrame1].Picture = Me![Picture1] Me![ImageFrame2].Picture = Me![Picture2] Me![ImageFrame3].Picture = Me![Picture3] Me![ImageFrame4].Picture = Me![Picture4] Exit_Detail_Format: exit sub err_Detail_Format: if err.number=2220 then resume next else msgbox err.number & vbcrlf & err.description endif End Sub جعفر
  15. وعليكم السلام 🙂 اذا كان قصدك ان عندك اكثر من جدول ، وهذه الجداول مرتبطة بعلاقة مع بعض ، وفي الجدول 1 عندك حقل مفهرس وغير قابل للتكرار (مثلا ID) ، وفي الجدول 2 عندك حقل ID ، والجدولين مربوطين بالعلاقة التالية: . فعند حذف اي سجل من الجدول 1 (مثلا ID=5 ) ، فإن جميع سجلات ID=5 في الجدول 2 سوف تحذف تلقائيا (اذا كان المربع الذي عليه السهم ، صح) 🙂 . جعفر
  16. اخي بلال 🙂 رجاء لا تفتح موضوا آخر لنفس السؤال (انا دمجت الموضوعين معا 🙂 ) ، وكلمة "للرفع" تكفي لجعل بقية الاعضاء يرون الموضوع 🙂 وما شاء الله ، اخوي @kanory متابع معاك ، فأعطه الفرصة حتى يرد 🙂 جعفر
  17. السلام عليكم 🙂 مجهود مميز من فريق عمل 🙂 اهلا وسهلا برجوعك اخي ابو ياسين 🙂 وانت الآن تحت اعين المراقبة 🙂 جعفر
  18. شكرا لك اخوي خالد ، بحثت عن المجاميع في المكان الخطأ ، فما لقيته وكما قال اخوي خالد: . . . جعفر
  19. السلام عليكم 🙂 اتفق مع اخوي ابو ابراهيم 100% 🙂 ممكن عمل جدول خاص ، به حقل واحد فقط ، لهذه القيمة فقط ، وتنادي هذه القيمة كلما احتجت لها. وهذه هي الطريقة ، فموقع الصور متغير من كمبيوتر الى آخر ، واللابتوبات مافيها إلا \:C ، فكيف يمكن ان يعمل برنامجك عليه !! بينما لو كان عندك الجدول ذو الحقل الواحد ، فتستطيع لما تفتح البرنامج ، ان يفحص وجود هذا المسار ، فإذا ما موجود المسار ، فتفتح له نافذة يختار مكان وجود المسار الجديد ، ويتم حفظ هذا المسار الجديد في هذا الحقل. المكان الآخر الذي تقدر تخلي فيها القيمة ، وتقدر تتحكم فيها برمجيا ، هو في اعدادات الحقل في tag . جعفر
  20. وعليكم السلام 🙂 هذا لأن النموذج الجدولي لا تستطيع عمل رأس ولا ذيل له ، ولا تستطيع اضافة زر او اي كائن آخر فيه ، هذه امكانياته 🙂 في حين ، انت تضع امر الجمع في ذيل النموذج: =sum([myCash]) جعفر
  21. شوف اذا هذا صحيح 🙂 للأسف ، الكلمات العربية قلبت الكود ، فما ممكن نقرأه بالطريقة الصحيحة !! . . جعفر 1105.Database2 - Copy.accdb.zip
  22. وعليكم السلام 🙂 يا ريت تخبرنا كيف تم الحل ، علشان يستفيد منها بقية الاعضاء 🙂 جعفر
  23. اخوي خالد اعطاك كود طويل ، خليني اعطيك كود اقصر 🙂 =[n1] & [n2] & [n3] & [n4] & [n5] & [n6] اذن يصبح الكود اعلاه: ="0" & [n1] & [n2] & [n3] & [n4] & [n5] & [n6] & "0" جعفر
  24. اذا تم الحصول على رقم تسلسل ، ثم بعدها تم الانتقال الى سجل جديد (يعني الامرين بعد بعض) ، فهذا يحفظ السجل السابق ، ولا يتحقق التكرار 🙂
  25. نعم ، الكل سيحصل على نفس الرقم المكرر ، ولتلافي هذا ، يجب حفظ السجل بعد عملية اخذ الرقم التالي مباشرة ، مثلا: me.ID=Nz(DMax("[id]";"monsrf";"Month([c_date])=Month(date())"))+1 docmd.runcommand accmdsaverecord . بهذه الطريقة ، سيكون هناك فاصل زمني بين نقر زر كل مستخدم ، حتى ولو بجزء من الثانية ، والبرنامج تلقائيا سيعطي الارقام بدون تكرار 🙂 جعفر
×
×
  • اضف...

Important Information