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

استعلام تحديث بشروط حسب القيمة


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

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

السلام عليكم 

لدي استعلام يقوم بتحديث حقل في جدول بناء على قيمة الحقل 

مثلا

القيمة بالجدول ناجح يتم تحديثها الى رقم 1

الى هنا الامور كلها تمام 

اريد اضع شروط اخرى للتحديث 

مثلا

اذا كانت قيمة الحقل فاشل  يتم تحديث الحقل الى رقم 2

اذا كانت قيمة الحقل Na يتم تحديث الحقل الى رقم 3

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

 

qryi.accdb

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

منذ ساعه, jjafferr said:

ايش رأيك بشرح مفيد عن الدالة iif ، وان شاء الله يساعدك في مرادك 

 

شكرا استاذ 

الشرح عن الدالةiif في محرر الاكواد vba 

الجهاز اللي راح اضع عليه البرنامج متصل بسيرفر 

لايقبل تنفيذ اي استعلام من خلال الكود 

لذلك محتاج تنفيذ التحديث من خلال الاستعلام مباشرة 

لو امكن المساعده في هذه الجزئية 

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

الشرح عن طريقة عمل الامر iif في الاستعلام ،

ولكني عملتها في VBA وكنت استطيع عملها في برنامج Notepad ، فقط لأشرح طريقة عملها بخطوات سهله ، ثم تجميعها (بحذف علامة _ )  وجعل الجملة في سطر واحد ، ثم اخذها الى الاستعلام 🙂

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

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

وبعد اذن استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @jjafferr :fff: تسهيلا على اخونا السائل 

على اعتبار ان الحقل اسمه ff

  • اولا باستخدام دالة Switch
Switch(IsNull(Trim([ff])),3,[ff]="Na",3,[ff]="ناجح",1,[ff]="فاشل",2)

 

  • ثانيا باستخدام دالة iif
IIf(IsNull(Trim([ff])),3,IIf([ff]="Na",3,IIf([ff]="ناجح",1,IIf([ff]="فاشل",2))))

 

وطبعا انا افضل دالة Switch لا يصير منها لخبطة مع كثرة عدد الحروف بالكود وبخاصة مع كثرة المتغيرات واستخدام الاحرف العربية اللى تشقلب الكود رأسا على عقب وتجيب لمحرر الاكواد صداع :biggrin:

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

1 ساعه مضت, ابو جودي said:

 تسهيلا على اخونا السائل 

تمام 

الدالتين ادت المطلوب 

فقط هناك ملاحظة 

لوكانت هناك قيمة بالجدول غير 

ناجح  فاشل  Na

يتم تحديثها الى فراغ 

انظر الصورة والمرفق 

ثpng.png

fr.rar

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

36 دقائق مضت, alsihran said:

تمام 

الدالتين ادت المطلوب 

فقط هناك ملاحظة 

لوكانت هناك قيمة بالجدول غير 

ناجح  فاشل  Na

يتم تحديثها الى فراغ 

انظر الصورة والمرفق 

ثpng.png

طيب انت اخدت الاجابة تفصيلا بالتمام والكمال بناء على طلبك :yes:
لم تذكر شئ عن قيم أخرى :eek2:

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

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

12 ساعات مضت, ابو جودي said:

طيب انت اخدت الاجابة تفصيلا بالتمام والكمال بناء على طلبك

كلامك صحيح استاذ

13 ساعات مضت, ابو جودي said:

الله يرضى عليك وعلى والديك الكرام 

جميعا ان شاء الله جزاك الله خير 

13 ساعات مضت, ابو جودي said:

ولا قدر الله ان تعثرت فى التطبيق فقط أخبرنى كل المتغيرات التى سوف يتم التعامل معاها لوضعها فى الحسبان

استاذي البيانات يتم استيرادها من ملف أكسل وهي نصوص احتمالية خطأ المستخدم  في ادخال النص المطلوب بالتحديد وارده بنسبة 50%

فلو كان هناك امكانية تحديث اي نص اخر غير   ناجح'    فاشل'   Na'    الى رقم 3 

شاكر ومقدر لك تعاونك 

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

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

 

مشاركة مع اخي ابو جودي 🙂

image.png.ffe199986a00c6e16a5f3da47ab96125.png

.

image.png.e7105ef819f2185d27afcf6d855aafcd.png

.

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

Function Get_R(txt As String) As String

    If txt = "نجاح" Then
        Get_R = 1
        
    ElseIf txt = "فشل" Then
        Get_R = 2
        
    ElseIf txt = "Na" Then
        Get_R = 3
        
    Else
        Get_R = 3
        
    End If
    
End Function

 

جعفر

fr.zip

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

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

مشاركة مع اخي ابو جودي

الله يعطيك العافية 

المشكلة معاااي ذكرتها في مشاركة سابقة 

20 ساعات مضت, alsihran said:

لجهاز اللي راح اضع عليه البرنامج متصل بسيرفر 

لايقبل تنفيذ اي استعلام من خلال الكود 

لذلك محتاج تنفيذ التحديث من خلال الاستعلام مباشرة 

شكل المسألة عويصه 😇

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

  • أفضل إجابة

سيدي الفاضل 🙂

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

 

في VBE او Notepad او الوورد او اي برنامج ، قم بتفكيك الامر iif الى سطور ، حتى يكون الامر سهل لك في فهم ما تقوم به ، وحتى الكلمات العربية ما تتداخل وسط الكود ويصبح الكود غير مفهوم :

image.png.9f079411e04e329378aae93e73bbd342.png

.



        IIf([ff] = "نجاح", 1, _
            IIf([ff] = "فشل", 2, _
            IIf([ff] = "Na", 3, _
            IIf([ff] <> "نجاح" And [ff] <> "فشل" And [ff] <> "Na", 3, ""))))
        
        
 IIf([ff] = "نجاح", 1, IIf([ff] = "فشل", 2, IIf([ff] = "Na", 3, IIf([ff] <> "نجاح" And [ff] <> "فشل" And [ff] <> "Na", 3, ""))))
        

.

وفي النهاية ، احذف العلامة _ وضع الكود في سطر واحد (اوقف على نهاية السطر الاول ، واحذف العلامة _ ، ثم انقر على زر Del على لوحة المفاتيح حتى يأتي السطر الثاني في نهاية السطر الاول ، ويبقى لدينا سطر واحد فقط ، والذي سنأخذ نسخة منه الى الاستعلام مباشرة)

Make_iif.thumb.gif.fd8f3d1fcd61208866157aa5339e6f84.gif

.

لاحظ في الاستعلام انه بالفعل قلب لنا المتغيرات والحقول ، بسبب اللغة العربية :

image.png.41785944f42200303c202ecaebd14adf.png

.

image.png.606e426a19dc25187c9b83779457c745.png

.

رجاء احتفظ بملف النص ZZ.txt ، فكلما اردن ان تعمل تعديل على معادلة الاستعلام ، اعملها في ملف النص ، ثم انسخها الى الاستعلام 🙂
اما انا ، فبدل ان يكون عندي ملف اضافي في هذا المشروع ، فأقوم بعمل هذه الخطوات في VBE (طبعا ما اناديها برمجيا ولا استعملها) ، واللي تكون جزء من البرنامج 🙂

 

جعفر

ZZ.zip fr.zip

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

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

سيدي الفاضل 🙂

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

الله يعطيك العافية استاذ 

عذراً منك لاني أسأت الفهم 

تمام شكرا لك 

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

في 14‏/11‏/2022 at 14:31, alsihran said:

الجهاز اللي راح اضع عليه البرنامج متصل بسيرفر 

لايقبل تنفيذ اي استعلام من خلال الكود 

أخي @alsihran لدي فضول حول هذه النقطة .. 🙂 

لماذا لا يقبل السيرفر تشغيل الأوامر البرمجية VBA ؟

هل بسبب تعطيل الصلاحيات من قبل فنيي الحاسب الآلي ؟

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

2 ساعات مضت, Moosak said:

لماذا لا يقبل السيرفر تشغيل الأوامر البرمجية VBA ؟

هل بسبب تعطيل الصلاحيات من قبل فنيي الحاسب الآلي ؟

نعم استاذنا الكريم 

تقوم ادارة تقنية المعلومات بالمنشأه بايقاف التعليمات البرمجية ( تنفيذ الاكواد البرمجية )

عن الاجهزة المرتبطة بالسيرفر الرئيسي في الفرع الرئيسي 

ومن ضمنها الاسكربت وتثبيت البرامج و . .و .. و الخ 

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

في 16‏/11‏/2022 at 11:14, jjafferr said:

والجواب على مشاركتي انا انا ، هل حلت المشكلة 🙂

 

نعم استاذ حلة المشكلة الى نوع ما 

لانه اذا اعدت تشغيل الاستعلام مره ثانية يقوم بتحويل رقم 1 ورق 2 الى رقم 3 حسب الشروط

تحياتي وتقديري شكرا لك 

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

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

من يقوم بهذا التحويل؟

عفواً 

اقصد تحديث 

نفسها جملة الاستعلام التي قمنا من خلالها بتحديث النصوص نجاح فشل Na الى ارقام 

عند تشغل الاستعلام مرة اخرى قوم بتحول رقم 1 و 2 الى رقم 3  

بسبب ان تشغيل الاستعلام مرة اخرى سيجد ان رقم 1 و 2 لاتساوي نجاح فشل يقوم بتحديثها الى رقم 3

هذه الجملة من الاستعلام المسؤولة عن الامر

IIf([ff] <> "نجاح" And [ff] <> "فشل" And [ff] <> "Na", 3,

 

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

اذا استعملنا اسماء الحقول اللي في ملفي (طبعا هذا جدول اخوي ابو جودي 🙂 )،

فنحن نتحقق من الحقل ff ، ولكننا نحدث حقل آخر ،

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

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

 

جعفر

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

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