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

Foksh

الخبراء
  • Posts

    1,897
  • تاريخ الانضمام

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

  • Days Won

    67

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

  1. أخي الكريم @nssj ، بداية دعني أوضح لك نقاط مهمة في الدوال التي تعمد على البحث داخل سجلات عن قيم غير ثابتو ولا تتبع اسلوب محدد في موضعها ، فإنه مع كثيرة السجلات والبيانات في الجداول مستقبلاً ستأخذ وقتاً أوطول كلما زادت كميوة الداتا في الجدول المستهدف للبحث فيه . وهذا أمر طبيعي ، وسأحاول جاهداً توظيف الكود ليكون سلساً وسهلاً في آلية عمله .

     

    ثانياً ، اعذرني لأني أحيانا لا أدقق في النتائج بشكل ممعن كصاحب الموضوع :smile:

     

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

    الأولى حيث يتبع الرقم مباشرة اسم الكتاب، والثانية حيث يكون الرقم موجودًا داخل النص دون الالتزام بموضع محدد ، في الكود التالي ، وأخبرني بالنتيجة سريعاً

     

    الكود :

        Dim db As DAO.Database
        Dim rsBooks As DAO.Recordset
        Dim rsTab As DAO.Recordset
        Dim sql As String
        Dim bookNumber As String
        Dim found As Boolean
        Set db = CurrentDb()
        Set rsBooks = db.OpenRecordset("BOOKS")
        Do While Not rsBooks.EOF
            bookNumber = rsBooks!B_Hno
            found = False
            sql = "SELECT * FROM TAB WHERE NASS LIKE '" & rsBooks!bookName & " " & bookNumber & "%'"
            Set rsTab = db.OpenRecordset(sql)
            If Not rsTab.EOF Then
                rsTab.MoveFirst
                Do While Not rsTab.EOF
                    If InStr(rsTab!NASS, bookNumber) = Len(rsTab!bookName) + 2 Then
                        rsBooks.Edit
                        rsBooks!MNO = rsTab!MNO
                        rsBooks.Update
                        found = True
                        Exit Do
                    End If
                    rsTab.MoveNext
                Loop
            End If
            
            If Not found Then
                sql = "SELECT * FROM TAB WHERE InStr(NASS, '" & bookNumber & "') > 0"
                Set rsTab = db.OpenRecordset(sql)
                
                If Not rsTab.EOF Then
                    rsTab.MoveFirst
                    Do While Not rsTab.EOF
                        If InStr(rsTab!NASS, bookNumber) > 0 Then
                            rsBooks.Edit
                            rsBooks!MNO = rsTab!MNO
                            rsBooks.Update
                            found = True
                            Exit Do
                        End If
                        rsTab.MoveNext
                    Loop
                End If
            End If
            rsTab.Close
            Set rsTab = Nothing
            rsBooks.MoveNext
        Loop
        rsBooks.Close
        Set rsBooks = Nothing
        Set db = Nothing

    المرفق بعد التعديل :-

     

    Smart_Search03.accdb

    • Thanks 1
  2. 2 ساعات مضت, qathi said:

    انتظر ابدعاتك استاذنا الغالي وياريت اعرف اسمك الاول حتى اناديك كما تعودنا

    حالا اخي الكريم ..

    أخوك فادي من الأردن :wub:

     

    تفضل أخي @qathi ، جرب هذه الفكرة التي تم فيها تعديل بسيط لإظهار معالج السكانر في حال وجوده :-

    Dim imgFileName As String
    Dim imgPath As String
    Dim WIA As Object
    Dim scanner As Object
    Dim imgFile As Object
    Dim MyPath As String
    imgPath = CurrentProject.Path & "\Data\JPG\"
    imgFileName = imgPath & Me.ID & ".jpg"
    If Dir(imgPath, vbDirectory) = "" Then
        MkDir imgPath
    End If
    If Dir(imgFileName) <> "" Then
        If MsgBox("الصورة موجودة مسبقاً. هل ترغب في استبدالها؟", vbQuestion + vbYesNo, "تأكيد الاستبدال") = vbYes Then
            On Error Resume Next
            Kill imgFileName
            On Error GoTo 0
        Else
            imgFileName = imgPath & Me.ID & "_new.jpg"
        End If
    End If
    Set WIA = CreateObject("WIA.CommonDialog")
    On Error Resume Next
    Set scanner = WIA.ShowSelectDevice()
    On Error GoTo 0
    If Not scanner Is Nothing Then
        On Error Resume Next
        Set imgFile = WIA.ShowAcquireImage()
        On Error GoTo 0
        If Not imgFile Is Nothing Then
            On Error Resume Next
            imgFile.SaveFile imgFileName
            On Error GoTo 0
            Me.Pic_Path.Requery
            Me.Pic_Path = imgFileName
        Else
            MsgBox "فشل في الحصول على الصورة من الماسح الضوئي!", vbExclamation, "خطأ"
        End If
    Else
        MsgBox "يرجى التأكد من توصيل الماسح الضوئي وتشغيله.", vbExclamation, "تنبيه"
    End If

     

    وهذا الموفق

     

    Scanner.accdb

     

  3. تفضل أخي @خالد الماجد 2 ، رغم أن المنتدى مليء بهذه المواضيع ، ولكن بما أنك عضو جديد فأهلاً وسهلاً بك معا في عالمنا الصغير المتواضع :fff:

    في المرفق ستجد طريقتين ، في المديول الأول Hide&Show يتم استدعاء الالة في أول نموذج يعمل في المشروع بالجملة التالية  HideAccess لإخفاء واجهة آكسيس ، وأيضاً على العكس تستطيع إظهار آكسيس بالجملة التالية ShowAccess .

     

    وفي المديول الثاني Hide_Access هناك أكثر من طريقة للعمل على هذا المديول ، فمثلاً :-

    لإخفاء واجهة آكسيس : fSetAccessWindow(SW_HIDE)

    لإظهار واجهة آكسيس : fSetAccessWindow(SW_SHOWNORMAL)

    لإظهار واجهة آكسيس بوضع التصغير : fSetAccessWindow(SW_SHOWMINIMIZED)

    لإظهار واجهة آكسيس بوضع ملئ الشاشة : fSetAccessWindow(SW_SHOWMAXIMIZED)

     

    Hide & Show.accdb

    • Thanks 1
  4. استناداً لفكرة أخي @Abo-Abd Allah ، تم التعديل بشكل بسيط على الكود بحيث يكون البحث داخل النص عن رقم الكتاب وليس ملزماً بموقع الرقم ، أرجو التحقق من النتائج أخي @nssj من الكود التالي :-

    Function UpdateBooksWithMNO()
        Dim db As DAO.Database
        Dim rsBooks As DAO.Recordset
        Dim rsTab As DAO.Recordset
        Dim sql As String
        Dim bookNumber As String
        Dim found As Boolean
        Set db = CurrentDb()
        Set rsBooks = db.OpenRecordset("BOOKS")
        Do While Not rsBooks.EOF
            bookNumber = rsBooks!B_Hno
            found = False
            sql = "SELECT * FROM TAB WHERE InStr(NASS, '" & bookNumber & "') > 0"
            Set rsTab = db.OpenRecordset(sql)
            If Not rsTab.EOF Then
                rsTab.MoveFirst
                Do While Not rsTab.EOF
                    If InStr(rsTab!NASS, bookNumber) > 0 Then
                        rsBooks.Edit
                        rsBooks!MNO = rsTab!MNO
                        rsBooks.Update
                        found = True
                        Exit Do
                    End If
                    rsTab.MoveNext
                Loop
            End If
            rsTab.Close
            Set rsTab = Nothing
            rsBooks.MoveNext
        Loop
        rsBooks.Close
        Set rsBooks = Nothing
        Set db = Nothing
    End Function

     

    Smart_Search_function.accdb

    • Like 2
  5. أخي الكريم ، عدة نقاط أرجو توضيحها لأني في البداية قرأت الموضوع بشكل سريع ( كنت في طريقي للعمل ) ، الآن كالتالي :-
    لنفترض أن لديك نموذج يحتوي مربع نص لاستخدامه للبحث ( على سبيل المثال ) وتريد كتابة البحث داخل الحقل NASS في الجدول TAB ( صحيح ) عن قيم عشوائية يتم كتابتها بشكل يدوي وليس قيم محددة ( صحيح ؟ ) . يعني مثلاُ النتيجة التي تريدها عند البحث عن " فوائد تمام (756) " القيمة مأخوذة من أحي بيانات سجل في الجدول TAB من الحقل NASS ، وعليه فأن النتيجة التي تريد عرضها في النموذج الفرعي للنتئج ماذا ستكون ؟؟؟؟؟؟؟؟

     

    لا بأس في شرحك إلا أن الأمور قد تتداخل في بعضها :smile:

  6. 7 دقائق مضت, Ahmedbakheet said:

    تمام هو بيبحث فى المسار لكن احيانا البحث عربى و احيانا انجليزى وعند ايجاد النتيجه المطلوبه بالنجليزى يعطى الرساله بالصوره

    7 دقائق مضت, Ahmedbakheet said:

    أحياناً .. دي بتكون مشكلة في الأوفيس ، لأني جربت البحث بالعربي وبالانجليزي على أكثر من مكان ، وما ظهرش مشكلة عندي
    انا بستعمل أوفيس 2016 نواة 64 بت

  7. 8 دقائق مضت, Ahmedbakheet said:

    انا تعبت حضرتك معايا واخر طلب بجانب الصوره ان البحث يبقى بالعربى والانجليزى واسف على الطلبات الكتير 

     

    إزاي ممكن توضح ؟؟؟لأن نتيجة البحث بتكون حسب اسماء الملفات بتاعتك ، بص هنا :smile:

    Too.png.cd8350aa778fe3aa8092a9737e4be2c2.png

  8. 3 دقائق مضت, ابو جودي said:
    • انت بتستعماني يا هرم :mad: لا وبتقول لى صديقى كمان :angry:

    النسخة الأخيرة Salawat 2024.accde

    والرابط ده بتاع الصوت يا عسل 

    اسأل الله تعالى الرحمة والمغفرة لكم ولوالديكم ولأبى وأمى ولكل المسلمين
     

    طبعا انا بهزر معاك يا عسل بلاش شغل التلت ورقات وهات المرفق المفتوح بالتى هى احسن

    لا بجد والله انا بعتذر ، يبدو ان المشكلة في سيرفر الميديا فاير ، هرفع الملف تاني وارجو استبدال الرابط في المشاركة 😬

    • Thanks 1
  9. 12 ساعات مضت, nssj said:

    الإخوة الكرام .. السلام عليكم ورحمة الله وبركاته

    عندي جدول (BOOKS) فيه أحاديث كلها موجودة في الجدول الرئيسي (TAB)

    وأريد معرفة أماكنها في الجدول الرئيسي وربطها به عبر المفتاح الأساسي (MNO)

    وأريد دالة ذكية تسهل هذه المهمة إن أمكن

    والجيد في الأمر أنه ليس المطلوب هو البحث التقليدي: اختيار كلمة أو أكثر من الحديث في الجدول (BOOKS)  والبحث عنها في الجدول الرئيسي (TAB)

    الأمر بحمد الله أسهل .. على الأقل في تصوري

    المطلوب من الدالة أن تبحث عن رقم معين بعد نص معين

    * مثلا: في هذا الحديث من جدول (BOOKS)  :

     sm01.png.35f2cefe24e241fe8af5a13355cf797f.png

    المطلوب من الدالة أن تبحث في حقل (NASS) من الجدول الرئيسي (TAB) عن الحديث الذي فيه اسم الكتاب "مصنفات الحمامي" يليه الرقم (116)، واسم الكتاب من حقل (BookName)، والرقم من حقل (B_Hno)

    والحديث المطلوب هو في الجدول الرئيسي (TAB)

     sm02.png.74445d4bc8fcaa26d0cb74df07ceae3b.png

    ثم وضع الرقم (MNO) في جدول (BOOKS)

    وقد قمت أنا بوضع الأرقام الصحيحة المطلوبة في حقل (MNOX)

     * وغالبا ما يكون الرقم بعد اسم الكتاب مباشرة، ولكن قد يتأخر عنه في بعض المواضع، مثلا هذا الحديث في الجدول الرئيسي (TAB)

    sm03.png.62e0a921a1db47aacd73c6210b3f03aa.png

    فهذا الحديث موجود في جدول (BOOKS) في تسعة مواضع

    والدالة ستبحث انطلاقا من جدول (BOOKS)

    sm04.png.b4120dbce94a16468ea285a674d55f7f.png

    تبحث في حقل (NASS) من الجدول الرئيسي (TAB) عن الحديث الذي فيه اسم الكتاب "فوائد تمام" يليه رقم (168) وتضع رقمه، ثم تبحث مرة أخرى عن "فوائد تمام" يليه رقم (169) .. وهكذا

     

    * مع ملاحظة البحث عن الرقم كاملا، حتى لا يحصل خلط بين:

    فوائد تمام (312)   //   فوائد تمام (1312)

     

    أرجو أن أكون قد وفقت في شرح المطلوب

    ثم أرجو أن يكون بالإمكان عمل ذلك في أكسس لأن ذلك سيوفر لي الكثير من الوقت

    Smart_Search.accdb 456 kB · 3 downloads

    موضوع جميل مشوق ، يسعدني المشاركه مع الإخوة الأفاضل بأقرب فرصة 🤗

  10. 13 ساعات مضت, Ahmedbakheet said:

    مشكور على كود البحث واهلا وسهلا بحضرتك لكن زر البحث لا يعمل على المسار و pdf المستدعى للمسار وهناك مسار تقريبا يخص جهاز حضرتك مش  بيختفى المفروض اللى يظهر المسار المستدعى واسف على الاطاله وعدم سرعه الرد

     

    عملتهولك في هذه المشاركة 

    في 28‏/5‏/2024 at 09:58, Foksh said:

    ولأنك منتسب جديد في المنتدى ، في أي موضوع تقوم بنشره وقد حصلت على إجابة لموضوعك وطلبك يتوجب عليك إغلاق الموضوع باختيار أفضل إجابة للمشاركة التي كان فيها حل لمشكلتك وطلبك.

    وأهلاً بك مجدداً 🤗

     

    واليك تعديل بسيط بحيث يتم افراغ المسارات في الليست بوكس Text4 قبل استعراض مجلد آخر

    Private Sub cmdBrowse_Click()
        Me.Text4.RowSource = ""
    Dim sysFo, sysFi, foldry, filey As Object, i As String, X As Integer
        Set sysFo = CreateObject("Scripting.FileSystemObject")
         With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then
            Set sysFi = sysFo.GetFolder(Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1))
        Set foldry = sysFo.GetFolder(sysFi).Files
        For Each filey In foldry
            i = sysFo.GetAbsolutePathName(filey)
            i = UCase(i)
            Text4.AddItem (filey)
        Next
       End If
     End With
        Set sysFo = Nothing
        Set sysFi = Nothing
        Set foldry = Nothing
    End Sub

     

     

  11. 12 دقائق مضت, qathi said:

    اسمح لي استاذنا بهذه الملاحظة وارجو ان يكون يسع صدرك لي

     

    بداية الفكرة اللي في الملف تم حل مشكلة التعرف على الماسح الضوئي ؟؟ أم لا ؟؟؟؟؟؟
    ثم ممكن نحل هذه المشكلة التي ذكرتها

×
×
  • اضف...

Important Information