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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    181

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

  1. تفضل أخي الكريم / ملفك بعد التعديل وتوسيع النطاق في العمل . وأرجو منك الإهتمام بمواضيعك وأغلاق ما يستحق الإغلاق إشعاراً للقارئ بأن الموضوع قد تم حله والإجابة عليه . فتفاعلك يعكس فكرك . UnMatched123.zip
  2. وجب مني التوضيح وبما أننا نتعامل مع الصور حالياً ، فإن آكسيس وباستخدام مسار وهمي لملف غير موجود سينتج لك خطأ قريباً من هذا :- وبالتالي ، الداعي للتوضح يستدعي التنقيح .
  3. امممم .. دعني أسلك نقاشاً كنت قد تطرقت له برؤوس أقلم في موضوع حماية الجداول على ما اعتقد .... نفذت سابقاً فكرة تقوم بالخطوات التالية من الفتح الى الاغلاق .. عند فتح قاعدة البيانات وفي نموذج البداية Frm_Start سيقوم هذا النموذج أولاً بحذف لقاعدة بيانات خلفية وهمية ( قاعدة بيانات تحميل نفس أسماء الجداول ولكن بدون سجلات ) . يتم الاتصال بقاعدة البيانات الخلفية الحقيقية والمحمية بكلمة مرور ( كالمعتاد ) ثم يعمل المشروع بكل تفاصيله . عند الإغلاق ، وقبل الخروج من قاعدة البيانات ، يتم اعادة استخراج ملف قاعدة البيانات الخلفية ( الوهمية التي قلنا انها لا تحتوي سجلات ) ثم يقوم بإعادة ربطها بدلاً من قاعدة البيانات الخلفية الحقيقية ( الحالية التي تحتوي سجلات ) . وبذلك تم تأمين السجلات والإغلاق . ليس مقصدي الانتقال للحماية ( فلا أدري ما يجول بذهنك معلمي أبو خليل ) ، لكن مقصدي هو الآلية والفكرة التي تدور حولها اسئلتك قد تساعد في الإنتاج الذي ترجوه 😅
  4. كنت قد أجلت الفكرة هذه حتى استوضح منك فكرة الرابط الوهمي 😅
  5. مهو علشان أعرف أفكر وانا بفطر، شجعنا بالهدف المنشود لنحدد الوسيلة التي سنسير بها 😉 . على العموم ، بالنسبة للمطلوب الأول هذه وجهة نظري بالتعديل :- 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 مطلوب المسار الوهمي بعتمد تنفيذ فكرته على ماهية حاجتك له وغايتك وهدفك منه .
  6. وسؤال آخر .. لماذا لم تستخدم Recordset2 بدلاً من Recordset بما أن الحقل = حقل مرفقات !!
  7. الهدف والغاية ، فالغاية تبرر الوسيلة 😁
  8. ما دامه يحقق طلبك وغايتك ، فاعتمده بلا تردد 🙂 .
  9. وعليكم السلام ورحمة الله وبركاته.. بالنظر الى الدالة ولهذا السطر تحديداً:- ImagePath = rs!progIcon.Value سيتم التعامل مع المسار على انه نص وليس كحقل مرفقات . لم أطّلع على الملف ، أتابع من الجوال حالياً.
  10. اخي الكريم ، انت الآن تنتقل الى موضوع جديد ، لذا راجياً منك إغلاق هذا الموضوع لتحقيقه المطلبين الأولين ، وافتح موضوع جديد بهذا الطلب ، بحيث يكون عنوانه مثلاً:- إضافة السجلات الغير موجودة من جدول الى جدول آخر
  11. تم التعديل بحيث يظهر لك رسالة بتحديث قيم الجدول الثاني ( الثابت ) بقيم الجدول الأول ( المتغير ) . جربه وأخبرنا بالنتيجة . UnMatched123.mdb
  12. الحمد لله الذي بنعمته تتم الصالحات
  13. بعد إذن مهندسنا الغالي .. إذا كان ملفك بصيغة Accde فلن تصل للأكواد أبداً .
  14. تحقق من أن مربع النص name1 يحمل قيمة فعلية وليس فارغاً.. وللتأكيد صور رسالة الخطأ نفسه للتحقق.
  15. استبدل الجملة السابقة ، بالجملة التالية :- Me.da5.Caption = Format(rs!Date_Marj, "yyyy/mm/dd") & " بـ" & _ PartOfName(name1, 1) & " " & PartOfName(name1, 2) & _ " تحت رقم : " & rs!N_Act_Marj بشرط أن تكون قد قمت بنقل المديول في الملف الأول الذي تم حل مشكلتك من خلال الاستعلام .
  16. السلام عليكم اخي الكريم محمد mahmouddarweesh .. بداية نرحب بك في عالم اوفيسنا الإلكتروني المتواضع . ونرجو ان تجد ما تبحث عنه دوماً بحيث :- اختيار عنوان مناسب يوضح مضمون المشكلة . ان يكون في الموضوع الواحد طلب واحد فقط ، بحيث تتدرج في الطلبات واحداً تلو الآخر في كل موضوع . الشرح الوافي للمطلوب فهماً وتوضيحاً .. للإستعجال في طلبك استخدم كلمة "للرفع" / "Up" وأهلاً وسهلاً بك مرة أخرى
  17. اعتذر عن التأخير .. تفضل هذا الملف المرفق ، حيث يحتوي الدالة البسيطة :- 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
  18. لا عليك أخي عبداللطيف ، المهم ان المشكلة تم حلها .
  19. أمرك عجيب غريب فيما ترسله من عملك . في ملفك كيف نصل الى التقرير Face6 !!!!!!!!!
  20. تفضل التعديل التالي .. جربه وأخبرني بالنتيجة . 123452025.zip
  21. أين التقرير في مرفقك للتطبيق والتجربة ؟؟
  22. وعليكم السلام ورحمة الله وبركاته .. تم تعديل المديول ليصبح :- 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
  23. وعليكم السلام ورحمة الله وبركاته .. استخدم في حدث في الحالي الكود التالي :- If Me.NewRecord Then Me.AllowAdditions = True Me.AllowEdits = True Me.AllowDeletions = True Else Me.AllowEdits = False Me.AllowDeletions = False End If وفي حدث بعد الإضافة للنموذج الحدث التالي :- Private Sub Form_AfterInsert() Me.AllowEdits = False Me.AllowDeletions = False End Sub ملفك بعد التطبيق :- 123452025.zip
  24. تمام ، وبما أنك تحاكي اختبار لمنطق الورديات .. فإن اسناد قيمة إلى دالة مدمجة في اكسيس مثل Time بحد ذاته غير منطقي ( وجهة نظري طبعاً ) . وبالتالي فإن الحل الأفضل هو جعل الدوال تستقبل الوقت كـ باراميتر ، أو إنشاء دالة وسيطة تعيد الوقت الحالي . واعتذر إن جررت الحديث خارج محتوى الموضوع
×
×
  • اضف...

Important Information