بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
-
Posts
4163 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
179
نوع المحتوي
التقويم
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Foksh
-
وعليكم السلام ورحمة الله وبركاته .. اقصد اسم الاستمارة SDN !!! هل هو ثابت ؟؟؟
-
مداخلة سريعة ، هل اسم ملف الإستمارة ثابت ؟؟ على العموم ، جرب هذه الفكرة أيضاً اشتقاقاً من فكرة المهندس @Eng.Qassim .. Private Sub Comaand4_Click() On Error GoTo ErrorHandler Dim dbPath As String Dim localNewFolder As String Dim defaultNewFolder As String Dim imagePath As String Dim imgFile As String dbPath = CurrentProject.Path localNewFolder = dbPath & "\New" defaultNewFolder = "D:\CARDS\New" If Dir(localNewFolder, vbDirectory) <> "" Then imgFile = Dir(localNewFolder & "\*.*") Do While imgFile <> "" Select Case LCase(Right(imgFile, 4)) Case ".jpg", ".jpeg", ".bmp", ".png", ".gif", ".tif" imagePath = localNewFolder & "\" & imgFile Exit Do Case Else imgFile = Dir() End Select Loop End If If imagePath = "" Then If Dir(defaultNewFolder, vbDirectory) <> "" Then imgFile = Dir(defaultNewFolder & "\*.*") Do While imgFile <> "" Select Case LCase(Right(imgFile, 4)) Case ".jpg", ".jpeg", ".bmp", ".png", ".gif", ".tif" imagePath = defaultNewFolder & "\" & imgFile Exit Do Case Else imgFile = Dir() End Select Loop End If End If If imagePath <> "" Then Shell "mspaint /pt """ & imagePath & """", vbHide MsgBox "تم إرسال الإستمارة للطباعة", vbInformation + vbMsgBoxRight, "" Else MsgBox "لا توجد استمارة لطباعتها", vbExclamation End If Exit Sub ErrorHandler: MsgBox "حدث خطأ", vbCritical + vbMsgBoxRight, "" End Sub وقد جعلت الكود أولاً يقرأ المجلد New اذا كان بجانب قاعدة البيانات فيأخذ الإستمارة منه ، وإلا فيذهب إلى المسار الذي حددته سابقاً ليطبع لك الصورة المعبرة عن الإستمارة منه . Database.accdb
-
تعديلاتك ممتازة جدًا! 1️⃣ العلاقة بين الجداول سليمة وصحيحة بالنسبة لي .. جدول personal_data أصبح الجدول الرئيسي ، ويرتبط بجميع الجداول الفرعية بعلاقة ( One-To-Many ) مما يعني أن كل موظف يمكن أن يكون له عدة سجلات في الجداول الأخرى كـ ( الإجازات ، العقوبات ، التدريبات ، ... إلخ ) . 2️⃣ فصل البيانات المتغيرة في جداول مستقلة .. التدريبات ، الإجازات ، العقوبات ، الوظائف ، المؤهلات كل منها في جدول مستقل ، مما يسهل عمليات البحث والاستعلام والتصفية . وهذا بالطبع سيجعل الاستعلامات أكثر كفاءة مقارنة بوضع جميع البيانات في جدول واحد 😉 . 3️⃣ تحسين التسمية .. وأيضاً واضح أنك استخدمت بادئة أسماء تمييزية (مثل rkm_mlf_Qual و rkm_mlf_Vaca ... إلخ ) لربط الجداول بـ personal_data بدون تكرار أسماء الحقول بشكل مربك . قد خطر ببالي أيضاً إضافة بسيطة :- 🔹 إضافة جداول دعم إضافية عند الحاجة ، مثل جدول أنواع الإجازات ، جدول أنواع الدورات التدريبية ، جدول أسباب العقوبات بدلاً من تخزينها كنصوص داخل الجداول الأساسية ، مما يسهل التعديل مستقبلاً .
-
نسخ صور قسم معين الى مجلد قاعده بيانات اكسس
Foksh replied to Majed_ali2010's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله وبركاته .. أخي الكريم بدايةً وبما انك عضو جديد معنا ، فأهلاً وسهلاً بكم معنا في عالمنا الصغير .. ومن حقك أن تتوضح لك عدة نقاط منها :- عند إنشاء موضوع يجب أن تقوم بالشرح الوافي والشافي والكافي للمشكلة بحيث يسهل فهم المشكلة على الأخوة والأساتذة ممن يحاول تقديم حلول لك . أيضاً ضرورة ارفاق ملف بسيط تكون قد أنشأت به معطيات ما تريد من عناصر . أما بخصوص طلبك فهو متشعب بأكثر من اتجاه ، وهذا ما دفعني ان اطلب منك التوضيح أكثر . فهل الصور لها مسميات خاصة ؟ هل الصور في مجلد واحد أم أكثر من مجلد ( تم توزيعها حسب التاريخ أو مجموعات معينة ) على سبيل المثال ؟؟ هل الصور المطلوب نسخها تستند الى شروط لتحديد ما تريد نسخه ( بناءً على كلمة قسم معين الى مجلد جديد ) هذه بعض الأسئلة التي تحتاج إجابة منك -
جزاكم الله خيراً ، ونفع بكم وبعلمكم .. والحمد لله على ما تعلمناه بفضله ثم من توجيهاتكم في كثير من المواضيع ومتابعتي لخطواتكم
-
هذه ملاحظة تصميمية رائعة جداً . حيث توضح أن البيانات المتغيرة يجب تقسيمها إلى نوعين بناءً على طبيعتها :- 🔹 النوع الأول وهو بيانات متغيرة تحتاج إلى تحديث مستمر في الجدول الأساسي . مثل الرتبة ، الوظيفة ، مكان العمل ، المؤهل ... إلخ . ويتم الاحتفاظ بأحدث قيمة داخل جدول الموظفين الرئيسي ، ويتم تحديثها عند حدوث تغيير . كما يتم تسجيل جميع الحركات السابقة في جدول منفصل ، بحيث يمكن الرجوع إليها عند الحاجة . برأيي هذه النقطة مهمة لأن البحث والتصفية على جدول واحد يكون أسرع وأسهل . أيضاً عند البحث عن بيانات حديثة لكل الموظفين ، لن تحتاج إلى جلب جميع الحركات السابقة ، بل فقط أحدث حالة لكل موظف . ويمكن تطبيق هذه الفكرة على سبيل المثال في الجدول personal_data ، أضافة حقول مثل :- current_rank ( الرتبة الحالية ) ، current_job ( الوظيفة الحالية ) ، current_workplace ( مكان العمل الحالي ) ، latest_qualification ( آخر مؤهل ) . وفي جداول الحركات ( مثل الترقيات والتعديلات ) ، يتم تسجيل جميع الحركات السابقة ، وعند حدوث تغيير جديد يتم تحديث الحقل المناسب في جدول الموظفين الرئيسي . 🔹 النوع الثاني من البيانات وهو بيانات مستقلة بالكامل . مثل الإجازات ، التدريبات ، الجزاءات ، العقوبات ... إلخ ، فهذه البيانات متغيرة لكنها لا تؤثر على المعلومات الأساسية للموظف بشكل مباشر . لكن لكل منها جدول مستقل ويتم ربطه بـ rkm_mlf . أيضاً هذه نقطة مهمة لأن الموظف يمكن أن يكون لديه عدد غير محدود من الإجازات والتدريبات والجزاءات ... إلخ ، وبالتالي لا يُفضل إضافتها إلى الجدول الرئيسي للموظفين . وكما أن الفصل بين البيانات يجعل الاستعلامات أكثر كفاءة ودقة ، حيث يمكنك البحث عن الإجازات دون التأثير على بيانات الموظفين الآخرين . وأيضاً يمكن تطبيق هذه الفكرة على سبيل المثال بحيث يكون لكل نوع بيانات جدول مستقل ، مثل :- Leave_data ( جدول الإجازات ) ، Training_data ( جدول التدريبات ) ، Penalty_data ( جدول الجزاءات ) ، Promotion_data ( جدول الترقيات ) . 💥 أما فيما يخص التسميات الخاصة بحقل الربط بين الجداول وكما أشار أستاذي @ابوخليل ؛ فبدلاً من استخدام rkm_mlf في جميع الجداول ، يمكن تسميته بشكل متمايز كما يلي :- rkm_mlf في جدول personal_data ( جدول الموظفين الرئيسي ) rkm_mlf_func في جدول functional_data rkm_mlf_qual في جدول qualification_data
-
نعم صحيح أخي الكريم .. وبالنسبة للجداول المتبقية ، فيفضل استخدامك لنفس الطريقة السابقة ، وطبعاً سيكون حقل المفتاح الفريد rkm_mlf هو الرابط بين الجداول لذا اربط الجداول كافة بجدول الموظفين لضمان تنظيم البيانات واسترجاعها بسهولة لاحقاً .
-
وعليكم السلام ورحمة الله وبركاته، بالنسبة لسؤالك حول وضع البيانات في جدول واحد أو توزيعها على عدة جداول ، فمن الأفضل استخدام 3 جداول منفصلة كما فعلت ( هذا بالنسبة لي طبعاً ) ، وذلك للأسباب التالية : 🔹 لماذا لا أفضل وضع البيانات في جدول واحد ؟؟؟ 1️⃣ تجنب تكرار البيانات :- إذا وضعت جميع البيانات في جدول واحد ، فقد تضطر إلى تكرار بيانات الموظف أكثر من مرة عند إضافة مؤهلاته أو تغيير بياناته الوظيفية . 2️⃣ تحسين الأداء وسهولة الاستعلامات :- الجداول الصغيرة تسهّل عمليات البحث والتحديث مقارنةً بجدول واحد ضخم يحتوي على بيانات مكررة . 3️⃣ التوسّع المستقبلي :- تقسيم البيانات يسهل إضافة ميزات جديدة مثل ترقيات الموظفين أو دورات تدريبية دون إعادة تصميم الجدول بالكامل . 🔹 ونقطة مهمة وهي كيف يتم الربط بين الجداول ؟؟؟ لضمان عمل الجداول بشكل صحيح ، يجب استخدام المفاتيح الأساسية (Primary Keys) والمفاتيح الأجنبية (Foreign Keys) كما يلي :- ✅ جدول البيانات الشخصية (Personal_data) :- اجعل rkm_mlf (رقم الملف) هو المفتاح الأساسي (Primary Key) ، لأنه فريد لكل موظف . ✅ جدول البيانات الوظيفية (Functional_data) :- أضف Functional_ID (ترقيم تلقائي) كمفتاح أساسي . استخدم rkm_mlf كمفتاح أجنبي (Foreign Key) لربطه بجدول البيانات الشخصية . ✅ جدول المؤهلات (Qualification_data) :- أضف Qualification_ID (ترقيم تلقائي) كمفتاح أساسي . استخدم rkm_mlf كمفتاح أجنبي (Foreign Key) لربطه بجدول البيانات الشخصية . هذا وقد أكون قد غفلت عن شيء ، فإن كنت قد سهوت فعل الأخوة والأساتذة يساندني ويذكرها 😇 .
-
مشكلة عند وضع زر في الشاشة الرئيسية لفتح نموذج
Foksh replied to nahed amer's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله وبركاته ,, بدايةً من واجبي أن أنصحك بضرورة التقيد بسياسة وقوانين المنتدى من حيث :- 1. انتقاء العنوان المناسب والذي له دلالة على المشكلة . 2. الشرح الوافي والكافي للمشكلة . 3. ارفاق ملف للمشكلة لتتوضح للإخوة و الأساتذة اللذين يمروا في موضوعك . الآن بالنسبة للمشكلة ، فقد يكون هذا أحد عدة احتمالات ، منها :- 1. قد يكون النموذج الرئيسي يحتوي على نموذج فرعي يستخدم جدول ولنفترض Tbl_Customer وبنفس الوقت ان تحاول فتح نموذج آخر يستخدم نفس الجدول ، 2. قد يكون أيضاً مشكلة في قاعدة البيانات . هذا يعتمد على طريقة وبنية المشروع طبعاً -
تفضل المرفق التالي .. 2025.accdb
-
انصحك بالإستعانة بصورة معبرة بدلاً من استخدام مربع النص الخاص الناتج عن ActiveX
-
تجسيداً لفكرة معلمنا الفاضل @ابوخليل ، اعتقد إنها الفكرة الأفضل عند تعدد العملات ،حيث من خلال الإستعلام تستطيع حصر السجلات بشرط نوع العملة . انقر زر نوع العملة لتغييرها هي مجرد فكرة ذات نتائج أفضل عند تراكم السجلات !! test (4).accdb
-
-
-
أولاً تعديل الاستعلام بالشكل التالي :- SELECT DISTINCT basic.id2, Horizontal("basic","id2","namee",[basic].[id2]) AS name, Horizontal("basic","id2","school",basic.id2) AS school, Horizontal("basic","id2","work",basic.id2) AS [work], Horizontal("basic","id2","Committee",basic.id2) AS Committee, Horizontal("basic","id2","work_date",basic.id2) AS work_date FROM basic; والدالة في الوحدة النمطية بالشكل التالي :- Public Function Horizontal(tabelle As String, Feld1 As String, Feld2 As String, valFeld1, Optional sortField As String = "workdate") On Error GoTo ErrorHandler Dim DB As DAO.Database, rs As DAO.Recordset Dim sql As String Dim fieldName As String Dim isFirst As Boolean Set DB = CurrentDb sql = "SELECT [" & Feld2 & "] " & _ "FROM [" & tabelle & "] " & _ "WHERE ((([" & tabelle & "].[" & Feld1 & "])=" & valFeld1 & "))" Set rs = DB.OpenRecordset(sql) Horizontal = "" isFirst = True Do While Not rs.EOF If isFirst Then Horizontal = "*" & Nz(rs(Feld2), "") isFirst = False Else If Feld2 = "namee" Then Horizontal = Horizontal & vbCrLf & "" Else Horizontal = Horizontal & vbCrLf & Nz(rs(Feld2), "") End If End If rs.MoveNext Loop rs.Close Set rs = Nothing Set DB = Nothing Exit Function ErrorHandler: Horizontal = "" If Not rs Is Nothing Then rs.Close Set rs = Nothing End If Set DB = Nothing Exit Function End Function لاحظ أيضاً أنني قمت بتغيير أسماء حقلين في الجدول لعدم حدوث مشاكل في الكود أو الاستعلام 😅 . for send (0).accdb
-
وعليكم السلام ورحمة الله وبركاته ,, جرب التعديل التالي :- DoCmd.OpenForm "JO_IN_OUT", , , "[Ddate] = #" & Format(Me.ddate, "yyyy\/mm\/dd") & "#"
- 1 reply
-
- 1
-
-
أخي الكريم ، برأيك هل الخطأ ( إنشاء استعلام في كل مرة يتم فيها النقر على الزر ) الموضح في الفيديو التالي منطقي بالنسبة لمبرمج 🤔 ؟؟؟؟؟؟
-
-
-
حسناً ، لم تعجبني النتيجة السابقة بسبب تكرار الاسم في كل سجل ، لذا جرب هذا التعديل في الدالة :- Public Function Horizontal(tabelle As String, Feld1 As String, Feld2 As String, valFeld1, Optional sortField As String = "workdate") Dim DB As DAO.Database, rs As DAO.Recordset Dim sql As String Dim isFirst As Boolean Set DB = CurrentDb sql = "SELECT " & Feld2 & " FROM " & tabelle & " WHERE " & Feld1 & "=" & valFeld1 If sortField <> "" Then sql = sql & " ORDER BY " & sortField & " ASC" End If Set rs = DB.OpenRecordset(sql) Horizontal = "" isFirst = True Do While Not rs.EOF If Horizontal = "" Then Horizontal = "*" & rs(Feld2) Else If Feld2 = "name" Then Horizontal = Horizontal & vbCrLf & "" Else Horizontal = Horizontal & vbCrLf & rs(Feld2) End If End If rs.MoveNext Loop rs.Close Set rs = Nothing Set DB = Nothing End Function والإستعلام بعد التعديل :- SELECT basic.id2, Horizontal("basic","id2","name",[id2]) AS name, Horizontal("basic","id2","gov",[id2]) AS gov, Horizontal("basic","id2","workdate",[id2]) AS [work] FROM basic GROUP BY basic.id2; النتيجة :- المرفق الأخير الذي اعتمدته :- TEST22.accdb
-
حسناً ، جرب هذا التعديل في الدالة :- Public Function Horizontal(tabelle As String, Feld1 As String, Feld2 As String, valFeld1, Optional sortField As String = "workdate") Dim DB As DAO.Database, rs As DAO.Recordset Dim sql As String Set DB = CurrentDb sql = "SELECT " & Feld2 & " FROM " & tabelle & " WHERE " & Feld1 & "=" & valFeld1 If sortField <> "" Then sql = sql & " ORDER BY " & sortField & " ASC" End If Set rs = DB.OpenRecordset(sql) Horizontal = "" Do While Not rs.EOF If Horizontal = "" Then Horizontal = "*" & rs(Feld2) Else Horizontal = Horizontal & vbCrLf & rs(Feld2) End If rs.MoveNext Loop rs.Close Set rs = Nothing Set DB = Nothing End Function والإستعلام بعد التعديل :- SELECT basic.id2, Horizontal("basic","id2","name",[id2]) AS name, Horizontal("basic","id2","gov",[id2]) AS gov, Horizontal("basic","id2","workdate",[id2]) AS [work] FROM basic GROUP BY basic.id2; TEST22.accdb
-
لا عليك أخي الكريم ، هي فقط نصائح كي تحصل على النتائج المطلوبة بشكل أسرع لا غير 😀 . أيضاً استخدم تفعيل نبهني بالردود لتحصل على اشعار سريع عندما تكون في الموضوع . على العموم ، استبدل هذا السطر في الكود :- & " where " & Feld1 & "=" & valFeld1 & " order by " & Feld2 & " DESC ") بالسطر التالي فقط :- & " where " & Feld1 & "=" & valFeld1 & " order by " & Feld2 & " ASC ") وهو فقط تحويل الفرز من تنازلي DESC الى تصاعدي ASC . TEST22.accdb
-
وعليكم السلام ورحمة الله وبركاته .. يبدو أنك أخي الكريم قد نسخت ولصقت العبارة فقط في موضوعك الجديد ولم تستكمل باقي التوضيحات التي اقترحتها عليك سابقاً , على العموم هل المقصد من كلامك هو فرز البيانات في التقرير بشكل تصاعدي ؟؟ أي أنك تريد السجلات مفروزة من التاريخ القديم إلى الحديث كما في الصورة ؟؟؟؟؟؟
-
متابع للإستفادة من خبرة معلمي الفاضل ابو خليل وكل عام وانتم بخير جميعاً
-
اقترح عليك فتح موضوع جديد في المشكلة التي تواجهك ، وأن لا تبخل علينا في الشرح والتوضيح المفرط حتى لا ندخل في متاهات المطلوب الغير مفهوم .. وان شاء الله تجد ما يسرك من الإخوة والأساتذة