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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. وعليكم السلام 🙂 ياريت تعطينا مثال من برنامجك حتى نقدر تتبعه 🙂 ثم النموذجين 1 و 2 مقفلان ، فلم استطع ان اختار شيئا منهم !! جعفر
  2. وعليكم السلام 🙂 اختار احد الخيارات ، انت الآن خلطت بينهم 🙂 . جعفر
  3. وعليكم السلام 🙂 هناك العديد من المواضيع في المنتدى بهذا الخصوص ، ويمكنك ان تخبرنا الطريق التي اتبعتها في برنامجك ، لتحصل على آراء الاعضاء 🙂 الحماية ليست من تخصصي (يعني 99% من برامجي ليست فيها حماية) ، لهذا السبب فأنا أفضل ان يساعدنا بقية الاعضاء ذوي الخبرة 🙂 جعفر
  4. وعليكم السلام 🙂 تم حذف هذه الميزة من اكسس 2013 ، ولكن هناك اداة من مايكروسوفت لتقوم بنفس العمل اسمها SSMA ، ويمكنك انزالها من هذا الرابط : https://www.microsoft.com/en-us/download/confirmation.aspx?id=54255 جعفر
  5. شكرا شباب 🙂 كنت ابحث عن هذا الموضوع ، والحمدلله لقيته ، وفيه نصائح عن الامور التي تحتاجها لأي برنامج ، وكان لأخوي @kha9009lid السهم الاكبر من هذه النصائح (شكرا اخوي خالد 🙂) : . جعفر
  6. السلام عليكم 🙂 ملاحظاتي: 1. يجب ان يكون هذا الحقل هكذا ، وعادة يكون المفتاح الاساس ، ولكن لأن عندك مفتاح اساس آخر ، فمافي مشكلة: . 2. وجميع الحقول لا تستخدم خاصية Lookup الجدول : . 3. تسمية الجداول/النماذج/الاستعلامات/التقارير تبدأ بحرف/حروف تميزها عن بقية الكائنات (ما يكون عندك جدول واستعلام ونموذج وتقرير بنفس الاسم ، Type1 ، مثلا) ، وانما يكون tbl_Type1 و qry_Type1 ..) ، ونجعل الحقل مفهرس لأن عنده علاقة مع جدول آخر (انظر الصورة رقم 11) ، ويجب ان يكون في جدول الحقلين Auto_ID و Auto_Date (المسمى غير مهم ، وانما الاعدادات مهمة) ، فبالاضافة الى فائدة Auto_ID لتسريع جلب بيانات الجدول ، و Auto_Date لمعرفة وقت عمل السجل ، فإن هذين الحقلين هما الاساس في تحويل جدولك الى SQL Server لاحقا اذا شئت : . 4. مصدر سجلات الحقل من جدوله tbl_Type1 ، بينما مصدر بيانات السجل من جدول MZ_TAB : . 5. هكذا نرى في النموذج الاسم الذي نريد المستخدم ان يراه : . 6. . 7. بعد ان يُدخل المستخدم قيمة للحقل nom ، يمكن استخدام الدوال لتحديث الحقلين الآخرين في النموذج : . 8. وبما انن نحدّث الحقلين تلقائيا ، فنقفلهم حتى لا يعبث بهما المستخدم : . 9. نوع القيمة المسترجعة من الدالة ، يجب ان تطابق تلك التي في الجدول : . 10. تجنب استخدان الكلمات العربية في اي من كائنات برنامجك ، فمن السهل التغلب على هذه النقطة من البداية ، ولكن اذا لم تفعل هذا ، فستقلب كف على كف : . 11. العلاقة بين الجدول الجديد والجدول/الجداول التي تكون فيها قيمة TYPE1 ، اما العلاقة التي في الاعلى ، فمالك شغل في اولاد الجيران وعملهم 😁 . جعفر 1350.1.MZtab08.accdb.zip
  7. ونصيحة ، ابدا لا تستخدم هذه الخاصية في الجدول : . وانما اعمل جدول خاص بقيم هذا الحقل ، ثم في الاستعلام تربط هذا الحقل بحقل الجدول الآخر. لاحظ ان جوابي في المشاركة السابقة لم يتطرق لهذا الحقل ، لأنه لا يوجد طريقة لمعرفة استخدامك لهذه الخاصية إلا بفتح الجدول في وضع التصميم ومعرفة القيم !! عليه ، الدوال يجب تغييرها الى: Function TR_Check(str_N As String) As Boolean If str_N = "^" Or str_N = "#^" Or str_N = "@^" Then TR_Check = True End If End Function Function Type_Check(str_N As String) As Long If IsNumeric(str_N) Or str_N = Chr(34) & "^" & Chr(34) Or str_N = Chr(34) & "*" & Chr(34) Then Type_Check = 1 ElseIf str_N = "@^" Or str_N = "@" Then Type_Check = 2 ElseIf str_N = "^" Then Type_Check = 3 ElseIf str_N = "#^" Or str_N = "#" Then Type_Check = 4 End If End Function جعفر
  8. وعليكم السلام 🙂 طبعا انت تعرف انه من الخطأ ان تستعمل كلمات عربية لأي من الكائنات في الاكسس ، سوء اسماء جداول او استعلامات او نماذج او تقارير او ماكرو ، واسماء الحقول والازرار ووووو ، وطبعا في الكود 🙂 جرب المرفق في هذه المشاركة ، قد يفيدك: عندما يعطي برنامج الاكسس اخطاء - النسخة رقم 4 + عمل نسخ احتياطية - قسم الأكسيس Access - أوفيسنا (officena.net) جعفر
  9. السلام عليكم 🙂 هذه مشاركتي ، وانا لا احب ان اجعل المعادلات تتزاحم في الاستعلام ، ويُصعب تعديلها لاحقا 🙂 في الاستعلام ، ننادي دالة لقيمة TR ، ودالة اخرى لقيمة Type ، وبما ان القيمتين تعتمدان على قيمة الحقل nom ، فنرسل قيمته الى الدوال : . والنتيجة : . والدوال: Function TR_Check(str_N As String) As Boolean If str_N = "^" Or str_N = "#^" Or str_N = "@^" Then TR_Check = True End If End Function Function Type_Check(str_N As String) As String If IsNumeric(str_N) Or str_N = Chr(34) & "^" & Chr(34) Or str_N = Chr(34) & "*" & Chr(34) Then Type_Check = "[1 (مسند)]" ElseIf str_N = "@^" Or str_N = "@" Then Type_Check = "[2 (موقوف)]" ElseIf str_N = "^" Then Type_Check = "[3 (طريق)]" ElseIf str_N = "#^" Or str_N = "#" Then Type_Check = "[4 (زائد)]" End If End Function . ويمكنك ان تأخذ معادلات الاستعلام ، وتضعها في استعلام تحديث 🙂 جعفر 1350.MZtab.accdb.zip
  10. وهذا للتأكيد ، اذا بالفعل كنا في نهاية السجلات (EOF) ، اذن اذهب الى بداية السجلات : 'Lsql.MoveFirst If Lsql.EOF Then Lsql.MoveFirst جعفر
  11. جال هذا الخطأ في خاطري البارحة بعد ان اغلقت الكمبيوتر ، ونسيته اليوم 😁 اخبرك المشكلة ، والحل: لما تفتح النموذج ، وتشغل الكود ، احنا قلنا للكود: 1. اقرأ البيانات الى نهايتها (EOF (End of File ، 2. بعد ان يقرأ السجل ، ينتقل الى السجل التالي MoveNext ، الى ان يصل الى نهاية البيانات (السجل الاخير) ، ويتم الحاق البيانات ، الآ لما ننقر على زر الحفظ مرة اخرى : 1. يريد ان يقرأ البيانات الى نهايتها ، ولكنه اصلا وصل الى نهايتها من المرة السابقة ، فيتخطى عملية الحفظ ، ولا يحفظ شيء !! اذن ، يجب ان (نضيف هذا السطر) ونخبر الكود: 3. بأن قبل البدأ في عملية الالحاق ، اذهب الى بداية البيانات (السجلات) ، ثم قم بتطبيق الكود 🙂 . جعفر
  12. هذا ليس جوابا على سؤالك: فكرة docmd.gotoRecord movenext ثقيلة على البرنامج ، ورجاء تجرب التالي: اعمل نموذج مستمر لجدول فيه 100 او 1000 سجل ، ثم استعمل حلقة For Next وادخل فيها docmd.gotoRecord movenext ، ستجد ان الاكسس توقف عن العمل (طبعا هو شغال ، بس يبين انه مشغول جدا) ، ولا تحصل على رسالى Not Responding اعلى البرنامج !! ومثل ما يقول المثل العماني : الباب اللي يجيك منه ريح ، سدّه واستريح 🙂 جعفر
  13. تفضل يا سيدي 🙂 With sql .AddNew !PONumber = Me.T7 !MaterialCode = Lsql!code !MaterialName = Lsql!Item !ProductionDate = Me.T6 !Shift = "none" !cons = Lsql!cons !AdditionPercent = Lsql!Remarks !MaterialType = Lsql!Type !OrderQty = Nz(Lsql!cons, 0) * Nz(Me.T3, 0) .Update End With جعفر
  14. هل الحقل PONumber او T2 موجود في النموذج المستمر؟ واذا موجود ، هل قيمته تتغير ، اذا الجواب ان قيمته لا تتغير ، اكتب السطر هكذا : !PONumber = me.T7 وبغض النظر عن الحقل اعلاه ، خلينا نشوف اذا الكود شغال صح اصلا ، وعلشان الحبايب ، هذه الحقول اللي فيها مشكلة ، اوقف عمل سطرها مؤقتا 🙂
  15. لا T1 مو صحيح ، وانما الصحيح هو item ، يعني جرب: !MaterialName = Lsql!Item
  16. لا يمكنك حذف هذا ، فهو الاساس !! مو اسم الحقل ، وانما اسم مصدر بيانات الحقل
  17. جرب هاي ، اخذتهم من الاستعلام Private Sub Command204_Click() DoCmd.OpenForm "Robot" DoCmd.GoToRecord , , acNewRec Forms![Robot]![PONumber] = Me.T7 Forms![Robot]![ProductCode] = Me.t0 Forms![Robot]![OrderQty] = Me.T3 Forms![Robot]![zdate] = Me.T6 Forms![Robot]![Mold] = Me.Mold Forms![Robot]![Machine] = Me.Machine Forms![Robot]![Status] = Me.Status Forms![Robot]![ProductBomNum] = Me.Bom DoCmd.Close Dim sql As DAO.Recordset Dim Lsql As DAO.Recordset Set sql = CurrentDb.OpenRecordset("TblPoMaterials", dbOpenDynaset) Set Lsql = Me.RecordsetClone 'DoCmd.SetWarnings False 'DoCmd.GoToRecord , , acFirst 'ÈÏÇíÉ ÇáãÔßáÉ ãä åÐÇ ÇáÓØÑ 'For m = 1 To T8 Do Until Lsql.EOF With sql .AddNew !PONumber = Lsql!T7 !MaterialCode = Lsql!Code1 !MaterialName = Lsql!T1 !ProductionDate = Lsql!T6 !Shift = "none" !cons = Lsql!T2 !AdditionPercent = Lsql!Text324 !MaterialType = Lsql!Text300 !OrderQty = Lsql!T3 .Update End With Lsql.MoveNext Loop 'DoCmd.GoToRecord , , acNext sql.Close: Set sql = Nothing Lsql.Close: Set Lsql = Nothing 'Next m MsgBox "Done", vbInformation, "Saved successfully" 'DoCmd.SetWarnings True t0 = "" T6 = "" T7 = "" T3 = "" T10 = "" T10 = "" Status = "" BomCombo = "" Me.ComboMachine = "" Me.ComboMold = "" Mold = "" Machine = "" T216 = "" Me.Requery
  18. الاسماء اللي على يمين علامة = ، رجاء تأخذ اسمها الصحيح من النموذج المستمر
  19. وعليكم السلام 🙂 ولو اننا نحاول نضرب هدف في الظلام ، ولكن الله يسهل 🙂 جرب هذا التعديل في الكود الاصل: Private Sub Command204_Click() DoCmd.OpenForm "Robot" DoCmd.GoToRecord , , acNewRec Forms![Robot]![PONumber] = Me.T7 Forms![Robot]![ProductCode] = Me.t0 Forms![Robot]![OrderQty] = Me.T3 Forms![Robot]![zdate] = Me.T6 Forms![Robot]![Mold] = Me.Mold Forms![Robot]![Machine] = Me.Machine Forms![Robot]![Status] = Me.Status Forms![Robot]![ProductBomNum] = Me.Bom DoCmd.Close Dim sql As DAO.Recordset Dim Lsql As DAO.Recordset Set sql = CurrentDb.OpenRecordset("TblPoMaterials", dbOpenDynaset) Set Lsql = Me.RecordsetClone 'DoCmd.SetWarnings False 'DoCmd.GoToRecord , , acFirst 'بداية المشكلة من هذا السطر 'For m = 1 To T8 Do Until Lsql.EOF With sql .AddNew !PONumber = Lsql!PONumber !MaterialCode = Lsql!MaterialCode !MaterialName = Lsql!MaterialName !ProductionDate = Lsql!ProductionDate !Shift = "none" !cons = Lsql!cons !AdditionPercent = Lsql!Text324 !MaterialType = Lsql!Text300 !OrderQty = Lsql!OrderQty .Update End With Lsql.MoveNext Loop 'DoCmd.GoToRecord , , acNext sql.Close: Set sql = Nothing Lsql.Close: Set Lsql = Nothing 'Next m MsgBox "Done", vbInformation, "Saved successfully" 'DoCmd.SetWarnings True t0 = "" T6 = "" T7 = "" T3 = "" T10 = "" T10 = "" Status = "" BomCombo = "" Me.ComboMachine = "" Me.ComboMold = "" Mold = "" Machine = "" T216 = "" Me.Requery واذا حصلت على نسختين من السجل الاول ، فممكن حذف كل الاسطر قبل السطر Dim 🙂 جعفر
  20. شكرا اخوي خالد 🙂 هي نفس الطريقة التي اتبعها في برنامج ونفسها التي استعملتها ، ولكن من داخل الاكسس (استخدمت اسماء متغيرات من البرنامج) : . ويبقى السؤال طافيا ، لماذا !! للعلم ، حاولت تتبع هذه النقطة وفرأت المزيد من موقع مايكروسوفت وبالبحث ، واتضح بأنه في احد الحالات ، انزلت المايكروسوفت إضافة/تحديث في الاكسس في حقل تاريخ من نوع Extended ليماشي DateTime2 الذي في SQL Server ، وبعد ان حصل الكثير على نفس رسالة الخطأ "تحتاج الى نسخة احدث" ، قالت مايكروسوفت بأنها انزلت التحديث بدون تريث ، فلهذا ازالت هذا التحديث ، واصبحت البرامج تعمل بطريقة عادية. ولكن الملفت للنظر هو ، ان مايكروسوفت لم تعمل ملف تحديث للكمبيوترات ، وانما اشتغلت البرامج بطريقة صحيحة 😮!! ويا غافل لك الله 🙂 جعفر
  21. وعليكم السلام 🙂 عملت تغيير بسيط في الكود السابق: myTotal_Page_Number = 5 Do until myPage_Number = myTotal_Page_Number myPage_Number = myPage_Number + 1 Docmd.openreport" " acviewnormal Loop اذهب الى اي وحدة نمطية عندك ، واذا ما عندك ، اعمل واحدة ، واكتب التالي في اعلى الوحدة النمطية: Option Compare Database Option Explicit اكتب التالي تحت السطر او السطرين اعلاه public myPage_Number as integer public myTotal_Page_Number as integer وفي التقرير اعمل حقلين جدد لترقيم الصفحات: حقل رقم الصفحة التي يتم طباعتها الآن ، وفي مصدر بيانات الحقل اكتب: myPage_Number= حقل مجموع عدد الصفحات التي يتم طباعتها الآن ، وفي مصدر بيانات الحقل اكتب: myTotal_Page_Number= جعفر
  22. وعليكم السلام 🙂 من تجربتي ، خط Times New Roman وذلك لأنه لا يتغير بتغيّر الكمبيوتر ونوع النظام ، فيكون نفسه عند زبائنك 🙂 جعفر
  23. اخوي ابوعبدالله_1972 الله يشفيك ان شاء الله 🙂 العنوان ، مخالف ومناشدتك مساعدة عضو معين ، مخالف وسؤالك لأكثر من طلب ، مخالف فرجاء اقرأ قوانين المنتدى ، وافتح موضوع جديد تأخذ في الاعتبار النقاط اعلاه 🙂 يُغلق جعفر
×
×
  • اضف...

Important Information