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

نجوم المشاركات

  1. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      8

    • Posts

      12,158


  2. ابو جودي

    ابو جودي

    أوفيسنا


    • نقاط

      6

    • Posts

      6,814


  3. kanory

    kanory

    الخبراء


    • نقاط

      3

    • Posts

      2,256


  4. Foksh

    Foksh

    الخبراء


    • نقاط

      3

    • Posts

      2,155


Popular Content

Showing content with the highest reputation on 25 سبت, 2023 in all areas

  1. وهذ الكود ان شاء الله يفى بالغرض كما هو المطلوب Public Function MultiReplacements(Optional ByVal strInput As String = "") As String If Nz(strInput, "") = "" Then Exit Function strInput = Replace(strInput, "ي ", "ى " & "") strInput = Left(strInput, Len(strInput) - 1) + Replace(Right(strInput, 1), "ي", "ى") strInput = Replace(strInput, "ة", "ه" & "") strInput = Replace(strInput, "عبدال", "عبد ال" & "") strInput = Replace(strInput, "عبدرب", "عبد رب" & "") MultiReplacements = strInput End Function وطبعا لتجنب حدوث اى مشاكل بسبب استخدام الاحرف العربية داخل محرر الاكواد افضل استخدام الكود الاتى Public Function MultiReplacements(Optional ByVal strInput As String = "") As String If Nz(strInput, "") = "" Then Exit Function strInput = Replace(strInput, ChrW(1610) & ChrW(32), ChrW(1609) & ChrW(32) & "") strInput = Left(strInput, Len(strInput) - 1) + Replace(Right(strInput, 1), ChrW(1610), ChrW(1609)) strInput = Replace(strInput, ChrW(1577), ChrW(1607) & "") strInput = Replace(strInput, ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(1575) & ChrW(1604), ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(32) & ChrW(1575) & ChrW(1604) & "") strInput = Replace(strInput, ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(1585) & ChrW(1576), ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(32) & ChrW(1585) & ChrW(1576) & "") MultiReplacements = strInput End Function
    3 points
  2. وهذا حل مشابه لما تفضل به اخوي موسى مع بعض الاضافات Private Sub txt1_AfterUpdate() Dim i As String Me.txt1.SetFocus i = Me.txt1.Value i = Replace(i, "عبد", "عبد" & " ") Me.txt1 = i End Sub الاسماء المركبة2.accdb
    2 points
  3. وأخيرا ً بحمد الله الذى تتم بنعمته الصالحات ضع للكود الاتى فى وحدة نمطيه Public Function MultiReplacements(ByVal varInput As String, ParamArray varReplacements() As Variant) On Error GoTo ErrorHandler Dim n As Integer Dim varOutput As Variant Dim intParamsCount As Integer If Nz(varInput, "") = "" Then Exit Function ' varInput = Nz(varInput, 0) 'If Not IsNull(varInput) Then If Len(varInput & "") > 0 Then intParamsCount = UBound(varReplacements) + 1 If intParamsCount Mod 2 = 0 Then varOutput = varInput For n = 0 To UBound(varReplacements) Step 2 varOutput = Replace(varOutput, varReplacements(n), varReplacements(n + 1)) Next n Else Exit Function End If End If MultiReplacements = varOutput ExitHandler: Exit Function ErrorHandler: Select Case Err.Number Case Is = 94: Resume ExitHandler Case Else MsgBox "Error Number : " & Err.Number & vbNewLine & "Error Description : " & Err.Description Resume ExitHandler End Select End Function Public Function ReplaceResult(ByVal strInput As String) If Nz(strInput, "") = "" Then Exit Function ReplaceResult = MultiReplacements(strInput, ChrW(1577), ChrW(1607), _ ChrW(32), ChrW(32), _ ChrW(1610) & ChrW(32), ChrW(1609) & ChrW(32), _ ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(1575) & ChrW(1604), ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(32) & ChrW(1575) & ChrW(1604), _ ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(32) & ChrW(1575) & ChrW(1604) & ChrW(32), ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(1575) & ChrW(1604) & ChrW(32), _ ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(1585) & ChrW(1576) & ChrW(32), ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(32) & ChrW(1585) & ChrW(1576) & ChrW(32), _ ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(1605) & ChrW(1575) & ChrW(1604) & ChrW(1603), ChrW(1593) & ChrW(1576) & ChrW(1583) & ChrW(32) & ChrW(1605) & ChrW(1575) & ChrW(1604) & ChrW(1603) _ ) End Function ويتم استدعاءه كالتالى ReplaceResult([txt]) واخيرا المرفق الاسماء المركبة.accdb
    2 points
  4. عليكم السلام جرب هذه المعادلة في أي عمود في الصف الثاني ونسخها لأسفل =IF(INDIRECT(IF(ISODD(ROW()),"A","B")&INT(ROW()/2)+1)="","فارغ",INDIRECT(IF(ISODD(ROW()),"A","B")&INT(ROW()/2)+1)) بالتوفيق
    2 points
  5. السلام عليكم خير الكلام ما قل ودل . اللهم صل على محمد وآله وصحبه . بسبب ملاحظتي لحرص البعض _خاصة المستجدين _ على مسألة الحماية واستخدام طرق معقدة والبحث عن الجديد والأقوى احببت ان انشر تجربتي وخبرتي في هذه المسألة كأيسر وكذلك اقوى طريقة . الحماية من جهتين : 1- حماية البيانات وهي الجداول .. وهذه تهم المستخدم ( العميل) 2- حماية البناء ..( التصميم بما يشتمل من اكواد وغيرها ) وهذه تهم المبرمج ----------------------------------- الجهة الأولى : 1- اكسس ضعيف جدا في حماية جداوله .. لأن اي مستخدم مهما ضعفت صلاحياته يمكنه التمكن من الجداول ( نسخ / تغيير / حذف) 2- اي شخص يملك قاعدة بيانات اكسس يمكنه الوصول الى الجداول ما لم يتم حمايتها بكلمة مرور اكسس 3- ينطبق هذا على القواعد المقسمة حيث يجب تفعيل كلمة مرور اكسس على الواجهات الأمامية قبل عرض كلمة مرور المستخدم ، والا ستكون الجداول في متناول اليد . نأتي للجهة الثانية وهي ما يخص المبرمج : من خلال تجارب وخبرة سنوات افضل طريقة تريح المبرمج وكذلك العميل وبعيدا عن غرس الملفات والريجستري والفلاش : الاعتماد على رقم سيريال واحد من عتاد الجهاز ( قرص صلب / معالج / اللوحة الأم ) بشرط ان يكون الرقم اساسي خاصة القرص الصلب لا يتغير عند عمل التهيئة . فكون الرقم اساسي لا يتغير يفيد العميل عندما يقوم بتهيئة القرص ، وهو مريح ايضا للمبرمج ( يوجد كثير من المواضيع هنا في هذا المنتدى تشرح عملية استخلاص ارقام القطع الداخلية لجهاز الحاسب .. ابحث ) الخطوات : --------------------------------- - استخراج واستخلاص الارقام من السيريل ( غالبا يأتي مختلط بارقام وحروف) سيظهر هذا الرقم للعميل في فورم التسجيل واسفله حقل لادخال رقم النسخة ------------------------------- - نعمل دالة1 = استقطاع جزء محدد من النتيجة .. مثلا خمسة ارقام او اربعة ارقام من اليمين او من اليسار ( استقطاع ثابت) - نعمل دالة2 = اجراء معادلة على دالة1 ، مثلا ( دالة1 (x) 1234567 + 53954 ) ------------------------------- - عندما يرسل العميل رقم السيريل ويطلب رقم النسخة نقوم بعمل المعادلة ومن ثم نرسلها للعميل نتيجة هذه المعادلة ستبقى ملك دائم لجهاز حاسب واحد ما دام على قيد الحياة -------------------------------------------------------------------------------------------------------------- ما ذكرته اعلاه هو للنسخة الدائمة .. أما النسخة المؤقته فأقوم بعملها كالتالي : يجب ان يكون العمل مقسم الى واجهات وجداول . يجب ان اتعامل مع العميل على اساس نسختين من الواجهات : مؤقتة / دائمة الفرق بين الواجهة المؤقتة والواجهة الدائمة .. هي زيادة سطرين بشرطين في المؤقتة 1- الشرط 1: لن تفتح المؤقتة الا مع وجود الأنترنت شغال 2- نضع سطرا نحدد تاريخ توقف البرنامج ( يتم جلب التاريخ من الانترنت ) لنفرض انتهت مدة التجربة بعد شهر او شهرين .. وتم الشراء .. هنا نرسل الواجهة الدائمة للصق والاستبدال . هنا نكون حافظنا على بيانات العميل المدخلة وعلى حقوقنا البرمجية ----------------------------------------------------- نقطة اخيرة : سيتبادر الى الذهن ! اين يحفظ رقم النسخة ؟ لأن البرنامج سيطلبه عند كل اقلاع ؟ الجواب : ما دام رقم النسخة ملكا للجهاز فيمكن حفظه في اي مكان ، مثلا في حقل في جدول بشرط ان يحتوي الجدول على سجل واحد فقط او يمكن حفظه في ملف نصي بجانب قاعدة البيانات وهذه الطريقة الاخيرة هي الافضل بل تجب اذا تم توزيع الواجهات على اكثر من جهاز .. والسبب ان كل جهاز سيكون له رقمه الخاص هذا ما لدي آمل تجدوا فائدة
    1 point
  6. تفضل التعديل حدد مكان وجود القالب و اسم و موقع حفظ الملف الجديد بهذا الشكل SendData.zip
    1 point
  7. لم تزودنا ببيانات اضافية للتجربة .... على العموم جرب المرفق عسى يفي بالغرض المطلوب ... وحاول تعديل الكود حسب بياناتك الاساسية لديك ... ‏‏مثال (4) - نسخة.accdb
    1 point
  8. أكيد بتكون بنفس الطريقة: Me.txt1 = Replace(Me.txt1, "عبدال", "عبد ال") Me.txt1 = Replace(Me.txt1, "عبدرب", "عبد رب") Me.txt1 = Trim(Replace(Me.txt1 & " ", "ة ", "ه ")) Me.txt1 = Trim(Replace(Me.txt1 & " ", "ي ", "ى ")) تم التعديل في حالة أن التاء أو الياء في الإسم الأخير.
    1 point
  9. ههههههه اى خدمه علشان تعرف بس انا مصحصح باقى استبدال احرف ال ة الى ه والياء ي فى اخر الكلمة الى ى
    1 point
  10. وهذه بعد مشاهدتي لمشاركة الأستاذ أبو جودي: Me.txt1 = Replace(Replace(Me.txt1, "عبدال", "عبد ال"), "عبدرب", "عبد رب")
    1 point
  11. أخي الكريم انا خبرتي متواضعة ، ولا استطيع الجزم بأنه يمكن أو لا يمكن ولكن من معرفتي القليلة أعتقد أنك لا تحتاج الى التغيير بالترقيم التلقائي كما تتصور في فكرتك .
    1 point
  12. اولا لن تتمكن من رفع من مستواك التعليمي وخبرتك البرمجية ما دمت تستخدم الحروف العربية في البرمجة حينما اكتب كودا محكما يشتمل على حروف عربية .. حينما ارجع اليه بعد فترة لا يمكنني فهمه ولا ماذا يعمل معذرة .. لا اكف عن طبعي في اسداء النصائح ، مع علمي بأنها ثقيلة على المتلقي . على كل حال تم تحقيق طلبك بفتح النموذج المحدد بناء على العقدة tree2.accdb
    1 point
  13. تفضل مثال ارسال البيانات.zip
    1 point
  14. وعليكم السلام-تفضل https://onlineconvertfree.com/ar/ocr/picture-to-excel/
    1 point
  15. انا اعتراضي على العنوان : اكسس والتعامل مع ملفات Dll مهما غيرت امتدادها فاكسس ينظر الى ما بداخلها ويعرف انها جداول اكسس من سنوات عديدة مضت ولا زلت وانا استخدم هذه الطريقة .. ليس من باب الحماية بل من باب منع العبث ويمكننا تسميته تمويه وليس حماية اي ان المستهدف هو الشخص المتصفح المستعجل الذي يفتح الملفات بحثا عن شيء ما . مثلا يريد فتح واجهات البرنامج فيخطيء ويفتح قاعدة الجداول
    1 point
  16. وحماية ثالثة .. ان يحميك الله من كل سوء ، ويطيل عمرك على طاعته
    1 point
  17. لا اعتقد ان هيكون الموضوع بهذه السهوله اذا كانت قاعدة البيانات من النوع ACCDE (القاعدة التى سوف تفتح البرنامج "الواجهه") فهنا استحالة انه يوصل للكود حتى لو معه الباسورد ^_^ (عارف ان مفيس مستحيل لكن على الاقل هذا يتطلب مستوي عالى جدا من الخبره) وبما ان الواجهه نفسها مغلقه بكلمة سر (معقده) والخلفيه مغلقه بكلمة سر معقده ايضا فهيكون من شبه المستحيل كسرها والله اعلم
    1 point
  18. شكرا لك استاذ عمر على المداخلة واحسنت في عرض هذه الفكرة ، وطريقة تنفيذها .. ويعتبر هذا العمل زيادة عالية في حماية بيانات العميل .
    1 point
  19. وهذه لتوضيح الفكره يفضل ان يكون المجلد فى حرف D علشان يكون مسار البرنامج هو D:\DB\Start.accde لتجنب اخطأ الربط DB.rar
    1 point
  20. وممكن ان يقوم المبرمج بغلق القاعدة الخلفيه والاماميه بكلمات سر ويعمل قاعدة ثالثه لتشغيل القاعدة الاماميه بالاعتماد على هذا الكود كود اخفاء الاكسيس او اظهارها (اختياري ومش هتفرق وجودها) Option Compare Database Option Explicit #If VBA7 Then Public Declare PtrSafe Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long #Else Public Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long #End If '---------------------------------------------------(يخفي الشاشة بتصغيرها للأسفل ولكنها تظهر إذا عملت ماكسيمايز) Public Function HideAccess() Call ShowWindow(Access.hWndAccessApp, 2) End Function '---------------------------------------------------(لإظهار شاشة الأكسس) Public Function ShowAccess() Call ShowWindow(Access.hWndAccessApp, 9) End Function كود تشغيل قاعدة البيانات الاخري Private Sub Form_Load() Call HideAccess Dim acc As Access.Application Dim db As DAO.Database Dim strDbName As String strDbName = CurrentProject.Path & "\" & "FFFF" & ".accdb" Set acc = New Access.Application acc.Visible = True acc.OpenCurrentDatabase strDbName, False, "1234" Set db = acc.CurrentDb() acc.UserControl = True Application.Quit End Sub على فرض ان القاعدة الاماميه باسم FFFF وان كلمة السر هي 1234 ويقوم باغلاق القاعدة الثالثه بتحويلها الى accde وبكده اعتقد هتكون الحمايه عاليه جدا وهيكون صعب كسر كلمة السر
    1 point
  21. طريقتي ... از الفكرة التي اود العمل عليها :: اولا انشاء جدول للبيانات بعد الدمج ثانيا انشاء كود لمقارنة التواريخ للعميل الواحد وفي حال تسلسل تاريخ النهاية مع تاريخ البداية يقوم الكود بالدمج بين التاريخين ومقارنتها بالسجل التالي اذا كانت النتيجة ايجابية يدمج وهكذا ثم يلحق السجلات المدموجه في سجل واحد في الجدول بعد الدمج وهكذا للسجلات الغير متسلسلة من حيث التاريخ ايضا يلحقها في نفس الجدول ..... طبعا توقفت لان الكود يحتاج تاكد لان السجلات كل ما كانت متنوعة من حيث التسلسل كلما كانت النتيجة اوثق ... فقط هذا كل شيى
    1 point
  22. حبذا لو تزودنا ببيانات اكثر للتجربة ولكن انظر للسجلين ( جدول قبل دمج الفترات - جدول بعد الدمج هل هذا ما تريد ؟؟؟ )
    1 point
  23. وعليكم السلام ورحمة الله وبركاته ضع هذا قبل اخر End If Me.Frame1.Height = Me.Frame1.Height + 14 Me.ListBox2.Height = ListBox2.Height + 14 Me.Label8.Top = Me.Frame1.Top + Me.Frame1.Height + 10: Me.Label9.Top = Me.Label8.Top + Me.Label8.Height: Me.Label10.Top = Me.Label9.Top + Me.Label9.Height Me.TextBox1.Top = Me.Label8.Top: Me.TextBox2.Top = Me.TextBox1.Top + Me.TextBox1.Height: Me.TextBox3.Top = Me.TextBox2.Top + Me.TextBox2.Height Me.CommandButton1.Top = Me.Label8.Top
    1 point
  24. لربما فكرة إنشاء جدول مفتاحه الاساسي رقم الموظف ويحتوي الفترات من إلى ، وعليه جلب القيم التاريخية لبداية العقد ونهايته ( مجرد فكرة )
    1 point
  25. الاصل الذي يجب اتباعه هو تسجيل فترة الانقطاع سواء كانت داخل العقد او بين العقود وفي حالتك يجب اولا ايجاد طريقة لتحويل الاعمدة الى صفوف ثم تعمل مقارنة .. بين تاريخ نهاية العقد وتاريخ بداية العقد الذي يليه
    1 point
  26. مجرد فكرة ,, اعمل استعلام تحديث لفترة النهاية الأولى مثلا: قد يتم تعيين المدرب من 01/09/2022 حتى 31/01/2023 مثلاً: قد نجدد لشخص من: 01/02/2023 حتى 31/08/2023 ليصبح تاريخ التعيين مثلاً: قد نجدد لشخص من: 01/09/2022 حتى 31/08/2023 هذا طبعاً إن كانت فترة التعيين متتالية وغير منفصلة ( المقصد أنه تعين بتاريخ كذا إلى تاريخ كذا ؛ ثم انقطع فترة زمنية ثم عاد لتجديد التعيين )
    1 point
×
×
  • اضف...

Important Information