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

تعديل علي دالة Horizontal واضافة اكتر من متغير واحد


ابا حفص

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


 

Horizontal منذ فتره قام احد الافاضل ( منتصر الانسي ) بشرح هذا الكود كما هوا مرفق وهو خاص بتجميع عدد من السجلات في سجل واحد  .. وكنت اود التعديل عليه بادراج اكثر من متغير للدالة 

Public Function Horizontal(tabelle As String, Feld1 As String, Feld2 As String, valFeld1)

هذا سطر تعريف الدالة ومتغيراتها والتي تتمثل في اسم الجدول او الاستعلام , اسم الحقل المراد التجميع بحسبه , اسم الحقل الذي سيتم تجميعه , اسم الحقل الذي سيرتبط به حقل التجميع (وأعتقدانه يمكن فهمها

اكثر من واقع المثال)

 
Dim DB As Database, rs As Recordset

  Set DB = CurrentDb

هنا يتم تعريف متغيرين الأول من نوع Database أي قاعدة بيانات (وجعلناها قاعدة البيانات الحالية التي نعمل بها) والثاني rs من نوع Recordset وهذا النوع من المتغيرات وبشكل مبسط يمكن تعريفه كأنه جدول أو إستعلام

 
Set rs = DB.OpenRecordset("select distinct " & Feld2 & " from " & tabelle _

    & " where " & Feld1 & "='" & valFeld1 & "' order by " & Feld2)

هنا اسندنا للمتغير rs جملة SQL التي تمثل مصدر بياناته

 
Do

    If rs.AbsolutePosition = rs.BOF Then

هذه بداية الحلقة التكرارية التي ستتنقل بين سجلات الـ Recordset ثم تقوم جملة IF هنا بإختبار ما إذا كان موقع السجل الحالي (AbsolutePosition) في بداية (BOF) الـ Recordset

 
Horizontal = rs(Feld2)

عندها يجعل النتيجة تمثل قيمة الحقل المجمع

 
    Else

    Horizontal = Horizontal & ", " & rs(Feld2)

    End If

وإلا تكون النتيجة هي قيم الحقل المجمع في السجلات السابقة مضافاً اليها الفاصلة (ويمكن تعديلها بما تشاء) ثم قيمة الحقل المجمع للسجل الحالي

 
rs.MoveNext

الإنتقال للسجل التالي

 
Loop Until rs.EOF

إختبار ما إذا وصلت الحلقة التكرارية إلى آخر سجل (EOF) في الـ Recordset

 
   rs.Close

  DB.Close

  Set rs = Nothing

  Set DB = Nothing

  End Function

 

 

عندها يتم إغلاق الـ Recordset و الـ DB

وتصفية الذاكرة من أي قيم محفوظة فيها وإنهاء الدالة

 

 

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

التعديل عليه بادراج اكثر من متغير للدالة 

لم استطع الفهم 

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

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

https://www.officena.net/ib/topic/36136-تمت-الاجابة-تجميع-حقول-سجلات-في-سجل-واحد/

هذا هو الموضوع اللذي اشير اليه ومرفق لسيادتكم المديول في مثال

 في Query2 يتم التجميع طبقا لمتغير واحد فقط وهو رقم المشروع او ( PRID )

في Query3 من المفترض ان يتم التجميع طبقا لمتغييرين اتنين وهو ما اريد اضافته ( PRID ) و (تاريخ المعاينه ) )

Horizontal.rar

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

code الصورة الاولي - هي للاستعلام الاول الاساسي اللي اريد تجميع الخليه المسماه

... في خليه واحده

code صورة الثانيه - هي نتيجة الداله وتجميع الخليه

طبقا لمتغير PRID

الصورة الثالثه - هي ما اريد ولكن النتايج المظلله هي نتائج خاطئة لا اريد وجودها

اريد اضافة متغير اخر مع المتغير الموجود لفلترة النتائج طبقا للتاريخ 

1.PNG

2.PNG

3.PNG

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

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

عموما تفضل التعديل 

  Optional NewLine As String = ", ") As String

استبدله هذا السطر 

بالسطر الموجود في الوحدة النمطية

واخبرني بالنتيجة

 

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

النتيجة رائعه وممتازه ... جزاك الله خير يا سيدي الفاضل

اسمح لي سيدي الفاضل AlwaZeeR 

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

ان تشرح لي ماذا فعلت لكي اتعلم مستقبلا

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

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

  • 2 months later...

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