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

عدم التكرار في استعلام الالحاق


ahmedabuzena
إذهب إلى أفضل إجابة Solved by jjafferr,

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

السلام عليكم ورحمة الله وبركاته عندي مشكلة فى استعلام الالحاق append query اذا ضغط علي الاستعلام يضيف كل الداتا وليس الداتا الجديدة فقط  في جدول (customer account sub dollar) وجزاكم الله خيرا

Database transfer 7 1 - Copy - Copy.accdb

رابط هذا التعليق
شارك

وعليكم السلام 🙂

 

يعني تريد الاستعلام "append query customer account sub dollar" يضيف ارقام الفواتير الغير موجودة في الجدول "customer account sub dollar" ؟

عندك طريقتين:

1. في الجدول "customer account sub dollar" اجعل حقل "رقم الفاتورة" مفهرس وغير قابل للتكرار ، وتشغل الاستعلام كما هو ،

او

2. نخبر الاستعلام ان يأتي بقيم ارقام الفواتير من الجدول "customer account sub dollar" :

Select [رقم الفاتورة] From [customer account sub dollar]

.

image.png.1988619da5b8ce8334e5e1435287579c.png

.

ثم في الاستعلام ، في معيار حقل "رقم الفاتورة" ، نطلب منه فلترة ارقام فاتورة الجدول وعدم عرضها Not In :

image.png.e4f4bc2040acddcb2a14e23d031db6d9.png

.

image.png.a921de4af23f01aa619cd9bbfa3df1a9.png

.

جعفر

1513.Not in.accdb.zip

رابط هذا التعليق
شارك

عندي استفسار فى ال criteria التاريخ بين تاريخين ممكن لخلي التاريخين يبقو بداخل فورم لسهولة تغير التاريخ لانه صعب على المستخدم انه يدخل على الاستعلام ويجعل الاستعلام في حالة design ليغير التاريخ لو ينفع يا ريت حد يبلغني 

رابط هذا التعليق
شارك

نعم ، وهذه هي الطريقة الصحيحة في العمل 🙂

 

اذا كان اسم النموذج frm_Main واسم التاريخ من: Date_From ، والتاريخ الى: Date_To

في الاستعلام ، نكتب المعيار التالي:

between Forms!frm_Main!Date_From and Forms!frm_Main!Date_To

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

الحمد لله 

في 19‏/5‏/2022 at 15:26, jjafferr said:

وعليكم السلام 🙂

 

موجود في الاستعلام

image.png.5786bac0cb2cd77d0c48124cd6f14fb0.png

.

والاستعلام جاهز للعمل 🙂

 

جعفر

شكرا استاذي الكبير جعفر 

الكبير كبير فعلا 

ربنا يزيدك من العلم كمان و كمان 

رابط هذا التعليق
شارك

59 دقائق مضت, ahmedabuzena said:

لم يعمل في الفورم

اخي الفاضل احمد 🙂

 

كيف ممكن هذي الكلمتين تساعدني لمعرفة الخطأ !!

 

لازم تعطيني معلومات اكثر ، علشان نقدر نساعدك ،

وبما انك ارفقت هذه الجزئية من برنامجك ، وانا شايف انك وضعت المعيار بالطريقة الصحيحة في الاستعلام ، فرجاء تعطيني تاريخين ، وتخبرني شو النتائج الصحيحة اللي لازم يعطينا الاستعلام.

 

جعفر

رابط هذا التعليق
شارك

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

بمعني الفورم [customer_account_$] لوحدة يعمل بدون مشاكل لكن لو اخذت الفورم وادخلته في فورم اخر[ customer_account_$22] اجد ان الكود لا يعمل فكيف اكتب الكود مرفق المثال للتوضيح

1513.Not in22.accdb

رابط هذا التعليق
شارك

55 دقائق مضت, jjafferr said:

الله ان شاء الله يطول عمرك اخوي احمد ، من الصورة اعلاه ارى ان اسم النموذج مو نفسه اللي اخبرتنا عنه !!

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

رابط هذا التعليق
شارك

14 ساعات مضت, jjafferr said:

وعليكم السلام 🙂

 

هذا اسم النموذج الفرعي:

image.png.3295f4b4fe114a99ec7ae7d4ead5f322.png

.

فتصبح الجملة:

Between [Forms]![customer_account_$22]![customer_account_main $]![Date_from] And [Forms]![customer_account_$22]![customer_account_main $]![Date_To]

 

جعفر

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

يعني هنا بيعطي رسالة بنقل اربع بيانات هل ممكن ان يعرض هذة البيانات اولا وهل ممكن ان اختار منها 

Capture111.PNG

رابط هذا التعليق
شارك

35 دقائق مضت, ahmedabuzena said:

1. اشتغل تمام ...

2. هل ممكن استعلام الالحاق يعرض الداتا قبل التنفيذ

3. وهل ممكن اختار من هذة الداتا ما اريد ان ينسخه فقط

4. ولا هو فقط ينقل كل شئ بين التاريخين بدون اي تغير

1. الحمدلله 🙂

4. بين التاريخين ، وعدم تكرار [رقم الفاتورة] من الجدول [customer account sub dollar] ، هذه مجرد معايير تصفية لبيانات السجلات التي تريد عرضها ، ويمكنك استعمال هذه المعايير لجميع انواع الاستعلامات ،

2. لعرض البيانات فقط ، اعمل نسخة من استعلام الالحاق اللي عندك ، وحوله الى استعلام Select ، واحفظه بإسم آخر ،

3. تقدر تعمل نموذج (انظر الخيارين في الاسفل) ، طريقة الاختيار تختلف لكل من الطريقتين ، والطريقة الثانية مشهورة واسهل 🙂 :

  • ويكون استعلام #2 اعلاه مصدر بيانات النموذج ، ومن البيانات اللي في النموذج تختار السجلات اللي تريد تلحقها بالجدول ،
  • ويكون بدون مصدر ، وبه تعمل ListBox مصدر بياناته #2 ، وتختار السجلات اللي تريد تلحقها بالجدول ،

 

جعفر

رابط هذا التعليق
شارك

25 دقائق مضت, jjafferr said:

1. الحمدلله 🙂

4. بين التاريخين ، وعدم تكرار [رقم الفاتورة] من الجدول [customer account sub dollar] ، هذه مجرد معايير تصفية لبيانات السجلات التي تريد عرضها ، ويمكنك استعمال هذه المعايير لجميع انواع الاستعلامات ،

2. لعرض البيانات فقط ، اعمل نسخة من استعلام الالحاق اللي عندك ، وحوله الى استعلام Select ، واحفظه بإسم آخر ،

3. تقدر تعمل نموذج (انظر الخيارين في الاسفل) ، طريقة الاختيار تختلف لكل من الطريقتين ، والطريقة الثانية مشهورة واسهل 🙂 :

  • ويكون استعلام #2 اعلاه مصدر بيانات النموذج ، ومن البيانات اللي في النموذج تختار السجلات اللي تريد تلحقها بالجدول ،
  • ويكون بدون مصدر ، وبه تعمل ListBox مصدر بياناته #2 ، وتختار السجلات اللي تريد تلحقها بالجدول ،

 

جعفر

لا تؤاخذني اخي جعفر انا مبتدئ في الاكسيس لم افهم ما شرحته ممكن لو تطبقها علي المثال حتي اقدر ان افهم كيفية الحل معليش تعبتك معايا وجزاكم الله خيرا

رابط هذا التعليق
شارك

السلام عليكم 🙂

 

تفضل :

لما تنقر على رقم 1 ، يفتح لك النموذج الآخر ،

تنقر على السجلات اللي تريد الحاقها (نقرة اخرى على السجلات لعدم اختياره) ،

ثم النقر على الزر 3 ، ليعمل الحاق السجلات ، ويخرج من النموذج

image.png.79a2c4e64549d8f4501a02da7ccdf033.png

.

هذا كود النموذج :

Option Compare Database
Option Explicit

Private Sub cmd_close_Click()

    DoCmd.close acForm, Me.Name, acSaveNo
End Sub

Private Sub cmd_Select_Click()
On Error GoTo err_cmd_Select_Click

    Dim items As Variant
    Dim myIN As String
    
    myIN = Empty
    For Each items In Me.lst_invoices.ItemsSelected
        myIN = myIN & "," & Me.lst_invoices.Column(0, items)
    Next items
    
    'Debug.Print Mid(myIN, 2)
    If Len(myIN & "") = 0 Then
        MsgBox "رجاء اختيار رقم الفاتورة من القائمة"
        Exit Sub
    End If

    Dim qdf As DAO.QueryDef
    Dim Replace_With As String, sqlString As String, Query_Name As String
    Dim pos_1 As Integer, pos_2 As Integer
    
    Query_Name = "append query customer account sub dollar ListBox"
    
    Set qdf = CurrentDb.QueryDefs(Query_Name)
    pos_1 = InStr(qdf.SQL, "In (") - 1
    pos_2 = InStr(pos_1, qdf.SQL, ")")
    Replace_With = "In (" & Mid(myIN, 2) & ")"
    sqlString = Mid(qdf.SQL, 1, pos_1) & _
                Replace_With & _
                Mid(qdf.SQL, pos_2 + 1)
    'Debug.Print sqlString
    qdf.SQL = sqlString

    DoCmd.SetWarnings False
        DoCmd.OpenQuery Query_Name
    DoCmd.SetWarnings True
    
    
Exit_cmd_Select_Click:

    Call cmd_close_Click
    Exit Sub
    
err_cmd_Select_Click:

    If Err.Number = 1 Then
            
    Else

        MsgBox Err.Number & vbCrLf & Err.Description
        Resume Exit_cmd_Select_Click
            
    End If
    
End Sub

.

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

 

جعفر

1513.1.Not in.accdb.zip

  • Like 1
رابط هذا التعليق
شارك

10 ساعات مضت, jjafferr said:

السلام عليكم 🙂

 

تفضل :

لما تنقر على رقم 1 ، يفتح لك النموذج الآخر ،

تنقر على السجلات اللي تريد الحاقها (نقرة اخرى على السجلات لعدم اختياره) ،

ثم النقر على الزر 3 ، ليعمل الحاق السجلات ، ويخرج من النموذج

image.png.79a2c4e64549d8f4501a02da7ccdf033.png

.

هذا كود النموذج :

Option Compare Database
Option Explicit

Private Sub cmd_close_Click()

    DoCmd.close acForm, Me.Name, acSaveNo
End Sub

Private Sub cmd_Select_Click()
On Error GoTo err_cmd_Select_Click

    Dim items As Variant
    Dim myIN As String
    
    myIN = Empty
    For Each items In Me.lst_invoices.ItemsSelected
        myIN = myIN & "," & Me.lst_invoices.Column(0, items)
    Next items
    
    'Debug.Print Mid(myIN, 2)
    If Len(myIN & "") = 0 Then
        MsgBox "رجاء اختيار رقم الفاتورة من القائمة"
        Exit Sub
    End If

    Dim qdf As DAO.QueryDef
    Dim Replace_With As String, sqlString As String, Query_Name As String
    Dim pos_1 As Integer, pos_2 As Integer
    
    Query_Name = "append query customer account sub dollar ListBox"
    
    Set qdf = CurrentDb.QueryDefs(Query_Name)
    pos_1 = InStr(qdf.SQL, "In (") - 1
    pos_2 = InStr(pos_1, qdf.SQL, ")")
    Replace_With = "In (" & Mid(myIN, 2) & ")"
    sqlString = Mid(qdf.SQL, 1, pos_1) & _
                Replace_With & _
                Mid(qdf.SQL, pos_2 + 1)
    'Debug.Print sqlString
    qdf.SQL = sqlString

    DoCmd.SetWarnings False
        DoCmd.OpenQuery Query_Name
    DoCmd.SetWarnings True
    
    
Exit_cmd_Select_Click:

    Call cmd_close_Click
    Exit Sub
    
err_cmd_Select_Click:

    If Err.Number = 1 Then
            
    Else

        MsgBox Err.Number & vbCrLf & Err.Description
        Resume Exit_cmd_Select_Click
            
    End If
    
End Sub

.

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

 

جعفر

1513.1.Not in.accdb.zip 451.34 kB · 6 downloads

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

1513.1.Not in final.accdb

رابط هذا التعليق
شارك

  • أفضل إجابة

وعليكم السلام 🙂

 

عملت حقل اختيار صح/خطأ ، تسميته "اختيار الكل" ، فلما تختاره ، يختار القائمة كاملة ، ولما تشيل الاختيار عنه ، يلغي اختيار القائمة ،

image.png.11930e89cf0de1d6df46cf42b7ed31d1.png

وهذا الكود يعمل اللازم :

Private Sub chk_Select_All_AfterUpdate()

    Dim i As Integer
    
    If Me.chk_Select_All = -1 Then
        
        'Selete All
        For i = 0 To Me.lst_invoices.ListCount - 1
            Me.lst_invoices.Selected(i) = True
        Next i
        
    Else
        
        'DeSelete All
        For i = 0 To Me.lst_invoices.ListCount - 1
            Me.lst_invoices.Selected(i) = False
        Next i
            
    End If
    
End Sub

.

وشفت عندك استعلام ما تريده يعرض عدد كبير من المعلومات ،

فعملت لك جدول خاص بالمعلومات اللي ما نريدها ، واضفت لك اسم/رقم المجموعة iGroup حتى تقدر تضيف معلومات لإستعلامات اخرى

image.png.e15a61ed46d4fe3a35c9d6d76460d589.png

.

فأصبح الاستعلام

image.png.2a205f1ef728f6c2db292d7caec4c58d.png

.

جعفر

1513.2.Not in final.accdb.zip

  • Like 3
رابط هذا التعليق
شارك

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