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

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

قام بنشر
45 دقائق مضت, عبد الله قدور said:

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

الاکسل بيعمل جمع بواسطة اي دي السطور من رقم 1 الى اخره و مع السماء الحقول من a الى اخره
لذلك حضرتك ايضا يقدر عمل ذلك لكن بنفس الطريقة
تقدر تستخدم DSum وتعطيه شرط من اي دي فلان الى فلان
هذا حسب ما فهمت من السؤال 

 

  • Like 1
  • Thanks 1
قام بنشر (معدل)
9 دقائق مضت, رمهان said:

هات مرفق للتطبيق

تحياتي

قاعدة البيانات1.accdb2018-10-27_16h15_47.png.3d7e34cfb17780f9c3c41108c1d90f6c.png

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

تم تعديل بواسطه عبد الله قدور
قام بنشر

الحل عن طريق ثلاث خصائص للنموذج

seltop

selheight

selwidth

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

تحياتي

قام بنشر

السلام عليكم

مصدر الكود هو :

https://bytes.com/topic/access/answers/940764-count-selected-record-datasheet

قمت بالتعديل عليه و إضافته إلى نموذج من نوع داتاشيت و إضافته كنموذج فرعي عندي 

قمت بمباشرة العمل فور مُشاهدتي لسؤالك لذا لم يتح لي رؤية الردود و المرفق 

الكود بعد التعديل :

' في حدث mouseup 
من النموذج  بصيغة داتا شيت الذي سنأخذ منه النموذج الفرعي الذي سنضمه 

FORMS![النموذج الرئيسي]![counter] = me.selheight

 

  • Like 1
قام بنشر
3 ساعات مضت, عبد الله قدور said:

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

انا عملت المطلوب بطريقة اخر عن ما اخبرك استاذ @رمهان و @Khalf
بواسطة هذا الكود ستحدد الحقول المراد جمعه في نموذج الفرعي

Option Compare Database
Public MyCountFelid As Integer
Public Sub MyActiveCon()
    Dim Spl() As String
    Dim i As Integer
    If IsNull(Form_Frm.MyList) = True Then
        Form_Frm.MyList = Me.ActiveControl.Name
        MyCountFelid = 1
    Else
    Spl = Split(Form_Frm.MyList, "-")
    For i = 0 To MyCountFelid - 1
    If Spl(i) = Me.ActiveControl.Name Then Exit Sub
    Next i
        Form_Frm.MyList = Form_Frm.MyList & "-" & Me.ActiveControl.Name
        MyCountFelid = MyCountFelid + 1
    End If
    Form_Frm.EdedAlhiqol = MyCountFelid
End Sub
Private Sub item1_DblClick(Cancel As Integer)
    Call MyActiveCon
End Sub
Private Sub item2_DblClick(Cancel As Integer)
    Call MyActiveCon
End Sub
Private Sub item3_DblClick(Cancel As Integer)
    Call MyActiveCon
End Sub
Private Sub item4_DblClick(Cancel As Integer)
    Call MyActiveCon
End Sub
Private Sub item5_DblClick(Cancel As Integer)
    Call MyActiveCon
End Sub

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

 

Option Compare Database
Private Sub Command16_Click()
    Dim MYSum As Long
    Dim Spl() As String
    Dim i As Integer
    Spl = Split(Me.MyList, "-")
    For i = 0 To Me.EdedAlhiqol - 1
    MYSum = MYSum + Nz(DSum("[" & Spl(i) & "]", "table1", "[id]>=" & Me.FromID & "and [id]<=" & Me.ToID), 0)
    Next i
    Me.MySubSum = MYSum
    Me.FromID = Null
    Me.ToID = Null
    Me.MyList = Null
    Me.EdedAlhiqol = Null
End Sub

وهذه صور توضيحي للعملية

2018-10-27_20-06-37.jpg.326a10fe3c7b5fc6c033b4d80f51a97c.jpg

واليك القاعدة 

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

استخدمه حتى رجوع استاذ رمهان بشيء جديد 😊

  • Like 1
  • Thanks 1
  • Confused 1
قام بنشر (معدل)

السلام عليكم

هذه تجربة و محاولة لقد أدت المطلوب لكن ربما للأساتذة رأي أكثر احترافية .. خاصة أني أرى أستاذي @Shivan Rekany

و هو من هو و كم له من معلومة قيمة استفدتها منه بارك الله به و بالأساتذة الكرام .

تعديل :و ضعت المرفق في المشاركة التالية

تم تعديل بواسطه Khalf
  • Like 2
قام بنشر (معدل)

الطريقة كانت ثلاث مربعات غير منضمة و استخدام هذا الأمر ...

Forms![table1]![Text6] = Me.SelHeight
Forms![table1]![Text13] = Me.SelTop
 
    Forms![table1]![Text15] = DSum("name2", "table2", "[iD] between Forms![table1]![Text13] and Forms![table1]![Text6]+Forms![table1]![Text13]-1 ")

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

 

حقل يعد و يجمع السجلات المحدة في نموذج فرعي1.accdb

تم تعديل بواسطه Khalf
  • Like 1
قام بنشر

السلام عليكم

أستاذ @Shivan Rekany

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

عندما نرغب بجمع عامود بالكامل نحدده فقط شريطة أن يكون هذا العمود NUMERIC

أما عندما نرغب بجمع بعض السجلات في العمود فإننا نحدد العمود ثم نحدد بعده السجلات التي نرغب بجمعها

لتنفيذ الطريقة يجب إضافة مربعي نص غير منضمين غير مربعي العدد و المجموع

الكود المستخدم

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, Y As Single)
On Error Resume Next
Forms![table1]![Text6] = Me.SelHeight
Forms![table1]![Text13] = Me.SelTop

If IsNumeric(Me.ActiveControl.Value) Then
Forms![table1]![Text19] = Me.ActiveControl.Name
    Forms![table1]![Text15] = DSum(Forms![table1]![Text19], "table2", "[iD] between Forms![table1]![Text13] and Forms![table1]![Text6]+Forms![table1]![Text13]-1 ")
    
    ElseIf Forms![table1]![Text19] = "num1" Then
        Forms![table1]![Text15] = DSum("[num1]", "table2", "[iD] between Forms![table1]![Text13] and Forms![table1]![Text6]+Forms![table1]![Text13]-1 ")
    
    ElseIf Forms![table1]![Text19] = "Name2" Then
        Forms![table1]![Text15] = DSum("[Name2]", "table2", "[iD] between Forms![table1]![Text13] and Forms![table1]![Text6]+Forms![table1]![Text13]-1 ")
    
    End If
    End Sub

 

حقل يعد و يجمع السجلات المحدة في نموذج فرعي2.accdb

قام بنشر

أخي @Shivan Rekany

لقد حاولت أن أجعل المجموع لكامل نطاق التحديد 

حيث يتم جمع الحقول المقابلة للأعمدة المحددة ثم يتم جمع النواتج بين السجلات .

أحس أنني على الطريق الصحيح .

و لكن لم أصل إلى الحل النهائي .

قام بنشر
في ٢٧‏/١٠‏/٢٠١٨ at 16:36, رمهان said:

الحل عن طريق ثلاث خصائص للنموذج

seltop

selheight

selwidth

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

تحياتي

هذا تطبيق ومحاولة رمهانية متمنيا لكم التوفيق

Private Sub Form_Current()
Me.Parent!total = Me.ActiveControl
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
On Error Resume Next
Set rs = Me.RecordsetClone: rs.MoveLast: rs.MoveFirst
a = rs.GetRows(rs.RecordCount)
If KeyCode = 16 Then
For ii = 0 To Me.SelWidth - 1
For i = 0 To Me.SelHeight - 1
xsum = xsum + a(Me.SelLeft + ii - 2, Me.SelTop + i - 1)
Next i
Next ii
End If
Me.Parent!total = xsum
End Sub


Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
Set rs = Me.RecordsetClone: rs.MoveLast: rs.MoveFirst
a = rs.GetRows(rs.RecordCount)
For ii = 0 To Me.SelWidth - 1
For i = 0 To Me.SelHeight - 1
xsum = xsum + a(Me.SelLeft + ii - 2, Me.SelTop + i - 1)
Next i
Next ii
Me.Parent!total = xsum
End Sub

 

قاعدة البيانات1.accdb

  • Like 3
  • Thanks 1
قام بنشر
في ٣٠‏/١٠‏/٢٠١٨ at 00:59, Khalf said:

شكراً جزيلاً 

أستاذ

@رمهان

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

العفو استاذ خلف وتقبل تحياتي

  • Thanks 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