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

تحويل الحقول المحسوبه فى جدول الى حقول محسوبه فى استعلام


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

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

الجدول ده فيه مجموعه من الحقول المحسوبه 

حاولت كثيرا ان انقلها لاستعلام لكن بتظهر رساله الاستعلام معقد جدا

حاولت اقسم الجدول على عده استعلامات ... لم تنجح

وده بسبب ارتباط الحقول ببعضها ونتائج الحقول مرتبطه بحقول اخرى

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

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

استعلام حسابى.accdb

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

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

 

مستحيل ان تعمل الحقول يدويا ، لأن كمية الحقول عندك مهولة !!

فعملت كود علشان يعمل لي الوحدات النمطية ، وجملة SQL الاستعلام 🙂

تستطيع ان تحذف الجداول Data و Data2 ، انا تركتهم لك علشان تجرب الكود 🙂

 

يجب استعمال النموذج لتشغيل الاستعلام ، وإلا لن تحصل على نتائج الحقول المحسوبة في الاستعلام !!

 

هذا جزء من الوحدة النمطية الخاصة بالحقول المحسوبة:

Option Compare Database
Option Explicit

    Dim rst As DAO.Recordset
    Dim Calc1 As Long
    Dim Calc2 As Long
'

Function make_rst()

    Set rst = CurrentDb.OpenRecordset("Select * From Data")
End Function


Function f_nezara99(ID As Long)
    On Error Resume Next: rst.FindFirst "[ID]=" & ID
    f_nezara99 = IIf(rst![nezara] = 0, 0, IIf(rst![gazaat] >= 5, 0, rst![nezara]))
End Function


Function f_elawa_edafia(ID As Long)
    On Error Resume Next: rst.FindFirst "[ID]=" & ID
    f_elawa_edafia = IIf(rst![feaa] = "ادارى", 0, IIf(rst![Name] <> "", 4, 0))
End Function

 

جعفر

1364.استعلام حسابى.accdb.zip

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

هذه هي الخطوة الاولى ، وهي عزل الحقول من الجدول والحصول على النتيجة الصحيحة ،

والخطوة التالية ، هي ان تبدأ تأخذ الحقول الى الاستعلام ، حقلا حقلا ، وتحذف الدالة لهذا الحقل من الوحدة النمطية ،

وتُبقي الحقول اللي تعمل مشكلة في الاستعلام 🙂

 

جعفر

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

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

هذه هي الخطوة الاولى ، وهي عزل الحقول من الجدول والحصول على النتيجة الصحيحة ،

والخطوة التالية ، هي ان تبدأ تأخذ الحقول الى الاستعلام ، حقلا حقلا ، وتحذف الدالة لهذا الحقل من الوحدة النمطية ،

وتُبقي الحقول اللي تعمل مشكلة في الاستعلام 🙂

 

جعفر

استاذى الحبيب jjafferr

فعلت ما تفضلت به من شرح

وتم نسخ الحقول من الجدول ووضعها فى الاستعلام 

وحذف الجدولين data , data2

وحذفت الدالات الخاصه بهم من الوحده النمطيه 

لكن تبقى بعض الحقول مرتبطين بالوحده النمطيه 

لكن لا يظهر بهم بيانات

هذا الملف بعد التعديل ارجوا من حضرتك مراجعته

وفضلا اخبارى ماذا افعل حتى تظهر البيانات التى لا تظهر فى الاستعلام

حسابى معدل.rar

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

منذ ساعه, jjafferr said:

ووجدت ام جميع الحقول باللون الوردي غير موجودة في الجدول ، فكيف تتوقع نتيجة منها !!

هذه الحقول .... غير موجوده فى جدول data1 بالفعل ... لانها حقول حسابيه 

نتائجها متوقفه على حقول احرى حسابيه ايضا

وهى موجوده بالفعل فى الاستعلام ..... 

اما عدم ظهور النتائج ده اكيد بسبب حقل ما من الحقول التى لا يظهر بها نتائج

وباقى الحقول مرتبطه به

سوف اراجع مره اخرى.. واعلمك بالنتيجه

تحياتى واسف على الازعاج

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

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

للعلم: انا لا اوصي بإستخدام المادة 3 من طريقة عملي ادناه ، فقد تسبب بطئ في برنامجك !!

 

لما تحتاج الى حقول في الاستعلام ، طريقة العمل هي كالتالي:

  1. اعمل الاستعلام (مثلا qry_1) وفيه حقول الجدول ، بالاضافة الى بقية  الحقول المحسوبة التي ستحتاج اليها خقول محسوبة اخرى ،
  2. ثم اعمل استعلام (مثلا qry_2) ، ويكون مصدر الاستعلام هو qry_1 ، وتضع فيه بقية الحقول المحسوبة ،
  3. وستبقى بعض الحقول الغير موجودة في الاستعلام ، ولكننا نحصل على نتيجتها من الدالة في الوحدة النمطية ، فعليه ، ننادي هذه الدالة بدل اسم الحقل ، كمل هو موضح في الصورة:

image.png.2b34c8a536febbdf6a4bd2bf40cf44cf.png

.

وتشير في الدالة التالية الى هذا الاستعلام الاول :

Function make_rst()

    Set rst = CurrentDb.OpenRecordset("Select * From qry_1")
End Function

 

وننادي الاستعلام هكذا:

Private Sub cmd_qry_ALL_Click()

    Call make_rst
    DoCmd.OpenQuery "qry_2"
End Sub

 

جعفر

1364.1.حسابى معدل.accdb.zip

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

فيه طريقة اخرى خطرت على بالي ،

بحيث نرجع الى اول مرفق ، ونجعل جميع الحقول المحسوبة في وحدة نمطية ، 

تكون هناك دالة واحدة رئيسية وفيها جميع الحقول والمعادلات (وهذا سيعطينا المجال ان نفكك معادلات iif الى if ... then مما يجعلها اسرع) ، وهي تنادي Recordset الجدول ولمرة واحدة فقط لكل ID ، وتضع نتائج جميع هذه الحقول في اعلى الوحدة النمطية ، في متغير TempVar (او حتى في متغير عادي متوفرة قيمته للوحدة النمطية) ،

في الاستعلام ، هذه الحقول تنادي الدوال الخاصة بها ، والدوال تتأكد من مطابقة ID :

  1. فاذا كان جديد ، فيشغل الدالة الرئيسية حتى تعطي جميع النتائج الى المتغيرات ،
  2. اذا كانت نفسها ، فالدالة تعطي قيمة المتغير مباشرة الى الاستعلام.

 

فهم الكلام اصعب من فهم الموضوع نفسه 😁

جرب ، واعطنا النتيجة والكود لوسمحت ، وخلينا نستفيد من الكود 🙂

 

جعفر

 

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

في ٢٢‏/٣‏/٢٠٢١ at 11:42, jjafferr said:

فهم الكلام اصعب من فهم الموضوع نفسه 😁

اخى وصديقى العزيز .... ليس لدى خبره كافيه فى الاكواد ... على قدى 

ممكن اطمع فى مساعده اخيره من حضرتك لتنفيذ هذا الكود

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

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

اخوي احمد

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

لأنك عملت تغيير على معادلات المعادلات اللي كانت موجودة في اول مشاركة 🙂

 

جعفر

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

بسم الله ماشاء الله ولا قوه الا بالله

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

متابع فى صمت لاتعلم

 

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

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

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

لأنك عملت تغيير على معادلات المعادلات اللي كانت موجودة في اول مشاركة 🙂

جارى العمل.... تحياتى لشخكم الكريم

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

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