بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
9998 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
406
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
وعليكم السلام 🙂 ببساطة ، الظاهر انك تريد تقرأ / تكتب الى مسار ملف غير موجود 🙂 بعض الاوقات لما تريد تكتب/تقرأ من ملف ، فالملف قد لا يكون جاهزا (يعني يمكن الوندوز بطيء لتجهيزه للقراءه) ، لذا في بعض الاحيان اضطر ان اخلي الكود ينتظر ثانيه واحدة قبل الانتقال الى سطر قراءته ، فيكون هذا الكود قبل قراءة الملف ، هكذا (الكود مأخوذ من مساعد الاكسس ، ونرى ان التأخير هنا 5 ثوان) : Dim PauseTime, Start PauseTime = 5 ' Set duration. Start = Timer ' Set start time. Do While Timer < Start + PauseTime DoEvents ' Yield to other processes. Loop . جعفر
-
السلام عليكم 🙂 تم دمج الموضوعين ، وحذف مشاركه في موضوع آخر 🙂 خلينا نشتغل في مكان واحد ، في هذا الموضوع 🙂 من الصورة المرفقة في مشاركتك الاخيرة ، عملت الاستعلام التالي: انت تريد ان تجعل للشخص سجل واحد ، بحيث تجمع بيانات الحقل TName مفصولا بفاصلة ، ولكن ماذا عن بقية الحقول اذا كانت البيانات مختلفة ، مثل الحقل TCode كما هو في الصورة في الاسفل؟ . جعفر
-
وعليكم السلام 🙂 اذا انا مو غلطان ، فهذه ثالث محاولة/موضوع لك لنفس الشيء ، وما حصلت اجابات هناك🙂 في الواقع جدولك هذا مال اكسل ، بينما جدول قاعدة البيانات لازم يكون بهذه الطريقة: . واعتقد بأنك تقدر تواصل من هنا 🙂 وحيالله اخوي co2002co 🙂 جعفر 1014.Salary_increment.accdb.zip
-
بس بعد فتح النموذج 🙂
-
وعليكم السلام 🙂 هممم الكود اللي وضعة اخوي 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