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

استعلام تغيير و تحديث من خلال جدول ( 2 )


إذهب إلى أفضل إجابة Solved by محمد احمد لطفى,

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

فى هذا النموذج ونقلا من أستاذى kanory  فى موضوع سابق

 

- البحث عن العبارة او العبارات في الجدول سواءا كانت تلك العبارة في بداية النص او وسطها او نهايتها ومقارنتها بالجدول الاخر لجلب المرادف لها .

- حذف تلك العبارة من الجدول نهائيا ......
البرنامج يعمل و لكن هناك مشكلتين 
أولا مع زيادة عدد الانشطة أصبح بطىء  فالمطلوب ايجاد حل لتسريعه 

ثانيا هناك مشكله تحدث 
مثلا فى جدول KindX 
هناك مثلا مقاولات 
            و للمقاولات 

المطلوب اذا وجد مقاولات ينقل مقاولات 
           و اذا وجد للمقاولات ينقل للمقاولات 
و لكنه اذا وجد للمقاولات ينقل مقاولات و يترك حرفين ال فى الجدول tabletx حقل namex
التشغيل من خلال استعلام 1
اذا كان هناك شيىء غير مفهوم يرجى التوضيح .


الموضوع السابق


وجزاكم الله كل خير

 

Replace&add.rar

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

بالنسبة للمشكلة الثانية ممكن ربطها بحقل id و يعمل حسب الترتيب 

يعنى مثلا نجعل

للمقولات
id 5
و مقاولات 
id 6

و عند عمل البرنامج اذا وجد للمقولات ينقل للمقولات مباشرة 
و اذا و جد مقولات ينقل مقاولات لأنه لم يجد للمقاولات اذا مشى بترتيب id 
هذه فكرة قد تكون صحيحة و قد تكون خاطئة 

                                                                                                    :wink2:

 

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

محاولة تعمل فى اول الجملة فقط يرجى النظر الى الوحدة النمطية 
تم تغير الوحدة النمطية
 

Replace&add.rar

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

أعتقد أن هذا الاستعلام هو من يبطىء العمل 
 

UPDATE (TableX INNER JOIN qy_kan ON TableX.NameX = qy_kan.NameX) LEFT JOIN KindX ON qy_kan.Expr2 = KindX.LikeB SET TableX.NameX = Replace([TableX].[NameX],[LikeA],""), TableX.KindX = [KindX].[LikeB]
WHERE (((qy_kan.Expr2)<>""));

 

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

أكرر هذا الاستعلام هو من يبطىء العمل كيف يمكن تغييره و يصبح اسرع
متابع :biggrin:

 

UPDATE (TableX INNER JOIN qy_kan ON TableX.NameX = qy_kan.NameX) LEFT JOIN KindX ON qy_kan.Expr2 = KindX.LikeB SET TableX.NameX = Replace([TableX].[NameX],[LikeA],""), TableX.KindX = [KindX].[LikeB]
WHERE (((qy_kan.Expr2)<>""));
رابط هذا التعليق
شارك

تحديث
تم اضافة id لعدم تكرار السجلات فى استعلام التحديث ومازل هناك تكرار 
 

UPDATE TableX INNER JOIN (qy_kan LEFT JOIN KindX ON qy_kan.Expr2 = KindX.LikeB) ON TableX.id = qy_kan.id SET TableX.NameX = Replace([TableX].[NameX],[LikeA],""), TableX.KindX = [KindX].[LikeB]
WHERE (((qy_kan.Expr2)<>""));

عدد السجلات المطلوب تحديثها  234
عدد سجلات استعلام التحديث السابق 10816
عدد سجلات استعلام التحديث الجديد  416   مازال هناك 182 متكرر
طبعا ده سرع الامر من 10816 الى 416

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

 

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

3 ساعات مضت, محمد احمد لطفى said:

عدد السجلات المطلوب تحديثها  234
عدد سجلات استعلام التحديث السابق 10816
عدد سجلات استعلام التحديث الجديد  416   مازال هناك 182 متكرر
طبعا ده سرع الامر من 10816 الى 416

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

طيب جرب ده ......

UPDATE DISTINCTROW (TableX INNER JOIN qy_kan ON TableX.NameX = qy_kan.NameX) LEFT JOIN KindX ON qy_kan.Expr2 = KindX.LikeB SET TableX.NameX = Replace([TableX].[NameX],[LikeA],""), TableX.KindX = [KindX].[LikeB] WHERE (((qy_kan.Expr2)<>""));

 

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

أستاذى @kanory
ربنا ريباركلك و يحفظك 
المشكلة الثانية
انه بمراجعة الاستعلام qy_kan كل شيء تمام
أما بخصوص الاستعلام 1 التنفيذ هناك بعض الانشطة تنقل خطأ ومرفق ملف اكسس و ملف اكسل به الانشطة الخطا 
حيث 
namex لا يمسح بعض الحروف و الكلمات
kinedx لا ينقل بطريقة صحيحة او ينقل جزء من الكلام 



 

Replace&add.rar

Screenshot (1).png

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

2 ساعات مضت, محمد احمد لطفى said:

namex لا يمسح بعض الحروف و الكلمات
kinedx لا ينقل بطريقة صحيحة او ينقل جزء من الكلام 

لأن هناك عبارات موجود في الجدول namex وغير موجودة بمرادفها في الجدول kinedx  لذلك لا تنقل بالشكل الصحيحة .... عليك اضافة كل العبارات الموجودة في الجدول namex والمطلوب تحديثها ثم حذفها في الجدول kinedx     انظر الصورة وعدم وجود هذه العبارة في الجدول kinedx

 

1.png

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

أستاذى @kanory

بالفعل تم اضافة نشاط للطوب الطفلى و نقل طوب الطفلى 
و تم جعل حقل likea = likeb 
للطوب الطفلى = للطوب الطفلى
و نقل بالفعل للطوب الطفلى و مسح للطوب الطفلى من الاسم و المفترض مسح الاسم (namex) likea و ليس likeb

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

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

Screenshot (3).png

 

Screenshot (5).png

Replace&add.rar

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

في 23‏/11‏/2023 at 01:51, محمد احمد لطفى said:

و نقل بالفعل للطوب الطفلى و مسح للطوب الطفلى من الاسم و المفترض مسح الاسم (namex) likea و ليس likeb

لم افهم جيدا هذه !!! ؟؟؟؟

في 23‏/11‏/2023 at 01:51, محمد احمد لطفى said:

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

ممكن اسماء مجموعة من تلك الانشطة التي لم يتم تعديلها او فيها خطأ 

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

أستاذى @kanory
ما اقصده أن نشاط للطوب الطفلى موجود بالفعل فى حقل likea
وقمت ايضا بكتابته فى likeb
و تم مسح للطوب الطفلى من حقل namex

حاليا قمت باضافة 

 

   If Nz(DLookup("LikeA", "KindX", "LikeA='" & Trim(Arr(i)) & " " & Trim(Arr(i + 1)) & " " & Trim(Arr(i + 2)) & " " & Trim(Arr(i + 3)) & " " & Trim(Arr(i + 4)) & " " & Trim(Arr(i + 5)) & " " & Trim(Arr(i + 6)) & " " & Trim(Arr(i + 7)) & "'"), 0) <> 0 Then
      FnSearch = DLookup("LikeB", "KindX", "LikeA='" & Trim(Arr(i)) & " " & Trim(Arr(i + 1)) & " " & Trim(Arr(i + 2)) & " " & Trim(Arr(i + 3)) & " " & Trim(Arr(i + 4)) & " " & Trim(Arr(i + 5)) & " " & Trim(Arr(i + 6)) & " " & Trim(Arr(i + 7)) & "'")
      Exit For
  ElseIf Nz(DLookup("LikeA", "KindX", "LikeA='" & Trim(Arr(i)) & " " & Trim(Arr(i + 1)) & " " & Trim(Arr(i + 2)) & " " & Trim(Arr(i + 3)) & " " & Trim(Arr(i + 4)) & " " & Trim(Arr(i + 5)) & " " & Trim(Arr(i + 6)) & "'"), 0) <> 0 Then
      FnSearch = DLookup("LikeB", "KindX", "LikeA='" & Trim(Arr(i)) & " " & Trim(Arr(i + 1)) & " " & Trim(Arr(i + 2)) & " " & Trim(Arr(i + 3)) & " " & Trim(Arr(i + 4)) & " " & Trim(Arr(i + 5)) & " " & Trim(Arr(i + 6)) & "'")
      Exit For


فتم تصحيح جزء من الخطأ فى الصورة 1 ( هذه الصورة قبل اضافة الكود بالاعلى )

وتبقى جزء صغير فى الصورة 2



 

Screenshot (5).png

 

Screenshot (6).png

 

Replace&add.rar

تم تعديل بواسطه محمد احمد لطفى
رابط هذا التعليق
شارك

  • أفضل إجابة

استاذى @kanory

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

1 - تم تحديث النشاط مباشرة بدالة FnSearch بعد أن تم تغييرها الى likeA و ليس likeB اى ما سيتم نقله هو likeA

2 - تم مسح النشاط من حقل namex

                    

Replace([TableX].[NameX],[LikeA],"""");"

3 - تم تحديث النشاط  الى LikeB

اذا كان هناك شيىء خاطىء أو لم انتبه اليه يرجى اعلامى 


                                                                                                           وجزاكم الله كل خير  :clapping:

قد لمعت عيناه

 

Replace&add Final.mdb

تم تعديل بواسطه محمد احمد لطفى
  • 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