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

الردود الموصى بها

قام بنشر

سلام الله عليكم ورحمته وبركاته

في البداية احب ارحب لك الاعضاء المحترمين الذي جذبني الرقي في الرد على استفسارات من له سؤال 

كم تمنيت ان تسمح لي الظروف انضمن الى هذا المنتدي الاكثر من رائع من زمن ولكن قدر الله وماشاء فعل 
سوالي :
لدي قاعدة بيانات تحتوي على عدد نصف مليون سجل 
تم تنفيذ برنامج واستعلام وواجهة وكل شيء ولكن كل شيء عن طريق المايكرو لاني لست ضليع في الفاجوال بيزك 
مشكلتي تكمن في بطئ الاستعلام بطريقة تجعلني اكره بالبحث او استعمال البرنامج 

جربت اكثر من طريقة ولكن دون جدوى 
اريد حل لهذا المشكلة مع العلم مربعات البحث 8 فقط 
وهي الاسم 
الاسم الاول 
الاسم الثاني 
الاسم الثالث 
الرابع 
العائلة 
المنطقة 
المحافظة 
النوع ( ذكر او انثي) 
تم ارفاق نسخه من نموذج البحث فقط نظرا لخصوصية المعلومات وسريتها 
من يريد ان يساعد جزاه الله الف خير وبميزان حسناته 

 

0.accdb

قام بنشر

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

مرحبا اخي الكريم وارجو من الله ان تفيد وتسفيد في منتدانا الرائع

من فضلك اخي الكريم ارفق الجداول الاساسية فقط وبها بيان واحد فقط ليتم التعديل حسب احتياجات البرنامج

تحياتي

  • Like 1
قام بنشر

اولا اشكرك على ذوقك واستجابتك السريعة استاذي الفاضل محمد ابو عبدالله انا بحاول ارسل لحضرتك الملف ولكن الحجم مش قابله الموقع هو حجمه 3.50 ميجا بايت بعد الضغط 

قام بنشر

السلام عليكم

اخي الكريم وضعت لك عدد 2 زر امر للبحث بطريقتين

الاثنين يعملان بكفاءة باذن الله

ولكني احتجت الى تغيير اسماء الحقول حتى استطيع احصل على نتيجة سريعة للبحث

كت انشأت الجداول الفرعية المساعدة ( المنطقة - النوع )

الكود الاول وهو يستخدم فلتر للنموذج الفرعي

    myCriteria = myCriteria & "("
    myCriteria = myCriteria & "[tblSearch].[X1]= '" & Me.X1 & "'"
    myCriteria = myCriteria & " or "
    myCriteria = myCriteria & "[tblSearch].[X2]= '" & Me.X2 & "'"
    myCriteria = myCriteria & " or "
    myCriteria = myCriteria & "[tblSearch].[X3]= '" & Me.X3 & "'"
    myCriteria = myCriteria & " or "
    myCriteria = myCriteria & "[tblSearch].[X4]= '" & Me.X4 & "'"
    myCriteria = myCriteria & " or "
    myCriteria = myCriteria & "[tblSearch].[X5]= '" & Me.X5 & "'"
    myCriteria = myCriteria & " or "
    myCriteria = myCriteria & "[tblSearch].[X6]= '" & Me.X6 & "'"
    myCriteria = myCriteria & " or "
    myCriteria = myCriteria & "[tblSearch].[X7]= '" & Me.X7 & "'"
    myCriteria = myCriteria & " or "
    myCriteria = myCriteria & "[tblSearch].[X8]= '" & Me.X8 & "'"
    myCriteria = myCriteria & " or "
    myCriteria = myCriteria & "[tblSearch].[X9]= '" & Me.X9 & "'"
    myCriteria = myCriteria & ")"


    Debug.Print myCriteria
    Me.Search2.Form.Filter = myCriteria
    Me.Search2.Form.FilterOn = True

 

الكود الثاني يعتمد على Sql

    Dim mySqL               As String
    Dim mySQLWhere     As String
    Dim strSQL               As String
    Dim SqLK                As String

    SqLK = " AND "
    mySqL = "SELECT * FROM tblSearch "

    If Len(Me.X1 & vbNullString) Then
       mySQLWhere = "WHERE [X1] Like " & Chr$(39) & "*" & Me.X1 & "*" & Chr$(39)
    End If

    If Len(Me.X2 & vbNullString) Then
       mySQLWhere = "WHERE [X2] Like " & Chr$(39) & "*" & Me.X2 & "*" & Chr$(39)
    End If

    If Len(Me.X3 & vbNullString) Then
       mySQLWhere = "WHERE [X3] Like " & Chr$(39) & "*" & Me.X3 & "*" & Chr$(39)
    End If

    If Len(Me.X4 & vbNullString) Then
       mySQLWhere = "WHERE [X4] Like " & Chr$(39) & "*" & Me.X4 & "*" & Chr$(39)
    End If

    If Len(Me.X5 & vbNullString) Then
       mySQLWhere = "WHERE [X5] Like " & Chr$(39) & "*" & Me.X5 & "*" & Chr$(39)
    End If

    If Len(Me.X6 & vbNullString) Then
       mySQLWhere = "WHERE [X6] Like " & Chr$(39) & "*" & Me.X6 & "*" & Chr$(39)
    End If

    If Len(Me.X7 & vbNullString) Then
       mySQLWhere = "WHERE [X7] Like " & Chr$(39) & "*" & Me.X7 & "*" & Chr$(39)
    End If

    If Len(Me.X8 & vbNullString) Then
       mySQLWhere = "WHERE [X8] Like " & Chr$(39) & "*" & Me.X8 & "*" & Chr$(39)
    End If

    If Len(Me.X9 & vbNullString) Then
       mySQLWhere = "WHERE [X9] Like " & Chr$(39) & "*" & Me.X9 & "*" & Chr$(39)
    End If


    strSQL = mySqL & mySQLWhere
    Debug.Print strSQL


    Me.Search2.Form.RecordSource = strSQL
    Me.Search2.Requery

بالمناسبة اضفت مليون سجل ونفذت الامر بالطريقتين والحمد لله النتائج ممتازة ثواني قليلة فقط

003.rar

تحياتي

  • Like 1
قام بنشر

طيب بالنسبة لاستيراد البيانات 
لازم اغير اسماء الحقول في جدول الاكسيل

 

قام بنشر
الان, naseralmaky said:

لازم اغير اسماء الحقول في جدول الاكسيل

وضع لك اسماء الحقول التي تم تغييرها في حقل العنوان في الجدول

انظر اليه حتى لا يختلط عليك الامر لا قدر الله

تحياتي

قام بنشر (معدل)

تسلم ايدك استاذي الفاضل 
بصراحة لم اتوقع سرعة في البحث مثل كده ابدا فعلا البحث سريع جدا جدا
ولكن واجهتني 3 مشاكل 
1- عند البحث (Cmd02) هو فقط الذي يعمل زر البحث الثاني لايعمل 
2- لما  تغيرت اسماء الحقول في بيانات كثيرة مش عارف اضبطها مثل رقم القيد بقي هو ID ودي مشكلة لان رقم القيد حقل اساسي 
3- كنت عامل استعلام ووبناء عليه كنت بطبع التقارير او نتائج البحث الي تظهر حاليا يعطيني خطا لان الاستعلام المبني عليه ليس موجود

لو امكن اتواصل معك خاص ؟

تم تعديل بواسطه naseralmaky
قام بنشر
1 ساعه مضت, naseralmaky said:

1- عند البحث (Cmd02) هو فقط الذي يعمل زر البحث الثاني لايعمل 

بالفعل كان محتاج ضبط اكثر

تفضل الكود امن جديد

    Dim myCriteria As String
    myCriteria = Null
 
   If Not IsNull(Me.X1) Then
     myCriteria = "[X1] LIKE '*" & Me.X1 & "*'"
   End If
   
   If Not IsNull(Me.X2) Then
      myCriteria = (myCriteria + " AND ") & "[X2] LIKE '*" & Me.X2 & "*'"
   End If
  
   If Not IsNull(Me.X3) Then
     myCriteria = (myCriteria + " AND ") & "[X3] LIKE '*" & Me.X3 & "*'"
   End If
  
   If Not IsNull(Me.X4) Then
     myCriteria = (myCriteria + " AND ") & "[X4] LIKE '*" & Me.X4 & "*'"
   End If
  
   If Not IsNull(Me.X5) Then
     myCriteria = (myCriteria + " AND ") & "[X5] LIKE '*" & Me.X5 & "*'"
   End If

   If Not IsNull(Me.X6) Then
      myCriteria = (myCriteria + " AND ") & "[X6] LIKE '*" & Me.X6 & "*'"
   End If
   
   If Not IsNull(Me.X7) Then
      myCriteria = (myCriteria + " AND ") & "[X7] LIKE '*" & Me.X7 & "*'"
   End If
   
   If Not IsNull(Me.X8) Then
     myCriteria = (myCriteria + " AND ") & "[X8] LIKE '*" & Me.X8 & "*'"
   End If
  
   If Not IsNull(Me.X9) Then
     myCriteria = (myCriteria + " AND ") & "[X9] LIKE '*" & Me.X9 & "*'"
   End If
   
    Me.Search2.Form.Filter = myCriteria
    Me.Search2.Form.FilterOn = True

 

1 ساعه مضت, naseralmaky said:

2- لما  تغيرت اسماء الحقول في بيانات كثيرة مش عارف اضبطها مثل رقم القيد بقي هو ID ودي مشكلة لان رقم القيد حقل اساسي 

لا مشكلة الآن ممكن نعمل على الاسماء الخاصة بك بدون مشاكل ان شاء الله

1 ساعه مضت, naseralmaky said:

3- كنت عامل استعلام ووبناء عليه كنت بطبع التقارير او نتائج البحث الي تظهر حاليا يعطيني خطا لان الاستعلام المبني عليه ليس موجود

اذا كانت المشكلة في اسماء الحقول فيمكن تغيرها حسب ما كانت عليه او بالشكل الجديد بجون مشاكل ان شاء الله

1 ساعه مضت, naseralmaky said:

لو امكن اتواصل معك خاص ؟

بالخدمة اخي الكريم

تحياتي

قام بنشر

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

قام بنشر
3 ساعات مضت, naseralmaky said:

بس ممكن تعرفني كود يطبع نتائج البحث 

يمكنك استخدام نفس الكود واستبدال السطرينن الاخيرين فقط بـ

    stDocName = "rep1"
    DoCmd.OpenReport stDocName, acPreview, , strSQLWhere

واستبدال  السطرينن الاخيرين  في الكود الاخير بـ

    stDocName = "rep1"
    DoCmd.OpenReport stDocName, acPreview, , myCriteria

تحياتي

قام بنشر

اشواقي لك ابو عبدالله المحترم

شاكر مجهودك وسرعتك في الرد جزاك الله عنا كل خير وبميزان حسناتك انشاء الله

بس عملت ذي ماحضراك قولت وللاسف والله ماضبط نهائي بيطلع لي رسالة انه في خطا في الكود والبرنامج بيوقف عن العمل 
ارفقت لحضرتك نسخة لو امكن الاطلاع عليها ولو امكن ولا عليك امر طبعا 
مربعات البحث اريد عند الكتابه بها سواء الاسم الاول او الثاني او 3 مربعات بحث في نفس الوت يظهر النتيجة وليس نتيجة مربع اوحد فقط 003.zip

ولو امكن ممكن نتواصل بشكل خاص اذا في مجال 
عن طريق الايميل او الهاتف 
اذا محتاجك في شغل 

قام بنشر

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

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

الكود الجديد الآن يمكن التحكم بناتج البحث متاطبق وغير متاطابق (جزء من الاسم ) وذلك عن طريق المتغير chk

ويمكن التحكم بقيمة المتغير كالتالي

    chk = 0     غير متطابق
    chk = 1     متطابق

والان كود البحث كالتالي


On Error Resume Next

    Dim mySqL               As String
    Dim mySQLWhere    As String
    Dim mySqLAnd         As String
    Dim chk As Integer
    
    ' ÛíÑ ãÊØÇÈÞ
'    chk = 0
    ' ãÊÇØÇÈÞ
    chk = 1
    
    mySqLAnd = " AND "
    mySqL = "SELECT * FROM tblSearch "
    
    If Len(Me.X1 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X1] Like " & Chr$(39) & "*" & Me.X1 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X1] = " & Chr$(39) & Me.X1 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    If Len(Me.X2 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X2] Like " & Chr$(39) & "*" & Me.X2 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X2] = " & Chr$(39) & Me.X2 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
   
       
    If Len(Me.X3 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X3] Like " & Chr$(39) & "*" & Me.X3 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X3] = " & Chr$(39) & Me.X3 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    
    If Len(Me.X4 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X4] Like " & Chr$(39) & "*" & Me.X4 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X4] = " & Chr$(39) & Me.X4 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X5 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X5] Like " & Chr$(39) & "*" & Me.X5 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X5] = " & Chr$(39) & Me.X5 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X6 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X6] Like " & Chr$(39) & "*" & Me.X6 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X6] = " & Chr$(39) & Me.X6 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X7 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X7] Like " & Chr$(39) & "*" & Me.X7 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X7] = " & Chr$(39) & Me.X7 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X8 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X8] Like " & Chr$(39) & "*" & Me.X8 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X8] = " & Chr$(39) & Me.X8 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X9 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X9] Like " & Chr$(39) & "*" & Me.X9 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X9] = " & Chr$(39) & Me.X9 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If

    If Len(mySQLWhere) Then
        mySQLWhere = Left$(mySQLWhere, Len(mySQLWhere) - (Len(mySqLAnd) - 1))
    End If

    Me.Search2.Form.Filter = mySQLWhere
    Me.Search2.Form.FilterOn = True
    

وكود الطباعة كالتالي


On Error Resume Next

    Dim stDocName        As String
    Dim mySqL               As String
    Dim mySQLWhere     As String
    Dim mySqLAnd         As String
    Dim chk                    As Integer
    
    ' ÛíÑ ãÊØÇÈÞ
'    chk = 0
    ' ãÊØÇÈÞ
    chk = 1
    
    mySqLAnd = " AND "
    mySqL = "SELECT * FROM tblSearch "
    
    If Len(Me.X1 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X1] Like " & Chr$(39) & "*" & Me.X1 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X1] = " & Chr$(39) & Me.X1 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    If Len(Me.X2 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[x2] Like " & Chr$(39) & "*" & Me.X2 & "*" & Chr$(39)
        Else
            mySQLWhere = "[x2] = " & Chr$(39) & Me.X2 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
   
       
    If Len(Me.X3 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X3] Like " & Chr$(39) & "*" & Me.X3 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X3] = " & Chr$(39) & Me.X3 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    
    If Len(Me.X4 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X4] Like " & Chr$(39) & "*" & Me.X4 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X4] = " & Chr$(39) & Me.X4 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X5 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X5] Like " & Chr$(39) & "*" & Me.X5 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X5] = " & Chr$(39) & Me.X5 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X6 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X6] Like " & Chr$(39) & "*" & Me.X6 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X6] = " & Chr$(39) & Me.X6 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X7 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X7] Like " & Chr$(39) & "*" & Me.X7 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X7] = " & Chr$(39) & Me.X7 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X8 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X8] Like " & Chr$(39) & "*" & Me.X8 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X8] = " & Chr$(39) & Me.X8 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(Me.X9 & vbNullString) Then
        If (chk) Then
            mySQLWhere = "[X9] Like " & Chr$(39) & "*" & Me.X9 & "*" & Chr$(39)
        Else
            mySQLWhere = "[X9] = " & Chr$(39) & Me.X9 & Chr$(39)
        End If
           mySQLWhere = mySQLWhere & mySqLAnd
    End If
    
    
    If Len(mySQLWhere) Then
        mySQLWhere = Left$(mySQLWhere, Len(mySQLWhere) - (Len(mySqLAnd) - 1))
    End If
 
  Debug.Print mySQLWhere
  
    Me.Visible = False
    stDocName = "rep1"
    DoCmd.OpenReport stDocName, acPreview, , mySQLWhere

003.zip

تحياتي

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information