بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
9903 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
404
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
نعم ، اذا كان نوع الحقل تاريخ في الجدول ، او اذا كتبت هذا التنسيق في حقل غير مضمن في النموذج 🙂 وطبعا تقدر تستخدم التاريخ بتنسيقات اخرى ، حسب الحاجة (لا تنسى انه تنسيق ، يعني يعطيك هذا الشكل ، ولكن المضمون قد يختلف ، مثل تنسيق mmyyyy ، والذي مافيه يوم ، ولكن لما تنقر على الحقل ، يخليك تشوف اليوم 🙂 )
-
الفرق عدد الخانات ، يعني مثلا d/m/yyyy = 1/2/2019 بينما dd/mm/yy = 01/02/2019 مجرد اختلاف في التنسيق 🙂
-
حياك الله اخوي زياد 🙂
-
التحقق من المدخلات ومنع التكرار بشرط تكرار 3 حقول معا
jjafferr replied to midomashakel's topic in قسم الأكسيس Access
وعليكم السلام 🙂 تفضل: Private Sub Command24_Click() ' مفتاح اضافة موظف اخر لنفس القرار Dim strSQL As String Dim intHow_Many As Integer strSQL = "[KararNom]='" & Me.KararNom & "'" strSQL = strSQL & " And [KararYear]='" & Me.KararYear & "'" strSQL = strSQL & " And [CompID]=" & Me.CompId intHow_Many = DCount("*", "TblKararat", strSQL) If intHow_Many > 0 Then MsgBox "لقد تم تسجيل هذا الموظف مسبقا" Exit Sub End If DoCmd.RunCommand acCmdSaveRecord Dim x As Integer If MsgBox("تم اضافة وحفظ بيانات الموظف للقرار بنجاح. هل تريد اضافة موظف لنفس القرار؟", vbYesNo, "تنبيه") = vbYes Then Dim N, Y, F N = Me.KararNom: Y = Me.KararYear: F = Me.KararFrom DoCmd.GoToRecord , , acNext Me.KararNom = N: Me.KararYear = Y: Me.KararFrom = F Me.CompId.SetFocus Else DoCmd.RunCommand acCmdRecordsGoToNext Me.KararNom.SetFocus End If End Sub جعفر -
حياك الله 🙂 and you are always welcome 🙂 جعفر
-
وعليكم السلام 🙂 هذا الرابط قد يفيدك جعفر
-
حياك الله 🙂 رجاء فتح موضوع جديد لهذا الطلب ، فهو خارج عن موضعنا الذي نحن به 🙂 جعفر
-
وعليكم السلام 🙂 ومشاركة مع اخي زياد 🙂 عندك هذه الاختيارات: D1: DateSerial([date year],[date mans],[date day]) او D2: CDate([date day] & "/" & [date mans] & "/" & [date year]) او D3: Format([date day] & "/" & [date mans] & "/" & [date year],"dd/mm/yyyy") . . ولكن انظر الى النتيجة: سترى ان الحقول D1 و D2 و D3 تعطي التاريخ الصحيح ، ولكن الاكسس لا يرى ان جميع هذه الحقول هي حقل تاريخ!! انظر الى محاذاة نتيجة الحقل: فالحقول D1 و D2 فهي محاذاتها الى اليمين ، مما يعني ان الاكسس عاملها كحقل تاريخ ، بينما الحقل D3 فهو بمحاذاة اليسار ، اي اعتبرها حقل نص . وللتأكد ، انقر بالفأرة اليمين على الحقل ، والمفروض ان الاكسس يعطيك تصفية خاصة بنوع الحقل: تاريخ: . نص: وافضل هذه الاختيارات هو D1 🙂 جعفر 1016.hany - Copy - Copy.mdb.zip
-
نعم ممكن قراءة البيانات بالطريقة التي لديك ، ولكني اعطيتك الطريقة الصحيحة في قاعدة البيانات 🙂 وصدقني ، ستكون اسهل لك في المستقبل ، لإستعمالها لأغراض اخرى ، وخصوصا عن طريق الاستعلام !! جعفر
-
اعطينا مزيد من المعلومات علشان نشرح زيادة 🙂 شو الشيء اللي يعمله البرنامج ، وشو 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. بالنسبة الى الحقل الجديد ، شو نوع الحقل (نص ، رقم ، او تاريخ) ؟ جعفر