بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
-
Posts
10000 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
406
نوع المحتوي
التقويم
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
اعطينا مزيد من المعلومات علشان نشرح زيادة 🙂 شو الشيء اللي يعمله البرنامج ، وشو ActiveX اللي يستعمله ، والكود اللي تستعمله ، واي سطر يعطيك الخطأ 🙂 جعفر
-
السلام عليكم 🙂 عملت تغيير على النموذج ليصبح خفيفا 🙂 ولما تختار الشهر والسنه والمنطقة ، افتح الاستعلام qry_New_Request_Results ليعطيك النتيجة المطلوبة 🙂 الاستعلام : عملنا وحدة نمطية اسمها Concat لجمع بيانات الحقل ، ونرسل لها اسم الحقل المراد تجميع بياناته في سطر واحد ، ونرسل اسم الشخص ، ونعمل هذا لكل حقل . والنتيجة: . وهذه هي الوحدة النمطية: Public Function Concat(F_Name, P_Name) On Error GoTo err_Concat 'F_Name = Field Name 'P_Name = Person Name Dim rst As DAO.Recordset Dim RC As Integer Dim i As Integer Dim Add_Me As String Dim strSQL As String 'do the query SQL for this Field name ONLY strSQL = "Select [" & F_Name & "] From [New_Request] Where [PName]= '" & P_Name & "'" Set rst = CurrentDb.OpenRecordset(strSQL) 'make the Recordset in memory rst.MoveLast: rst.MoveFirst: RC = rst.RecordCount 'loop through the Records For i = 1 To RC 'ONLY add this value if we didn't add it before If InStr(Add_Me, rst(F_Name)) = 0 Then Add_Me = Add_Me & ", " & rst(F_Name) 'Concatenate these values End If rst.MoveNext Next i Concat = Mid(Add_Me, 3) 'remove the initial comma Exit_Concat: rst.Close: Set rst = Nothing Exit Function err_Concat: If Err.Number = 3021 Then 'no data Concat = "" Resume Exit_Concat ElseIf 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 DAO.QueryDef Dim prm As Parameter ' For Each qdf In CurrentDb.QueryDefs ' If qdf.Name = "NewQueryDef" Then ' CurrentDb.QueryDefs.Delete "NewQueryDef" ' Exit For ' End If ' Next Set qdf = CurrentDb.CreateQueryDef("NewQueryDef", strSQL) For Each prm In qdf.Parameters prm.Value = Eval(prm.Name) Next prm Set rst = qdf.OpenRecordset(dbOpenDynaset) CurrentDb.QueryDefs.Delete "NewQueryDef" Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function جعفر 1015.Concatenate.accdb.zip
-
وعليكم السلام 🙂 ببساطة ، الظاهر انك تريد تقرأ / تكتب الى مسار ملف غير موجود 🙂 بعض الاوقات لما تريد تكتب/تقرأ من ملف ، فالملف قد لا يكون جاهزا (يعني يمكن الوندوز بطيء لتجهيزه للقراءه) ، لذا في بعض الاحيان اضطر ان اخلي الكود ينتظر ثانيه واحدة قبل الانتقال الى سطر قراءته ، فيكون هذا الكود قبل قراءة الملف ، هكذا (الكود مأخوذ من مساعد الاكسس ، ونرى ان التأخير هنا 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
يجب ازالة علامة الاستفهام الموجودة في الكلمات باللون الارزق