اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

مشاركات المكتوبه بواسطه jjafferr

  1. شباب كيف أحسب مساهمة الراتب والبدلات على المعادلات التالية

    مساهمة الراتب

     

    ما قبل 1/8/1994

    الراتب الأساسي × 0.05 × ((عدد السنوات × 12) + (عدد الأشهر) + (عدد الأيام /30))

    بعد 1/8/1994

    الراتب الأساسي × 0.06 × ((عدد السنوات × 12) + (عدد الأشهر) + (عدد الأيام /30))

     

     

    مساهمة البدلات 

    من 2/11/1996

    البدلات × 0.06 × ((عدد السنوات × 12) + (عدد الأشهر) + (عدد الأيام /30))

     

    المدة يحسب من إلى بحيث يأخذ في الإعتبار السنة الكبيسة والبسيطة

     

    السلام عليكم ولد بلادي  :smile:

     

    ادري ما سويلك سالفة ، بس السموحة  :imsorry:

    التواريخ اللي انا علّمتها بالاحمر ، كيف نحسبها؟

    انت عندك في النموذج: التاريخ من ، والتاريخ الى ، فكيف نحسبها ، او من اي حقل نأخذها؟

     

     

    جعفر

  2. تفضلي  :smile:

     

    انا عملت الاستعلام qry_Main ، واللي النمذج الاساسي يعتمد عليه.

     

    طريقة العمل:

    1. عند اختيار اي لوحة من القائمة المنسدلة ، فالنموذج يعطي سجل هذه اللوحة ،

    2. وعندما تريدين جميع اللوحات ، انقري على القائمة المنسدلة مرتين Double click  :smile:

     

     

    جعفر

    68.قاعدة بيانات السيارات.accdb.zip

    • Like 1
  3. حياك الله اخي جعفر ..

    هو اسم مستعار وليس حقيقي :wink2:

     

    الله يعطيك العافية على تجاوبك معي :gift2:

     

    1. ممكن اعرف السبب في تغيير البرنامج ؟

    2. ليه ما يكون ادخال الباركود في جدول ADS عن طريق نموذج ADS ؟

    3. ايضا في قراءة الباركود عن طريق الجهاز ما ابغى استخدم أي زر للحفظ او تاب او انتر او غيرها .. ابغاه اتوماتيك وخاصة لو عندك اكثر من 1000 طالب في المدرسة :power:

     

    حيا الله أخوي  :smile:

     

    1. لأن كان فيه شوية اشياء تعقد عمل البرنامج ، واشياء ما ممكن تشغل البرنامج ، مثل انك جعلت حقل ID غير مسموح تكراره في الجدول ADS (قلت في خاطري: يا حظهم الطلبة ، يقدر الواحد فيهم يتأخر كل يوم ، بس يتسجل عليه تأخير يوم واحد فقط في السنة  :smile: ) ،

    2. كل شئ يصير  :smile:  ، بس لما يكون عندك اكثر من 1000 طالب ، فيا الله الله يمديك تسجل حضورهم ، وتريد في نفس الوقت تسجل معلوماتهم كذلك!!!

    3. في مشاركتي السابقة ، شوف الكود اللي عليه مربع احمر رقم 1 ، احذف اشارة  '  من امام كل سطر ، وبيشتغل الكود ان شاء الله  :smile:

     

     

    جعفر

  4. سجلني  من (لقسم منا   :wink2: )  لا يستطيع في كلا النوعين

     

    حياك الله أخوي أبوخليل  :smile:

     

     

     

    1. هههههه عجبتك هي قسم منا

    طيب ياريت توضح لي اكثر

    2. اذا حولت البرنامج في هذه الحاله لايمكنني التعديل عليه صح او خطا

    3. وشفر بيانات الجداول هذه مافهمتها المعذره والسموحه منك حبيبي

    اشكرك ياغالي

    اخوك ابو يزن

     

    حيا الله أخوي أبو يزن  :smile:

     

    1. انا جاد في كل كلمة قلتها ، فمعناه ان هناك من يستطيع ان يحصل على ما يريد ، بغض النظر عن اي نوع من انواع الحمايات اللي بتعملها ، سواء للأكسس او اي برنامج آخر  :smile:

    2. نعم لا يمكن التعديل عليه ، فيجب عليك الاحتفاظ بالنسخة المفتوحة المصدر لعمل التغييرات ، ثم قفلها الى mde او accde  :smile:

    3. ابحث في المنتدى ، وستجد المطلوب ، لأن هذا الموضوع مب تخصصي ، فما افهم فيه الكفاية (وكذلك انا جاد ، رحم الله إمرئ عرف قدر نفسه  :smile: )

     

     

    الجاد جعفر  :smile:

  5. وعليكم السلام أستاذنا الفاضل / الجندبي (بس ان شاء الله كتبت اسمك صح  :smile: )

     

    انا غيرت في البرنامج ، يعني عندك برنامج جديد  :smile:

     

    النموذج:

    post-142414-0-86529500-1430558481_thumb.

     

     

    في الخانة الخضراء تدخل رقم الباركود ، ولما تطلع من الحقل (يعني تضغط على TAB او Enter في لوحة المفاتيح) ، تظهر لك معلومات الطالب في النموذج الرئيسي ،

    وكذلك تحصل على سجلات الطالب القديمة في النموذج الفرعي.

     

    حفظ معلومة الحضور:

    post-142414-0-10439400-1430558494_thumb.

     

     

    عندك طريقتين لحفظ المعلومة:

    1. عندما تدخل رقم الباركود في الخانة الخضراء ، ولما تطلع من الحقل (يعني تضغط على TAB او Enter في لوحة المفاتيح) ،

    او

    2. عند النقر على زر الحفظ.

     

    حاليا البرنامج يحفظ المعلومة عن طريق النقر على زر الحفظ.

     

     

    وإحنا في الخدمة  :smile:

     

     

    جعفر

    66.BarcodeStudent.accdb.zip

  6.  

    اخوي أبو يزن جرب:
    AppDesigner="أبو يزن"

    بدل السطر اللي يبدا بـAppDesigner

    جعفر

     

    أخي ابو يزن

     

    طرشت لك الرسالة السابقة من هاتفي ، فما فيه خاصية المنتدى العادي ، لذلك طلعت الكتابة بالمقلوب  :eek2:

     

    المفروض ان المبرمج يكون يكتب الاسم وبطريقة مباشرة ، مثل: أبو يزن ، بدل ما يكتب أ ب و  ي ز ن ، او يكتب ارقام الحروف (القائمة التي وضعها اخينا أبا عمر ascii table ، وانظر في الاسفل) ،

    مثل:

    AppDesigner="أبو يزن" 

    ولكن اذا اراد المبرمج ان يتحاشى الحروف العربية في الكود (قد يكون السبب لأن بعض اعدادات الكمبيوترات تحولها الى علامات استفهام ؟؟؟؟ ) ، فانه سيضطر الى استعمال ارقام الحروف !

    مثل:

    لاحظ في الاكسس ، لما تريد تعمل زر لنموذج اسمه بالعربي (مثل أبو يزن) ، فالاكسس يعمل هذا الكود:

    docmd.openform chr(195) & chr(200) & chr(230) & chr(32) & chr(237) & chr(210) & chr(228)
    

    بدل عن الامر المتعارف:

    docmd.openform "أبو يزن"
    

    '-

    '-

     

    والان وبعد هذه المقدمة

     

    عملت لك كود صغير يغير الاسم من حروف الى ارقام:

    a = "أبو يزن"
    b = ""
    c = ""
    For I = 1 To Len(a)
       c = c & Mid(a, I, 1) & "=" & Asc(Mid(a, I, 1)) & " , "
       b = b & "chr(" & Asc(Mid(a, I, 1)) & ") & "
    Next I
    c = Mid(c, 1, Len(c) - 3)
    b = Mid(b, 1, Len(b) - 3)
    Debug.Print c
    Debug.Print b
    

    والنتيجة (السطر الاول للعلم فقط ، بينما السطر الثاني هو الذي يحتوي على الكود):

    أ=195 , ب=200 , و=230 ,  =32 , ي=237 , ز=210 , ن=228
    chr(195) & chr(200) & chr(230) & chr(32) & chr(237) & chr(210) & chr(228)
    

    يعني بدل ما تكتب اسمك بهذه الطريقة:

    AppDesigner="أبو يزن" 
    

    اكتبه:

    AppDesigner=chr(195) & chr(200) & chr(230) & chr(32) & chr(237) & chr(210) & chr(228)
    

    والجدول اللي أخوي ابا عمر تركه لنا هو للحروف اللاتينية فقط ، والرابط فيه جدول للغة العربية كذلك:

    http://www.ascii.ca/cp864.htm

     

     

    جعفر

  7. السلام عليكم

     

    1.

    من المعروف ان تنسيق النص في مربع القائمة ListBox هو من اليسار الى اليمين ،

    مشكلة كانت تصادفني دائما ، وهو تنسيق القيم في مربع القائمة لتكون من اليمين الى اليسار بالنسبة للغة العربية (طريقة تغيير مربع القائمة الى مربع تحرير ونص ، ثم عمل التنسيق عليه من اليمين الى اليسار ، ثم اعادته الى مربع قائمة لا يعمل معظم الوقت) ،

    موقع http://www.lebans.com  والذي يحتوي على مالذ وطاب عنده طريقه لهذا التنسيق: http://www.lebans.com/justicombo.htm كذلك.

     

     

    2.

    ونفس المشكلة مع موضوع تنسيق الشجرة TreeView من اليمين الى اليسار.

     

     

    النتيجة:

    RTL.Clipboard01.jpg.231f83a922d4488009b85c909e655e13.jpg

     

     

    و

     

    RTL.Clipboard02.jpg.bebb0992224598674894f9f77a443f0b.jpg

     

    وطريقة العمل ،

    يوضع هذا الكود في وحدة نمطية:

    Option Compare Database
    Option Explicit
    
    #If VBA7 And Win64 Then
        '64 bits
      Public Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As Long
      Public Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
      Public Declare PtrSafe Function InvalidateRect Lib "user32" (ByVal hwnd As LongPtr, lpRect As Long, ByVal bErase As Long) As Long
      Public Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr
      Public Declare PtrSafe Function GetFocus Lib "user32" () As LongPtr
      Public Declare PtrSafe Function GetWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal wCmd As Long) As LongPtr
      
      Dim hwnd As LongPtr
      
    #Else
        '32 bits
      Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
      Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
      Public Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As Long, ByVal bErase As Long) As Long
      Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
      Public Declare Function GetFocus Lib "user32" () As Long
      Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
      
      Dim hwnd As Long
      
    #End If
    
    Public Const GW_CHILD = 5
    Public Const WS_EX_LAYOUTRTL = &H400000
    Public Const GWL_EXSTYLE = (-20)
    
    
    
    Function RTL_Set(frm As Form, ctl As Control)
        
        Dim varHwnd As Variant
        Dim OldLong As Long
        
        frm.SetFocus
        ctl.SetFocus
        varHwnd = GetFocus()
        OldLong = GetWindowLong(varHwnd, GWL_EXSTYLE)
        SetWindowLong varHwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
        InvalidateRect hwnd, 0, False
        
    End Function
    
    Function RTL_SetTree(frm As Form, ctl As Control)
    
        Dim OldLong As Long
        
        OldLong = GetWindowLong(ctl.hwnd, GWL_EXSTYLE)
        SetWindowLong ctl.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
        InvalidateRect hwnd, 0, False
        
    End Function
    
    
    
    '
    ' From http://www.microsoft.com/middleeast/msdn/faq.aspx
    '
    'Place OnLoad of the Form
    
    '    Dim OldLong As Long
        'For Form
    '    OldLong = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
    '    SetWindowLong Me.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
    '    InvalidateRect hwnd, 0, False
        'For List
    '    OldLong = GetWindowLong(List1.hwnd, GWL_EXSTYLE)
    '    SetWindowLong List1.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
    '    InvalidateRect hwnd, 0, False
        'For The StatusBar
    '    OldLong = GetWindowLong(StatusBar1.hwnd, GWL_EXSTYLE)
    '    SetWindowLong StatusBar1.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
    '    InvalidateRect hwnd, 0, False
        'For TreeView
    '    Dim nodX As Node
    '    Set nodX = TreeView1.Nodes.Add(, , "R", "Root")
    '    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "Child 1")
    '    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "Child 2")
    '    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "Child 3")
    '    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C4", "Child 4")
    '    nodX.EnsureVisible
    '    OldLong = GetWindowLong(TreeView1.hwnd, GWL_EXSTYLE)
    '    SetWindowLong TreeView1.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
    '    InvalidateRect hwnd, 0, False
        'For ListView
    '    OldLong = GetWindowLong(ListView1.hwnd, GWL_EXSTYLE)
    '    SetWindowLong ListView1.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
    '    InvalidateRect hwnd, 0, False
        'For ProgressBar
    '    ProgressBar1.Value = 50
    '    OldLong = GetWindowLong(ProgressBar1.hwnd, GWL_EXSTYLE)
    '    SetWindowLong ProgressBar1.hwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
    '    InvalidateRect hwnd, 0, False
        'For ToolBar
    '    mhwnd = GetWindow(Toolbar1.hwnd, GW_CHILD)
    '    OldLong = GetWindowLong(mhwnd, GWL_EXSTYLE)
    '    SetWindowLong mhwnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
    '    InvalidateRect hwnd, 0, False
        
    

    في اسفل الكود انا تركت الكود لبقية الاشياء اللي يمكن عملها من اليمين الى اليسار.

     

     

    اما تنفيذ التنسيق لمربع القائمة ، فهو وضع هذا الكود عند تحميل النموذج الذي يحتوي على هذا المربع (وهنا اسم حقل مربع القائمة هو List0_RTL ) :

        'ListBox RTL
        Call RTL_Set(Me, List0_RTL)

    وتنسيق الشجرة ، فهو وضع هذا الكود عند تحميل النموذج الذي يحتوي على الشجرة (وهنا اسم الشجرة هو TreeView1) :

        'TreeView RTL
        Call RTL_SetTree(Me, TreeView1)

    وللأمانة العلمية ، فاني استخدم قاعدة البيانات التي وضعها الاخ محمد في الرابط: http://www.officena.net/ib/index.php?showtopic=60781

     

     

    جعفر

    تعديل 1: 18-11-2021 ، جعل البرنامج يعمل على النواتين 32بت و 64 بت

     

     

    54.RTL_TreeView_ListBox_32bits_n_64bits.accdb.zip

    • Like 8
    • Thanks 1
  8. السلام عليكم أخوي أبا عمر  :smile:

     

    حيله جميلة باستخدام SetWindowPos  :smile:

    إحنا بسبب طريقة السؤال كنا نحاول ان نخفي شاشة الاكسس ، بس انت ماشاء الله عليك ، نظرت للموضوع من خارج العلبة ، وحصلت على مفهوم أكبر وطرق اخرى للحل ، هنيئا لك هذه القدرة  :smile:

    وللعلم ، راعي الغنم في مشاركته رقم 84 لمح لهذا الشي نظريا ، ولم يطبقه برمجيا ، وانت سبقته ففيك الخير  :smile:

     

     

    جعفر

    • Like 1
  9. وعليكم السلام

     

    لو كنت مخبرنا من البداية قصدك ، كنا اعطيناك الحل من البداية  :yes:

     

    والكود هو:

        myApp = Me.txtOpenFile
        'myApp = "F:\Temp\myDatabase.mdb"
        'Shell myApp, 1
        Application.FollowHyperlink myApp
    

    اما مربع النص ، فيمكنك ان تكتب فيه المسار يدويا كذلك ، مع اني اضفت امكانية فتح ملفات الاكسس كذلك.

    post-142414-0-68790300-1430410372_thumb.

     

     

    جعفر

    53-Word_Print.zip

    • Like 1
×
×
  • اضف...

Important Information