بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
-
Posts
10020 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
408
نوع المحتوي
التقويم
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
وعليكم السلام 🙂 هممم الكود اللي وضعة اخوي Barna عام ويمكن وضعه في اي نموذج ، ولكن ممكن نصغر الكود ، حسب قراءة من اي نموذج: اذا كانت القيمة الحقل n1 في النموذج a1 ، ونريد ارسالها الى الحقل n2 في النموذج a2 ، اذا كنا في النموذج a1 واردنا ارسال القيمة : Forms![a2]![n2] = me.n1 بينما اذا كنا في النموذج n2 واردنا استيراد القيمة : me.n2 = Forms![a1]![n1] . بينما الكود اللي وضعة اخوي Barna عام ويمكن وضعه في اي نموذج 🙂 جعفر
-
السلام عليكم 🙂 سيدي الفاضل ، عملت شوية تغييرات ، فخلينا نتابع (رجاء مراجعة الشرح في مشاركاتي السابقة) : 1. جدول خاص للمدرسين tbl_Teachers ، ولكل واحد رقمه الخاص Teacher_ID (حتى لا تتشابه الاسماء) ، ورقم المدرسة التي هو بها SID ، 2. جدول tbl_Allowed ، فيه رقم المدرسة SID ، والقاعات المسموح ان تقوم المدارس بمراقبتها ، وعدد الملاحظين الذكور والاناث (ويتم ادخال هذه البيانات عن طريق النموذج) ، 3. جدول توزيع المدرسين عشوائيا tbl_Distributed ، ويتم انتاج بياناته برمجيا ، وهو المطلوب . وفي هذا النموذج نقوم بادخال بيانات الجدول tbl_Allowed ، ولا يسمح هذا النموذج من ادخال عدد مدرسين غير موجودين في جدول tbl_Teachers ، وهنا نحدد عدد المدرسين الذكور او/و الاناث لكل قاعة ، وفي اسفل النموذج نرى مجموع ما تم اختياره من ملاحظين ذكور او/و اناث ، بحيث لا يحتمل الخطأ . وهذا الزر في النموذج يوجد به كود التوزيع (والذي سأضعه في نهاية هذه المشاركة) . البرنامج لا يستعمل الاستعلام الاول (ذكور) والاخير (اناث) ويمكن حذفهما ، ولكن الاستعلام الذي في الوسط qry_D_Halls_All يحتوي على الاستعلامين . وهنا نستطيع ان نرى نتائج دمج الاستعلامين في الاستعلام qry_D_Halls_All والذي وفر علينا الكثير من الخطوات . الاستعلام الذي به جميع الملاحظين الذين يمكنهم مراقبة القاعات ، حسب كل مدرسة ، . واهم استعلام في هذه المجموعة ، حيث لا يُظهر ارقام الملاحظين الذين تم استعمالهم مسبقا (لاحظ الاستعلام الفرعي الذي تحته خط احمر) . اما هذا الاستعلام فلسنا بحاجة اليه ، وانما اهميته في المعيار لعمل التصفية للقاعات لتجربتها في برنامجنا هذا ، ويجب عليك حذف هذ المعيار ، ولكن لا تحذف هذا الاستعلام ، فهو جزء من الابرنامج الان . والنتيجة: . وهذا هو الكود الذي يقوم بالعمل ، والذي يمكن تنضيفه قليلا ، لأن به متخلفات الكود السابق ، ولكنها لا تضر ، فلا تهتم فيها 🙂 : 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 rstSelection As DAO.Recordset Dim RC_rstH As Integer Dim RC_rstSelection As Integer Dim arrrstSelection As Variant Dim strSQL As String 'rstD = tbl_Distributed 'rstH = qry_D_Halls '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 'Hall Name For i = 1 To RC_rstH Me.srch_Distribution_Hall = rstH!Allowed_Hall Me.srch_SID = rstH!SID Me.srch_Regaz = rstH!Regaz 'Loop through the Number of teachers of the schools For j = 1 To rstH!How_Many '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_Teacher '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 = rstH!SID rstD!Distributed_Hall = rstH!Allowed_Hall rstD.Update Next j rstH.MoveNext Next i MsgBox "Done" Exit_cmd_Distribute_Click: rstD.Close: Set rstD = Nothing rstH.Close: Set rstH = 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 = 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 = 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.2.توزيع الملاحظين.mdb.zip 1008.2.توزيع الملاحظين.accdb.zip
-
جعل رسالة الاكسس msgbox بدون زر وتختفي بعد ثواني
jjafferr replied to momen268268's topic in قسم الأكسيس Access
وعليكم السلام 🙂 ماشاء الله ، مادام كل الشباب مشاركين ، فانا ادلو بدلوي كذلك 🙂 و جعفر -
وعليكم السلام 🙂 رجاء مراجعة هذا الرابط جعفر
-
هل فيه طريقة إنى أحدث الداتا بيز بدون فقد البيانات (عنوان معدل)
jjafferr replied to User user's topic in قسم الأكسيس Access
وعليكم السلام 🙂 اهلا وسهلا بك اخي eslamali2 في المنتدى 🙂 رجاء مراعاة شروط المنتدى ، كما اشار اخي زياد في مشاركته ، وبالخصوص المادة رقم 3 من قواعد المشاركة في الموقع 🙂 اما الرد على سؤالك فهو ، نعم نستطيع ان نجزء البرنامج الى قسمين/ملف: ملف الجداول ، ويسمى بمصطلح BE بعد اسم البرنامج (مثل myDataBase_BE.accdb) ، وبه الجداول وعلاقاتها فقط ، ملف الواجهة ، ويسمى بمصطلح FE بعد اسم البرنامج (مثل myDataBase_FE.accdb) ، وبه بقية كائنات البرنامج وبدون جداول ، ويتم ربط الجداول برمجيا. لهذا السبب ، اعمل تغييراتك على FE وارسلها الى الزبون ، فلما يستلم الزبون الملف ويفتحه ، تأتي نافذة الوندوز تطلب منه ان يخبرها عن مكان وجود ملف BE ، ويتم الربط 🙂 هناك العديد من المواضيع في المنتدى بهذا الخصوص ، فخاصية البحث ستساعدك في الحصول عليها ، وارفق لك رابطين قد تستفيد منها: و جعفر -
اعتقد هذه هي الطريقة الصحيحة 🙂 . بس لازم نعمل طريقة بحيث يكون لكل قاعة 6-7 اشخاص !! رجاء تفكر معاي ، لأني ما قادر اوصل الى طريقة سهلة 😞 جعفر
-
حياك الله 🙂 السؤال خارج عن الموضوع، ويمكنك عمل موضوع خاص به ، وهذا الرابط سيفيدك جعفر
-
ما اعرف ، ولكن انت قلت: لهذا السبب طلبت منك . على العموم ، بما ان الحقل الثالث نص ، فالكود يجب ان يكون: Dim rst As dao.Recordset dim myWhere as string Set rst = Form.RecordsetClone myWhere = "[ID]=" & me.Text1 myWhere = myWhere & " And [Code]=" & me.Text2 myWhere = myWhere & " And [City]='" & me.Text3 & "'" rst.FindFirst myWhere If Not rst.EOF Then me.Bookmark = rst.Bookmark جعفر
-
الظاهر ان البيانات لما تخرج من مربع السرد يعطي 255 حرف فقط ، لذلك تفضل هذه طريقة ثانية 🙂 جعفر 1011_test.accdb.zip
-
1. رجاء ارفاق رسالة الخطأ ، 2. بالنسبة الى الحقل الجديد ، شو نوع الحقل (نص ، رقم ، او تاريخ) ؟ جعفر
-
وعليكم السلام 🙂 الظاهر ان الحقل من نوع مذكرة في احد الجداول ، ومن نوع نص في الحقل اللي في الصورة اعلاه ، لذلك فهو يأخذ 255 حرف فقط !! جعفر
-
وعليكم السلام 🙂 حياك الله 🙂 نعم ، وزيادة ، والطريقة هي السعي لقضاء حاجة اخوانك ، وخصوصا اللي في المنتدى 🙂 اما بالنسبة لي انا ، فكما يقول الله عز وجل: وَمَا أُوتِيتُم مِّنَ الْعِلْمِ إِلَّا قَلِيلًا جعفر
-
اخي الفاضل الدكتور اللي يقدر يوصف لك العلاج عن بُعد ، وبمجرد انك تخبره انك مريض وبس ،فهذا عملة نادرة 🙂 اما انا فلا. جعفر
-
عدم امكانية التعديل على النموذج !!
jjafferr replied to عبد اللطيف سلوم's topic in قسم الأكسيس Access
تفضل 🙂 اضفت معيار جديد: 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 . بس اخي عبداللطيف ، الافضل ان تضع الكود قبل تحديث حقل الاسم وليس قبل تحديث النموذج 🙂 جعفر -
تفضل 🙂 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 . شوف هذا الرابط لبقية انواع الحقول من نص ، وتاريخ جعفر
-
تسجيل بدلات ومرتبات العاملين بشركة بدون تكرار (عنوان معدل)
jjafferr replied to اوفيسنا احمد's topic in قسم الأكسيس Access
هذا كان طلبك في مشاركتك الاولى !! ورجاء ، استعمل الخط العادي ، لأننا لما نستعمل الهاتف المحمول لقراءة المشاركات ، فالخط الكبير يملئ الشاشة 😞 رجاء اخبرنا بالتفصيل عن اللي تريده، وبمثال 🙂 جعفر -
ايش رأيك بهذه الطريقة: . نختار لكل قاعة ، رجال و اناث ، او رجال فقط ، او اناث فقط ، و لا نستعمل القاعة التي لا يوجد فيها اختيار ؟ ورجاء ، اذا في اي تغيير آخر ، اخبرني من الآن ، لأني على سفر قريبا جدا !! جعفر
-
ارغب فى ربط المبيعات الخاصة بكل مندوب بالمستودع
jjafferr replied to omdahamdy411@gmail.com's topic in قسم الأكسيس Access
وعليكم السلام 🙂 اهلا وسهلا بك في المنتدى 🙂 في المرات القادمة، رجاء وضع سؤال واحد لكل موضوع، حتى تحصل على فرصة اكبر للحل 🙂 جعفر -
عدم تسجيل قرض للعضوا اذا كان مسجلا له قرض من قبل
jjafferr replied to محمد قاسم 12's topic in قسم الأكسيس Access
يجب ازالة علامة الاستفهام الموجودة في الكلمات باللون الارزق -
الحمدلله 🙂 بالنسبة الى العرض ، مثل ما اخبرتك، حاليا ما عندك خيار إلا ان تكون جميع اعمدة التواريخ بنفس العرض ، والعرض يتم التحكم فيه من الكود ، من المتغير W (كما في الصورة ادناه) ، كان العرض نصف بوصة ، والان عملته بوصه . والتقرير ، يجب ان نجعل الحقول قابلة للنمو/للإرتفاع (ليست قابلة لإحتواء البيانات)، يجب تغيير اعدادات القسم، بحيث يقبل النمو . و نختار جميع الحقول ، وكذلك نجعلها قابله للنمو . والنتيجة . طبعا تستطيع تغيير مكان الحقول، بسحبها الى المكان الصحيح، وتغيير تنسيق اتجاه الخط من اليمين الى اليسار. ولكن انتبه ، يجب ان يكون حجم الورقة عندك كبير ، حتى لا تطبع اجزاء من الصفحة على الصفحة التالية 😞 جعفر
-
العفو ، بس كنت مشغول حبتين 🙂 بسبب تنسيق التاريخ في كمبيوترك، عندك هذا الخلل ، جرب المرفق لوسمحت ، فانا استعنت بكود التاريخ من هنا : . والكود اصبح: 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
-
عدم تسجيل قرض للعضوا اذا كان مسجلا له قرض من قبل
jjafferr replied to محمد قاسم 12's topic in قسم الأكسيس Access
الظاهر انك ما نسخت الكود كاملا ، نسيت شيء منه 🙂 الف مبروك على هذه النسخة، ونطلب منك السر في كيفية الحصول عليها، فلم اسمع من احد انه حصل عليها الى الآن 🙂 اخوي ابو ياسين 🙂 للوصول الى مرحلة الاحتراف، فيجب ان لا تستعمل هذه الجملة إلا نادرا ، ويجب اصطياد الخطأ ، والتعامل معاه فقط ، فهذه الجملة ما بتخلي البرنامج يعطيك ايش الاخطاء اللي فيه 😞 هذه الروابط بتفيدك : و و . وانت المنقذ 🙂 جعفر -
شو رسالة الخطأ ؟
-
انا انزلت المرفق من الرابط اللي في مشاركتك الاولى ، وتم الربط بشكل صحيح 🙂 لوسمحت ترفق صورة من رسالة الخطأ، ومكان توقف الكود باللون الاصفر
-
عفوا ، يجب تغيير الصفر الى واحد ، الكود الصح هو Private Sub Sub_AfterUpdate() Me.LETTERS = Me.SUB.Column(1) End Sub جعفر