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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. وعليكم السلام 🙂 الظاهر ان الحقل من نوع مذكرة في احد الجداول ، ومن نوع نص في الحقل اللي في الصورة اعلاه ، لذلك فهو يأخذ 255 حرف فقط !! جعفر
  2. وعليكم السلام 🙂 حياك الله 🙂 نعم ، وزيادة ، والطريقة هي السعي لقضاء حاجة اخوانك ، وخصوصا اللي في المنتدى 🙂 اما بالنسبة لي انا ، فكما يقول الله عز وجل: وَمَا أُوتِيتُم مِّنَ الْعِلْمِ إِلَّا قَلِيلًا جعفر
  3. اخي الفاضل الدكتور اللي يقدر يوصف لك العلاج عن بُعد ، وبمجرد انك تخبره انك مريض وبس ،فهذا عملة نادرة 🙂 اما انا فلا. جعفر
  4. تفضل 🙂 اضفت معيار جديد: Me.NewRecord And Private Sub Form_BeforeUpdate(Cancel As Integer) If Me.NewRecord And DCount("*", "الزبائن", "[customer]='" & Me.txtName & "'") > 0 Then MsgBox "هذا الاسم موجود بالفعل", vbCritical, "التكرار ممنوع" Me.Undo Cancel = True End If End Sub . بس اخي عبداللطيف ، الافضل ان تضع الكود قبل تحديث حقل الاسم وليس قبل تحديث النموذج 🙂 جعفر
  5. تفضل 🙂 Dim rst As dao.Recordset dim myWhere as string Set rst = Form.RecordsetClone myWhere = "ID=" & [Text1] myWhere = myWhere & " And Code=" & [Text2] myWhere = myWhere & " And Age=" & [Text3] rst.FindFirst myWhere If Not rst.EOF Then Bookmark = rst.Bookmark . شوف هذا الرابط لبقية انواع الحقول من نص ، وتاريخ جعفر
  6. هذا كان طلبك في مشاركتك الاولى !! ورجاء ، استعمل الخط العادي ، لأننا لما نستعمل الهاتف المحمول لقراءة المشاركات ، فالخط الكبير يملئ الشاشة 😞 رجاء اخبرنا بالتفصيل عن اللي تريده، وبمثال 🙂 جعفر
  7. ايش رأيك بهذه الطريقة: . نختار لكل قاعة ، رجال و اناث ، او رجال فقط ، او اناث فقط ، و لا نستعمل القاعة التي لا يوجد فيها اختيار ؟ ورجاء ، اذا في اي تغيير آخر ، اخبرني من الآن ، لأني على سفر قريبا جدا !! جعفر
  8. وعليكم السلام 🙂 اهلا وسهلا بك في المنتدى 🙂 في المرات القادمة، رجاء وضع سؤال واحد لكل موضوع، حتى تحصل على فرصة اكبر للحل 🙂 جعفر
  9. يجب ازالة علامة الاستفهام الموجودة في الكلمات باللون الارزق
  10. الحمدلله 🙂 بالنسبة الى العرض ، مثل ما اخبرتك، حاليا ما عندك خيار إلا ان تكون جميع اعمدة التواريخ بنفس العرض ، والعرض يتم التحكم فيه من الكود ، من المتغير W (كما في الصورة ادناه) ، كان العرض نصف بوصة ، والان عملته بوصه . والتقرير ، يجب ان نجعل الحقول قابلة للنمو/للإرتفاع (ليست قابلة لإحتواء البيانات)، يجب تغيير اعدادات القسم، بحيث يقبل النمو . و نختار جميع الحقول ، وكذلك نجعلها قابله للنمو . والنتيجة . طبعا تستطيع تغيير مكان الحقول، بسحبها الى المكان الصحيح، وتغيير تنسيق اتجاه الخط من اليمين الى اليسار. ولكن انتبه ، يجب ان يكون حجم الورقة عندك كبير ، حتى لا تطبع اجزاء من الصفحة على الصفحة التالية 😞 جعفر
  11. العفو ، بس كنت مشغول حبتين 🙂 بسبب تنسيق التاريخ في كمبيوترك، عندك هذا الخلل ، جرب المرفق لوسمحت ، فانا استعنت بكود التاريخ من هنا : . والكود اصبح: Private Sub Report_Open(Cancel As Integer) Dim ctrl As Control Dim A As Integer Dim Empty_Cells As Integer Dim Full_Cells As Integer Dim W As Integer Dim myWhere As String Dim rpt_width As Integer Dim Full_Date As Date Dim D As Integer Dim Y As Integer Dim M As Integer W = 1440 / 2 'field width Empty_Cells = 0 Full_Cells = 1 'the name rpt_width = 0 Y = Forms!tqrer!iYear 'year M = Forms!tqrer!iMonth 'month For Each ctrl In Me.Controls 'is this a Date field in the Report If ctrl.ControlType = acTextBox And IsNumeric(Mid(ctrl.Name, 5)) Then D = Mid(ctrl.Name, 5) Full_Date = DateSerial(Y, M, D) 'the field Names from the Crosstab query 'check if this field exists int the table 'myWhere = "[zeiara_date]=#" & Full_Date & "#" myWhere = "[zeiara_date]=" & DateFormat(Full_Date) 'myWhere = myWhere & Chr(32) & " And [zeiara_date] Between Date_1 and Date_2" A = DCount("*", "zeara", myWhere) End If If A = 0 And ctrl.ControlType = acTextBox And Left(ctrl.Name, 4) = "txt_" Then 'field dose not exist Me("txt_" & D).Width = 0 'trim field size to Zero Me("txt_" & D).Visible = False 'make the field invisible ctrl.ControlSource = "" 'remove the Control Source Me("lbl_" & D).Width = 0 'trim label size to Zero Me("lbl_" & D).Visible = False 'make the label invisible Empty_Cells = Empty_Cells + 1 Debug.Print "Off " & ctrl.Name & vbTab & "D:" & D & vbTab & "Full:" & Full_Date & vbTab & "A:" & A ElseIf ctrl.ControlType = acTextBox And Left(ctrl.Name, 4) = "txt_" Then 'field exists Me("txt_" & D).Width = 1 * W 'set the field width Me("txt_" & D).Visible = True 'make the field visible ctrl.ControlSource = Full_Date Me("lbl_" & D).Width = 1 * W 'set the label width Me("lbl_" & D).Visible = True 'make the label visible Me("lbl_" & D).Caption = D & "/" & M 'give the label, a caption Full_Cells = Full_Cells + 1 rpt_width = rpt_width + ctrl.Width 'add the width Debug.Print "ON " & ctrl.Name & vbTab & "D:" & D & vbTab & "Full:" & Full_Date & vbTab & "A:" & A End If Next Me.Width = rpt_width + Me("mogh_name").Width 'the final Report width End Sub . جعفر 1001.rpt_Monthly_Crosstab.accdb.zip
  12. الظاهر انك ما نسخت الكود كاملا ، نسيت شيء منه 🙂 الف مبروك على هذه النسخة، ونطلب منك السر في كيفية الحصول عليها، فلم اسمع من احد انه حصل عليها الى الآن 🙂 اخوي ابو ياسين 🙂 للوصول الى مرحلة الاحتراف، فيجب ان لا تستعمل هذه الجملة إلا نادرا ، ويجب اصطياد الخطأ ، والتعامل معاه فقط ، فهذه الجملة ما بتخلي البرنامج يعطيك ايش الاخطاء اللي فيه 😞 هذه الروابط بتفيدك : و و . وانت المنقذ 🙂 جعفر
  13. انا انزلت المرفق من الرابط اللي في مشاركتك الاولى ، وتم الربط بشكل صحيح 🙂 لوسمحت ترفق صورة من رسالة الخطأ، ومكان توقف الكود باللون الاصفر
  14. عفوا ، يجب تغيير الصفر الى واحد ، الكود الصح هو Private Sub Sub_AfterUpdate() Me.LETTERS = Me.SUB.Column(1) End Sub جعفر
  15. تفضل ، هذا الرابط به الطريقة الصحيحة 🙂 . جعفر
  16. تفضل ، هذا الرابط به الطريقة المطلوبة 🙂 . جعفر
  17. وعليكم السلام اخي احمد 🙂 اهلا وسهلا بك في المنتدى 🙂 رجاء مراعاة شروط المنتدى قبل عمل موضوع جديد: قواعد المشاركة فى الموقع 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف تم تعديل العنوان 🙂 جعفر
  18. السلام عليكم اخي ريباز 🙂 في الواقع ما كنت اعتقد بأن الموضوع يأخذ كل هذا الوقت ، ولكن ما شاء الله فعل ، والحمدلله 🙂 1. الجداول . tbl_Teachers : وهنا نُدخل لكل مدرس/ملاحظ رقمه Teacher_ID ، ورقم المدرسة SID ، ونوع الجنس regaz (ويمكنك حذف الحقل Distributed) ، tbl_Allowed : وهنا نُدخل رقم المدرسة SID ، والقاعات التي يُسمح لمدرسيها ان يراقبوها Allowed_Hall ، tbl_Distributed : وهنا نرى نتائج التوزيع. الاستعلامات: هذه هي الاستعلامات التي تقوم بالعمل ، ورجاء عدم التعديل عليها qry_D_Allowed_Teachers_Halls : من هنا نعرف اي مدرس مسموح له مراقبة اي مدرسة qry_D_Selection : ويقوم الكود بالاعتماد على هذا الاستعلام لإختيار المدرسين ، عشوائيا qry_D_Halls : ومنه نعرف القاعات المطلوب لها ملاحظين (رجاء حذف المعيار الموجود حاليا) qry_D_SID : ومن هنا نختار المدرسة ، عشوائيا . طريقة العمل: افتح النموذج frm_Distribute ، ثم انقر على الزر Distribute (الحقول باللون البرتقالي يمكنك ان تخفيها) ، ويجب ان تحذف بيانات الجدول tbl_Distributed قبل ان تبدأ بإختيار جديد (البرنامج سيسألك) . اذا تم التوزيع بدون اخطاء ، ستحصل على هذه الرسالة . وافتح جدول tbl_Distributed لرؤية الاختيارات العشوائية . اما اذا حصلت على رسالة خطأ مثل هذه . فهذا معناه انه وحسب البيانات اللي في الرسالة (وهي نفسها اللي في النموذج باللون البرتقالي) ، فالاستعلام (شوف اسم الاستعلام) لم يلقى اي سجلات لهذا الاختيار ، وقد تم وقف عمل البرنامج!! وعليه ، يجب ان تعدل في البيانات . يعني مثلا ، لو تحذف بيانات الجدول tbl_Distributed ، ثم تعمل الاختيار عن طريق النموذج ، سترى هذا الخطا (وهذا اللي حصل لي) ، ومن بيانات الرساله عرفت ان المدرسة 5 ، مدرسات إناث ، للقاعة 113 ، لا يوجد احد!! عليه، اذهب الى tbl_Teachers وتأكد من هذا ، ثم اذهب الى الاسم الاخير jjjj ، وغيره من ذكر الى انثى ، ثم ابدأ من الاختيار جديد ، ولن ترى الرسالة 🙂 وهذا هو الكود الذي يقوم بالعمل ، وقد وضعت فيه الملاحظات : Private Sub cmd_Distribute_Click() On Error GoTo err_cmd_Distribute_Click ' If Len(Me.Distribution_ID & "") = 0 Then ' ' MsgBox "رجاء ادخال رقم التوزيع" ' Me.Distribution_ID.SetFocus ' Exit Sub ' ElseIf Len(Me.Distribution_ID & "") = 0 Then ' ' MsgBox "رجاء ادخال تاريخ التوزيع" ' Me.Distribution_Date.SetFocus ' Exit Sub ' End If If DCount("*", "tbl_Distributed") > 0 Then Dim Msg, Style, Title, Response Msg = "هناك بيانات في الجدول، هل تريد حذفها" & vbCrLf & _ "لا يمكن اضافة بيانات جديدة على بيانات سابقة" Style = vbYesNo + vbCritical + vbDefaultButton2 Title = "الجدول tbl_Distributed به بيانات" Response = MsgBox(Msg, Style, Title) If Response = vbYes Then DoCmd.SetWarnings False DoCmd.RunSQL ("Delete * From tbl_Distributed") DoCmd.SetWarnings True Else MsgBox "لم يتم حذف البيانات، ولا عمل اختيارات جديدة" Exit Sub End If End If Dim i As Integer Dim j As Integer Dim How_Many_Instructors As Integer Dim RND_SID As Integer Dim RND_Selection As Integer Dim rs As Integer Dim Which_Regaz As Integer Dim rstD As DAO.Recordset Dim rstH As DAO.Recordset Dim rstSID As DAO.Recordset Dim rstSelection As DAO.Recordset Dim RC_rstH As Integer Dim RC_rstSID As Integer Dim RC_rstSelection As Integer Dim arrSID As Variant Dim arrrstSelection As Variant Dim strSQL As String 'rstD = tbl_Distributed 'rstH = qry_D_Halls 'rstSID = qry_D_SID 'rstSelection = qry_D_Selection rs = 1 strSQL = "Select * From tbl_Distributed" Set rstD = CurrentDb.OpenRecordset(strSQL) rs = 2 strSQL = "Select * From qry_D_Halls" Set rstH = CurrentDb.OpenRecordset(strSQL) 'load the Recordset into memory, and get its number of Records rstH.MoveLast: rstH.MoveFirst: RC_rstH = rstH.RecordCount 'number of schools How_Many_Instructors = 6 / 2 Me.srch_Regaz = 1 'Hall Name For i = 1 To RC_rstH Me.srch_Distribution_Hall = rstH!Allowed_Hall 'Loop through the schools, 3 schools For j = 1 To How_Many_Instructors rs = 3 'info for error 3061 strSQL = "Select * From qry_D_SID Order By SID" 'Recordset SQL Set rstSID = CurrentDb.OpenRecordset(strSQL) 'Get the Remaining SIDs rstSID.MoveLast: rstSID.MoveFirst: RC_rstSID = rstSID.RecordCount 'Load into memory, and Count Records arrSID = rstSID.GetRows(RC_rstSID) 'convert Recordset to array, Min value = arrSID(0, 0) , Max = (arrSID(0, RC_rstSID - 1) Select_SID: 'we give the lowest and highest numbers to get Random Randomize RND_SID = Int((arrSID(0, RC_rstSID - 1) - arrSID(0, 0) + 1) * Rnd + arrSID(0, 0)) 'get a random number between Min & Max Me.srch_SID = RND_SID rstSID.FindFirst "[SID]=" & RND_SID 'but sometimes this number dose not exist, so get another Random If rstSID.NoMatch Then GoTo Select_SID 'SID is good, move on Which_Regaz = 0 Next_Regaz: 'male / female swithing If Me.srch_Regaz = 1 Then Me.srch_Regaz = 2 Else Me.srch_Regaz = 1 End If Which_Regaz = Which_Regaz + 1 'now we have all the data required to pick a teacher rs = 4 strSQL = "Select * From qry_D_Selection Order By Teacher_ID" Set rstSelection = CurrentDb.OpenRecordset(strSQL) rstSelection.MoveLast: rstSelection.MoveFirst: RC_rstSelection = rstSelection.RecordCount arrrstSelection = rstSelection.GetRows(RC_rstSelection) Select_Teacher: Randomize RND_Selection = Int((arrrstSelection(0, RC_rstSelection - 1) - arrrstSelection(0, 0) + 1) * Rnd + arrrstSelection(0, 0)) 'get a random number between Min & Max rstSelection.FindFirst "[Teacher_ID]=" & RND_Selection 'but sometimes this number dose not exist, so get another Random If rstSelection.NoMatch Then GoTo Select_SID 'Teacher_ID is good, make a new Record in tbl_Distributed and save info rstD.AddNew 'rstD!Distribution_ID = Me.Distribution_ID 'rstD!Distribution_Date = Me.Distribution_Date rstD!Teacher_ID = RND_Selection rstD!SID = RND_SID rstD!Distributed_Hall = rstH!Allowed_Hall rstD.Update If Which_Regaz = 1 Then GoTo Next_Regaz Next j rstH.MoveNext Next i MsgBox "Done" Exit_cmd_Distribute_Click: rstD.Close: Set rstD = Nothing rstH.Close: Set rstH = Nothing rstSID.Close: Set rstSID = Nothing rstSelection.Close: Set rstSelection = Nothing Exit Sub err_cmd_Distribute_Click: If Err.Number = 3061 Then 'too few parameters, expected xx '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.CreateQueryDef("NewQueryDef", strSQL) For Each prm In qdf.Parameters prm.Value = Eval(prm.Name) Next prm If rs = 1 Then Set rstD = qdf.OpenRecordset(dbOpenDynaset) ElseIf rs = 2 Then Set rstH = qdf.OpenRecordset(dbOpenDynaset) ElseIf rs = 3 Then Set rstSID = qdf.OpenRecordset(dbOpenDynaset) ElseIf rs = 4 Then Set rstSelection = qdf.OpenRecordset(dbOpenDynaset) End If DoCmd.DeleteObject acQuery, "NewQueryDef" Resume Next ElseIf Err.Number = 3021 Then 'No current Record If rs = 1 Then MsgBox "No Records in tbl_Distributed" ElseIf rs = 2 Then MsgBox "No Records in qry_D_Halls" ElseIf rs = 3 Then MsgBox "Hall Number=" & Me.srch_Distribution_Hall & vbCrLf & _ "No Records in qry_D_SID" ElseIf rs = 4 Then MsgBox "Hall Number=" & Me.srch_Distribution_Hall & vbCrLf & _ "SID=" & Me.srch_SID & vbCrLf & _ "Regaz=" & Me.srch_Regaz & vbCrLf & _ "No Records in qry_D_Selection" End If Resume Exit_cmd_Distribute_Click Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub جعفر 1008.2021.zip
  19. لا وانت الصادق ، اخونا العود ابو خليل يستعمل هذا الكود 🙂 بينما انا استخدم الكود اللي في هذا الملف 🙂 https://www.jstreettech.com/files/JStreetAccessRelinker2.zip جعفر
  20. السلام عليكم اخي عبد اللطيف 🙂 شكرا لك على مجهودك 🙂 ملاحظة حول هذا الموضوع ، فالمطلوب اختيار اللغة العربية ، بغض النظر عن الدولة ، لأن اللغة العربية هي المطلوبة لعمل Unicode في الرقم 2 من صورتك الثانية 🙂 جعفر
  21. وعليكم السلام 🙂 واهلا وسهلا بك في المنتدى 🙂 عملت بعض التعديلات على الجداول ، وحولت الحقول الى ارقام بدل النص، تفضل: Private Sub student_Class_AfterUpdate() 'check if the Student number field exists, if it dose, exit If Len(Me.student_Number & "") > 0 Then Exit Sub Me.student_Number = Nz(DMax("[Student_Number]", "students", "[student_Class]= " & Me.student_Class), Me.student_Class * 10000) + 1 End Sub جعفر 1012.autoNumber.accdb.zip
  22. تفضل 🙂 . . . . . . جعفر 1011_test.accdb.zip
  23. السلام عليكم 🙂 رجاء مراعاة كتابة عنوان صحيح للموضوع ، في المرة القادمة 🙂 قواعد المشاركة فى الموقع 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف جعفر
  24. وعليكم السلام اخي sayed sergo قوانين المنتدى لا تسمح بهكذا موضوع 🙂 يُقفل الموضوع. جعفر
×
×
  • اضف...

Important Information