اذهب الي المحتوي
أوفيسنا

Foksh

أوفيسنا
  • Posts

    4290
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    181

كل منشورات العضو Foksh

  1. أولاً :- من خلال تجربتي الأخيرة على مرفق لأحد الأخوة ، حيث كان المفتاح الأساسي لديه في جداوله = حقل نصي ولكنه يحتوي أرقام . وقد ظهرت لدي مشكلة بعد تنفيذ المطلوب على أكمل وجه بسبب أن الحقل ID الذي افترضناه في جدول استخراج الفروقات = حقل رقمي . ولذا تم التعامل مع هذه النقطة بحيث يتم انشاء حقل ID بنفس نوع حقل المفتاح الأساسي في الجدولين المُقارن بينهما ( لإضفاء المرونة في التعامل ليس إلا ) . ثانياً :- تمكين المستخدم من نقل وتحديث السجلات الفارقة فقط بين الجدول الأول وقد تم تصنيفة بالجدول ( المتغير ) والجدول الثاني الذي تم تصنيفة بالجدول ( الثابت ) . وبالتالي حتى السجلات الغير موجودة في الجدول الثابت سيتم إضافتها من الجدول المتغير إلى الثابت . UnMatched.zip
  2. طيب ، كمحاولة وأعتقد انها بعيدة كل البعد عن ما يجول في خاطر أستاذنا أبو خليل .. حاولت الانتقال الى حجز مسار الصورة بعد الاستخراج أو عند وجودها من خلال TempVars . كما في المثال البسيط التالي :- Public Function RelinkIsIco() As String Dim rs As DAO.Recordset Dim rst As DAO.Recordset2 Dim FilePath As String Set rs = CurrentDb.OpenRecordset("SELECT progIcon FROM tblEnDc") Set rst = rs.Fields("progIcon").Value If Not rst.EOF Then FilePath = CurrentProject.Path & "\" & rst.Fields("FileName").Value If Dir(FilePath) = "" Then rst.Fields("FileData").SaveToFile FilePath End If TempVars.Add "IconPath", FilePath RelinkIsIco = FilePath End If rst.Close: Set rst = Nothing rs.Close: Set rs = Nothing End Function وعليه فإنه يمكن استخدام مسار هذا الـ TempVars حتى كمصدر للصورة أو أينما تريد ( كقيمة ثابتة لا تتأثر بالأخطاء البرمجية مثل المتغيرات العامة التي قد تكون String ) . والإستدعاء كما هو حالياً لديك . أو حتى في مصدر عنصر الصورة :- =[TempVars]![IconPath]
  3. تفضل أخي الكريم / ملفك بعد التعديل وتوسيع النطاق في العمل . وأرجو منك الإهتمام بمواضيعك وأغلاق ما يستحق الإغلاق إشعاراً للقارئ بأن الموضوع قد تم حله والإجابة عليه . فتفاعلك يعكس فكرك . UnMatched123.zip
  4. وجب مني التوضيح وبما أننا نتعامل مع الصور حالياً ، فإن آكسيس وباستخدام مسار وهمي لملف غير موجود سينتج لك خطأ قريباً من هذا :- وبالتالي ، الداعي للتوضح يستدعي التنقيح .
  5. امممم .. دعني أسلك نقاشاً كنت قد تطرقت له برؤوس أقلم في موضوع حماية الجداول على ما اعتقد .... نفذت سابقاً فكرة تقوم بالخطوات التالية من الفتح الى الاغلاق .. عند فتح قاعدة البيانات وفي نموذج البداية Frm_Start سيقوم هذا النموذج أولاً بحذف لقاعدة بيانات خلفية وهمية ( قاعدة بيانات تحميل نفس أسماء الجداول ولكن بدون سجلات ) . يتم الاتصال بقاعدة البيانات الخلفية الحقيقية والمحمية بكلمة مرور ( كالمعتاد ) ثم يعمل المشروع بكل تفاصيله . عند الإغلاق ، وقبل الخروج من قاعدة البيانات ، يتم اعادة استخراج ملف قاعدة البيانات الخلفية ( الوهمية التي قلنا انها لا تحتوي سجلات ) ثم يقوم بإعادة ربطها بدلاً من قاعدة البيانات الخلفية الحقيقية ( الحالية التي تحتوي سجلات ) . وبذلك تم تأمين السجلات والإغلاق . ليس مقصدي الانتقال للحماية ( فلا أدري ما يجول بذهنك معلمي أبو خليل ) ، لكن مقصدي هو الآلية والفكرة التي تدور حولها اسئلتك قد تساعد في الإنتاج الذي ترجوه 😅
  6. كنت قد أجلت الفكرة هذه حتى استوضح منك فكرة الرابط الوهمي 😅
  7. مهو علشان أعرف أفكر وانا بفطر، شجعنا بالهدف المنشود لنحدد الوسيلة التي سنسير بها 😉 . على العموم ، بالنسبة للمطلوب الأول هذه وجهة نظري بالتعديل :- Function RelinkIsIco() As String Dim rs As DAO.Recordset Dim rst As DAO.Recordset2 Dim strFilePath As String Set rs = CurrentDb.OpenRecordset("SELECT progIcon FROM tblEnDc") If Not rs.EOF Then Set rst = rs.Fields("progIcon").Value If Not rst.EOF Then strFilePath = CurrentProject.Path & "\" & rst.Fields("FileName").Value If Dir(strFilePath) <> "" Then Kill strFilePath rst.Fields("FileData").SaveToFile strFilePath RelinkIsIco = strFilePath End If rst.Close: Set rst = Nothing End If rs.Close: Set rs = Nothing End Function مطلوب المسار الوهمي بعتمد تنفيذ فكرته على ماهية حاجتك له وغايتك وهدفك منه .
  8. وسؤال آخر .. لماذا لم تستخدم Recordset2 بدلاً من Recordset بما أن الحقل = حقل مرفقات !!
  9. الهدف والغاية ، فالغاية تبرر الوسيلة 😁
  10. ما دامه يحقق طلبك وغايتك ، فاعتمده بلا تردد 🙂 .
  11. وعليكم السلام ورحمة الله وبركاته.. بالنظر الى الدالة ولهذا السطر تحديداً:- ImagePath = rs!progIcon.Value سيتم التعامل مع المسار على انه نص وليس كحقل مرفقات . لم أطّلع على الملف ، أتابع من الجوال حالياً.
  12. اخي الكريم ، انت الآن تنتقل الى موضوع جديد ، لذا راجياً منك إغلاق هذا الموضوع لتحقيقه المطلبين الأولين ، وافتح موضوع جديد بهذا الطلب ، بحيث يكون عنوانه مثلاً:- إضافة السجلات الغير موجودة من جدول الى جدول آخر
  13. تم التعديل بحيث يظهر لك رسالة بتحديث قيم الجدول الثاني ( الثابت ) بقيم الجدول الأول ( المتغير ) . جربه وأخبرنا بالنتيجة . UnMatched123.mdb
  14. الحمد لله الذي بنعمته تتم الصالحات
  15. بعد إذن مهندسنا الغالي .. إذا كان ملفك بصيغة Accde فلن تصل للأكواد أبداً .
  16. تحقق من أن مربع النص name1 يحمل قيمة فعلية وليس فارغاً.. وللتأكيد صور رسالة الخطأ نفسه للتحقق.
  17. استبدل الجملة السابقة ، بالجملة التالية :- Me.da5.Caption = Format(rs!Date_Marj, "yyyy/mm/dd") & " بـ" & _ PartOfName(name1, 1) & " " & PartOfName(name1, 2) & _ " تحت رقم : " & rs!N_Act_Marj بشرط أن تكون قد قمت بنقل المديول في الملف الأول الذي تم حل مشكلتك من خلال الاستعلام .
  18. السلام عليكم اخي الكريم محمد mahmouddarweesh .. بداية نرحب بك في عالم اوفيسنا الإلكتروني المتواضع . ونرجو ان تجد ما تبحث عنه دوماً بحيث :- اختيار عنوان مناسب يوضح مضمون المشكلة . ان يكون في الموضوع الواحد طلب واحد فقط ، بحيث تتدرج في الطلبات واحداً تلو الآخر في كل موضوع . الشرح الوافي للمطلوب فهماً وتوضيحاً .. للإستعجال في طلبك استخدم كلمة "للرفع" / "Up" وأهلاً وسهلاً بك مرة أخرى
  19. اعتذر عن التأخير .. تفضل هذا الملف المرفق ، حيث يحتوي الدالة البسيطة :- Public Sub SetTableHiddenState(ByVal strTableName As String, ByVal hide As Boolean) On Error GoTo ErrHandler Dim db As DAO.Database Dim tdf As DAO.TableDef Set db = CurrentDb db.TableDefs.Refresh Dim t As DAO.TableDef Dim found As Boolean: found = False For Each t In db.TableDefs If t.Name = strTableName Then found = True Exit For End If Next t If Not found Then MsgBox "حدثت مشكلة أثناء تأمين المكونات", vbExclamation + vbMsgBoxRight, "" Exit Sub End If Set tdf = db.TableDefs(strTableName) If hide = True Then tdf.Attributes = tdf.Attributes Or dbSystemObject Or dbHiddenObject Else tdf.Attributes = tdf.Attributes And Not (dbSystemObject Or dbHiddenObject) End If Application.RefreshDatabaseWindow Exit Sub ErrHandler: MsgBox "حدث خطأ أثناء تأمين مكونات البرنامج" & Err.Description, vbCritical + vbMsgBoxRight, "خطأ" End Sub * الدالة جزء من مشروع سابق . الملف المرفق :- Hide TBL.accdb
  20. لا عليك أخي عبداللطيف ، المهم ان المشكلة تم حلها .
  21. أمرك عجيب غريب فيما ترسله من عملك . في ملفك كيف نصل الى التقرير Face6 !!!!!!!!!
  22. تفضل التعديل التالي .. جربه وأخبرني بالنتيجة . 123452025.zip
  23. أين التقرير في مرفقك للتطبيق والتجربة ؟؟
  24. وعليكم السلام ورحمة الله وبركاته .. تم تعديل المديول ليصبح :- Option Compare Database Option Explicit Function PartOfName(InName As String, NumberOfPart As Byte) As String Dim parts() As String Dim tempName As String Dim i As Integer Dim currentIndex As Integer Dim normalizedParts() As String Dim j As Integer tempName = Trim(InName) PartOfName = "" If tempName = "" Then Exit Function tempName = Replace(tempName, " -", " - ") tempName = Replace(tempName, "- ", " - ") tempName = Replace(tempName, " ", " ") parts = Split(tempName, " - ") currentIndex = 0 ReDim normalizedParts(0 To 0) For i = 0 To UBound(parts) If Trim(parts(i)) <> "" Then normalizedParts(currentIndex) = Trim(parts(i)) If i < UBound(parts) Then ReDim Preserve normalizedParts(0 To currentIndex + 1) currentIndex = currentIndex + 1 End If End If Next i If UBound(normalizedParts) > 0 Then If NumberOfPart - 1 <= UBound(normalizedParts) Then PartOfName = Trim(normalizedParts(NumberOfPart - 1)) End If Else Dim words() As String words = Split(tempName, " ") If NumberOfPart - 1 <= UBound(words) Then PartOfName = Trim(words(NumberOfPart - 1)) End If End If End Function Function NoSpaces(InName As String) As String Dim NewName As String Dim i As Integer Dim TheStr As String Dim ThePrevStr As String InName = Trim(InName) For i = 1 To Len(InName) TheStr = Mid(InName, i, 1) If TheStr = " " And ThePrevStr = " " Then TheStr = "" If TheStr <> "" Then ThePrevStr = TheStr NewName = NewName & TheStr Next NoSpaces = NewName End Function وتم تعديل الإستعلام ليصبح :- SELECT Table1.Name, PartOfName([Name],1) AS Firstname, PartOfName([Name],2) AS Secondname, PartOfName([Name],3) AS Thirdname, PartOfName([Name],4) AS Forthname, PartOfName([Name],5) AS SubFamily, PartOfName([Name],6) AS Family, [SubFamily] & " " & [Family] AS Familyname FROM Table1 WITH OWNERACCESS OPTION; ملفك بعد التعديل :- فصل ماقبل المطة.zip
×
×
  • اضف...

Important Information