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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. السلام عليكم اخي عبد الفتاح كلامك يكون صحيح ، اذا لم تكن هذه الفقرة في الموضوع: جعفر
  2. وعليكم السلام السبب الوحيد اللي يجي في بالي ، هو ان هناك كود في التقرير يعمل/عمل على تجميع الحقول هكذا ، وقمتي بحفظ التقرير ، فظل التصميم بهذه الطريقة!! ويمكنك ارفاق هذه الجزئية من برنامجك للنظر فيها. جعفر
  3. قمت بتعديل مشاركتي السابقة ، فبدل "فحفظ الصور" اصبح "فحفظ المرفقات سواء الصور/pdf" وهذه بعض المشاركات السابقة لي عن موضوع المرفقات ، ورجاء قراته بالكامل : . وطرق الاستغناء عنها بمجلد في الوندوز . جعفر
  4. السلام عليكم اخي وقبل ان تواصل العمل في برنامجك ، فحفظ اي انواع من المرفقات سواء الصور/pdf في البرنامج يُعتبر خطأ كبير وفادح ، وضرره اكثر بكثير من فوائده!! احفظ المرفقات في مجلدات داخل الوندوز ، وبالكود تقدر اظهارها في النماذج ، او ارفاقها بالايميل. جعفر
  5. وعليكم السلام وهذا مؤشر معمول في البيت ، يعني تقدر تغير فيه مثل ما تريد جعفر
  6. وعليكم السلام ضعي هذا الكود على زر: Dim strSQL As String Dim rst As DAO.Recordset Dim childrst As DAO.Recordset Dim db As DAO.Database Dim RC As Integer Dim i As Integer 'from https://stackoverflow.com/a/42239279 strSQL = "SELECT * FROM Table1 WHERE Not (Table1.image.FileData) Is Null;" Set db = CurrentDb Set rst = db.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges) If Not rst.BOF And Not rst.EOF Then rst.MoveFirst End If Do Until rst.EOF Set childrst = rst.Fields("image").Value childrst.MoveLast: childrst.MoveFirst RC = childrst.RecordCount For i = 1 To RC 'Debug.Print rst!ID & " > " & childrst.Fields("FileName") 'If childrst.Fields("FileName") = "11.jpg" Then childrst.Delete 'End If childrst.MoveNext Next i rst.MoveNext Loop . جعفر
  7. وعليكم السلام اخي حمدي مع اني اقرأ جميع اسئلتك ، ولكن لسبب ما ، لا اعرف الاجابة عليها السبب في حصولك على الخطأ هو عدم وجود قيمة للمتغير xMada (لاحظ ان نتيجتها False) ، فالاستعلام لا يحتوي على الحقل المطلوب ، فيظهر لك الخطأ: . وبعد عمل هذه التعديلات ، اتضح ان هناك اخطاء كثيرة في السطر: CurrentDb.Execute "UPDATE Ashgal SET " & xMada & "= '" & rstTeacher!المادة & " xFasl & " = " & rstTeacher!الفصل & " ' WHERE ((([اليوم])=" & randOFDays & "));" وعلشان اعرفها ، اضطررت ان افكك هذا السطر هكذا mySQL = "UPDATE Ashgal SET " & xMada mySQL = mySQL & " = '" & rstTeacher!المادة & "'" mySQL = mySQL & " ,Fasl" & nNumber & " = '" & rstTeacher!الفصل & "'" mySQL = mySQL & " WHERE [اليوم]=" & randOFDays Debug.Print mySQL CurrentDb.Execute (mySQL) 'DoCmd.RunSQL (mySQL) . وهذا السطر كان المعاون الاساسي لمعرفة المتغيرات Debug.Print mySQL انا لا ادري اذا كانت النتائج صحيحة ، ولكني اعرف بأن الاخطاء توقفت ، وانتهى الكود من العمل جعفر 930.‫‫تعديل.accdb.zip
  8. عملت بحث في المنتدى ، وهذا اول رابط وجدته جعفر
  9. وعليكم السلام آخر مرة اشتغلت على كود الاوتلوك كان قبل حوالي 10 سنوات ، ومنذ ذلك الوقت لم اشتغل على الاوتلوك!! في مجموعة طرق تسمح لك ترسل ايميل من الاكسس ، وهنا احد الطرق: https://www.devhut.net/2010/09/03/vba-outlook-automation/ ولكن ، الظاهر يجب ان تحفظ المرفقات في مجلد خارجي ، ومنها ترفقها للاوتلوك. آسف اني ما اقدر اساعد اكثر من هذا جعفر
  10. وعليكم السلام اخي محمد حقل الترقيم التلقائي هو للبرنامج ، وفهرسة السجلات ، وتوليد ارقام فريدة للسجلات ، ولكنه ليس للمبرمج. المبرمج يجب ان يعمل له الحقول التي يحتاج لها لبرمجته ، ولا مانع من الاستفادة من حقل الرقم التلقائي ، لذلك ، ليس مهما اي رقم هو رقمك التلقائي ، ومن اهميته ، فلا يسمح لك الاكسس تغييره ، واذا فقدت رقم تسلسل واستعملت الرقم الذي بعده ، فلا يمكنك استرجاع اي من الارقام المفقودة والتي وسط الارقام الاخرى ، مثلا ارقامك 1،3،4،6 ، فلا يمكنك استرجاع الارقام 2،5 ، اما اذا (خلينا نتابع المثال المرفق) ، الرقم الجديد الذي نحصل عليه هو 31 ، . 1. آخر رقم تم استعماله هو 23 ، بينما فقدنا جميع الارقام بعد الـ 23 ، فإذا اردنا البرنامج ان يبدأ الرقم التالي بالرقم 24 ، فعلينا عمل ضغط واصلاح لقاعدة البيانات ، 2. بينما اذا اردنا ان نبدأ الرقم التلقائي برقم غير 24 ، بالرقم 25 مثلا ، فنستطيع ان نستعمل الكود التالي: . والكود الذي يقوم بذلك هو: Private Sub cmd_Do_Click() If Len(Me.int_Start_2 & "") = 0 Then MsgBox "What is the initial number?" Me.int_Start_2.SetFocus Exit Sub End If biggest_Number = Nz(DMax("[Auto_ID]", "Data"), 0) If Me.int_Start_2 - 1 <= biggest_Number Then MsgBox "the biggest_Number in the table is :" & biggest_Number & vbCrLf & _ "Your initial number SHOULD be bigger than this number" Me.int_Start_2.SetFocus Exit Sub End If 'from http://www.fmsinc.com/microsoftaccess/AutoNumber%20Field/Creating.asp 'add the initial number mySQL = "INSERT INTO Data ( auto_ID )" mySQL = mySQL & " SELECT " & Me.int_Start_2 - 1 & " AS Expr1;" CurrentDb.Execute (mySQL) 'Delete the dummy number mySQL = "DELETE * FROM Data WHERE auto_ID=" & Me.int_Start_2 - 1 CurrentDb.Execute (mySQL) MsgBox "Now the NExt Auto_ID will be " & Me.int_Start_2 End Sub . ونحصل على النتيجة التالي: . جعفر 927.2.Access4.accdb.zip
  11. وعليكم السلام تفضل: 1. يجب تغيير نوع الحقل من نص الى مربع تحرير ComboBox ، 2. بما ان البيانات المطلوبة من الجدول tblFotrType ، ونريد بيانات حقلين ، حيث الرقم هو الحقل الاول (ولا نريد ان نراه ، فنجعل حجمه صفر) ، والحقل الثاني هو المطلوب رؤيته (واعطيناه حجم) ، . ويكون ارتباط الحقل الاول بالجدول . والنتيجة . جعفر 928.تنسيق.accdb.zip
  12. وعليكم السلام اخي ابو عمر تقريبا يمكننا عمل اي شيء بالاكسس ، ولكن ارجو ان تقتح موضوع جديد بهذه الخصوصية ، وترفق لنا مثال مفصل ومرفق بوضح المطلوب جعفر
  13. وعليكم السلام بدل هذا السطر Set rst = CurrentDb.OpenRecordset("Select * From Data") استعمل Set rst = CurrentDb.OpenRecordset("Select * From Data Order By [Name]") . جعفر
  14. وعليكم السلام اخي مصطفى واهلا وسهلا بك في المنتدى الرابط التالي سيفيدك جعفر
  15. الله يخليك ، اجلس واقرأ ، اخاف لا تطيح لما تعرف شو اللي عملته حذفت الحقل التالي: جعفر
  16. تفضل ، جرب هذا المرفق جعفر 918.5.‏‏‏‏برنامج المخــــــــــزون - - نسخة.mdb.zip
  17. الله يطول عمرك اخوي ابو زاهر انا كنت اريد برنامجك اللي فيه البيانات متكررة ، واريد مجموعة منها ، انا ما اريد ان ادخل البيانات ، وانما اريدك انت ان تدخل البيانات بالطريقة الصحيحة جعفر
  18. اها ، ما قرأت كل الكود الظاهر يجب ان تعمل connection للجداول قبل خطوة إضافة السجل ، لأن الكود اعلاه يغلق الاستصال بعد الكود ، فكل اللي تقوم فيه من بيانات وسجل سابق ولاحق ، هي موجودة في Recordset الذي جلبته من البيانات قبل اغلاق الاتصال. Ado فيه اتصال وقطع اتصال ، وهذا الذي استعملته انت ، بينما Dao مافيه قطع اتصال ، جعفر
  19. وعليكم السلام طبعا ما بيقبل الامر Docmd.gotorecord,,acnewrecord لأن النموذج عندك غير مضمن (اي غير مرتبط بجدول) يجب عليك إضافة سجل عن طريق Recordset مباشرة: adorec.addnew ..... إضافة بيانات الحقول في الجدول adorec!ID = 5 adorec!Name = "جعفر" ..... adorec.update . جعفر
  20. وعليكم السلام عمل استعلامات 4 ، كل استعلام بمعيار ، هو اسهل الطرق ، 2. هاي الاسهل ، عمل ملف اكسيل لكل استعلام: تعمل استعلامات لكل نوع من الشروط اللي ذكرتها اعلاه ، والكود التالي لعمل ملفين: DoCmd.OutputTo acOutputQuery, "Q1", acFormatXLS, "D:\Temp\File1.xls", False DoCmd.OutputTo acOutputQuery, "Q2", acFormatXLS, "D:\Temp\File2.xls", False او DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Q1", "D:\Temp\File1.xls", True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Q2", "D:\Temp\File2.xls", True . 1. اذا اردت ان ترسل الاستعلامات الاربع ، وتحفظ كل واحد في صفحة مستقلة ، فالبرنامج هذا يفيدك: . وتقدر برمجيا تدخل في كود البرنامج اعلاه ، وترسل الاربع استعلامات جعفر
  21. وعليكم السلام السطر الاخضر اللي فوقه يخبرك عن المكتبة اللي يجب اختيارها لعمل الكود جعفر
  22. وعليكم السلام لوسمحت ترفق لي قاعدة بياناتك اللي فيها بيانات ، علشان اقدر اشوفها جعفر
  23. وعليكم السلام تفضل ، جرب هذا التعديل: Private Sub cmd_Do_The_Changes_Click() 'make Reference to Microsoft DAO x.xx Object Library Dim rst As DAO.Recordset Dim biggest_Number As Long Dim i As Integer Dim j As Integer Dim RC As Integer Dim Multiply_by As String biggest_Number = Len(DMax("[ID]", "Data")) 'what number to multiply with Multiply_by = 1 For i = 1 To biggest_Number Multiply_by = Multiply_by & "0" Next i 'we have to do this in two steps: '1 based on the Biggest Number, lets multiply it by 10, so that No number id duplicated '2 then Seq based on the required Seq '1 Set rst = CurrentDb.OpenRecordset("Select * From Data") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC 'change the existing numbers to BIGGER NUMBERS rst.edit rst!ID = rst!ID * Val(Multiply_by) rst.Update rst.MoveNext Next i '2 rst.MoveFirst For i = 0 To RC - 1 'change the BIGGER NUMBERS to the new Seq rst.edit rst!ID = Me.int_Start + i rst.Update rst.MoveNext Next i rst.Close: Set rst = Nothing MsgBox "Done" End Sub جعفر 927.1.Access2.accdb.zip
  24. السلام عليكم اخوي ابو خليل قدمك كانت قدم خير على الموضوع ، من دخلت ، وإنحل الموضوع السلام عليكم اخوي ابو زاهر الحمدلله توصلنا الى حل عملت تعديل اضافي للبرنامج ، بحيث اضفت لك جميع الحالات من 11 الى 21 ، وعملت حقل بإسم Rsnf_Sum والذي يقوم بجمع هذه الحالات ، فرجاء تصحيح علامة الزائد من الناقص (لوسمحت اخوي ابو خليل تساعد في هذه الخطوة) : . وتم تعديل الاستعلام الاصل ليُظهر جميع النتائج ، وتعديل حقل Rsnf ليأخذ بيانات الجمع Rsnf_Sum من الاستعلام اعلاه + الرصيد المتبقي: . يجب عليك نقل هذين الاستعلامين الى برنامجك الرئيسي ، حتى يتم العمل وين المشكلة و وين الحل: لما يتم عرض اي موضوع في المنتدى ، فنحن ننظر في الموضوع حسب معطيات العضو ، وقد لا يكون الخطأ في المعطيات مباشرة ، وانما تكون المعطيات/الخطأ الظاهر مثل موضع الحمى ، بينما يكون مصدر وأصل الحمى مكان آخر جعفر 918.استدعاء الرصيد (2).mdb.zip
  25. وعليكم السلام اخوي ابو خليل نعم كلامك صحيح ، ولازم اسم الموضوع يتغير وهذه محاولة اخيرة مني لأبو زاهر ، واللي اريده يضيف بيانات اضافية للبرنامج ويجربة ، واذا ظلت المشكلة على ماهي عليه ، فيجب ان يفكر في بدائل جعفر 918.استدعاء الرصيد (2).mdb.zip
×
×
  • اضف...

Important Information