الاخوة الكرام
اريد معرفة عدد العناصر الموجوة باللست مع تجاهل العناصر المكررة
والسبب عندى نموذج فرعى اريد تجميع حقول بدلة dsum لكل عنصر وشكراً
الاخوة الكرام
اريد معرفة عدد العناصر الموجوة باللست مع تجاهل العناصر المكررة
والسبب عندى نموذج فرعى اريد تجميع حقول بدلة dsum لكل عنصر وشكراً

السلام عليكم
جرب هذا الأمر :
MsgBox Me.Combo1.ListCount
أما التكرار في القوائم فهو خطأ يجب أن لا يقع وتستطيع تفاديه بعمل استعلام مجموعة Group Query .
تحياتي .
الأخ الكريم والاستاذ الفاضل / أبو هادي
اعلم يا استاذنا الفاضل ذلك ولكن ظروف البرنامج ان به لسته يتطلب الامر ان يتم الاختيار اكثر من مرة فى كل سجل من هذه اللستة او اللست " هذا فى النموذج الفرعى المدرجة به اللسته" وأرغب فى جمع العناصر المتشابهة بدالة dsum بحيث يكون لذلك العنصر مموع واحد ... اتمنى ان اكون اوصلت المعلومة واشكرك من كل قلبى على تلبيتك السريعة وهذا ليس بجديد عليك وفقك الله وسدد خطاك

الأخ الكريم والاستاذ الفاضل / أبو هادي
اعلم يا استاذنا الفاضل ذلك ولكن ظروف البرنامج ان به لسته يتطلب الامر ان يتم الاختيار اكثر من مرة فى كل سجل من هذه اللستة او اللست " هذا فى النموذج الفرعى المدرجة به اللسته" وأرغب فى جمع العناصر المتشابهة بدالة dsum بحيث يكون لذلك العنصر مموع واحد ... اتمنى ان اكون اوصلت المعلومة واشكرك من كل قلبى على تلبيتك السريعة وهذا ليس بجديد عليك وفقك الله وسدد خطاك

السلام عليكم
تم التعديل على الدالة :
Function GetListCount(InControl As Control) As Long Dim dbs As Database Dim rst As Recordset Dim RS As String Dim RSName As String Dim FieldName As String Dim sPos As Integer, ePos As Integer Dim strSQL As String Dim strWhere As String Dim tdfNew As TableDef Dim fldLoop As Field Dim Test As Variant On Error Resume Next GetListCount = 0 Test = InControl.Name If Err.Number <> 0 Then Exit Function Set dbs = CurrentDb RS = Trim(InControl.RowSource) If RS Like "SELECT *" Then sPos = InStr(1, RS, "FROM ") + 5 ePos = InStr(sPos, RS, " ") If ePos = 0 Then ePos = InStr(sPos, RS, ";") RSName = Mid(RS, sPos, ePos - sPos) '--------------------- sPos = 7 ePos = InStr(sPos, RS, ",") If ePos = 0 Then ePos = InStr(sPos, RS, " FROM") FieldName = Mid(RS, sPos, ePos - sPos) '--------------------- sPos = InStr(1, RS, " Where") ePos = InStr(sPos + 7, RS, " ") If ePos = 0 Then ePos = InStr(sPos + 7, RS, ";") strWhere = Mid(RS, sPos, ePos - sPos) Else RSName = RS Set tdfNew = dbs.TableDefs(RSName) FieldName = tdfNew.Fields(0).Name strWhere = "" End If strSQL = "Select " & FieldName & " FROM " & RSName & strWhere & " GROUP BY " & FieldName & ";" Set rst = dbs.OpenRecordset(strSQL, dbOpenDynaset) rst.MoveLast GetListCount = rst.RecordCount rst.Close Set dbs = Nothing End Function
تحياتي .
السلام عليكم
أخي أبو طالب .. هذا استعلام تجميعي عملته فقط للتأكد إذا أنا فاهم المطلوب أو لا زلت بعيدا عن استيعابه .
SELECT mok_aty.ma_id, mok_aty.nah_id, mok_aty.mok_id, mok_aty.ho_id, Count(mok_aty.tg_id) AS العمليات, Sum(IIf([tg_id]=1,[vale],Null)) AS سابق, Sum(IIf([tg_id] Between 2 And 6,[vale],Null)) AS شراء, Sum(IIf([tg_id]>=7,[vale],Null)) AS بيع, Nz([سابق])+Nz([شراء])-Nz([بيع]) AS الرصيد FROM cod_ho INNER JOIN mok_aty ON (cod_ho.be = mok_aty.be) AND (cod_ho.ho_id = mok_aty.ho_id) GROUP BY mok_aty.ma_id, mok_aty.nah_id, mok_aty.mok_id, mok_aty.ho_id;
آمل فحصه وإخباري بالنتيجة .. ليكون نقطة البداية في التعديلات .
تحياتي .
السلام عليكم
أخي أبو طالب .. هل جربت هذا الإستعلام ؟!!
هذا ليس الحل ، هذا فقط ما استطعت أن أجمعه من أفكار في برنامجك .. حيث وجدت نفسي في متاهة لفهمه ، وقد أضعت فيه الساعات . فاضغط على نفسك قليلا وخذ من وقتك 5 دقائق لتجرب الإستعلام وترد على المشاركة !! .
تحياتي .
الاستاذ الفاضل / ابو هادى
نعم يا استاذى فهذا برنامج متخصص وما لم تبين بنوده وعناصره فسيكون من العسير فهمه واتا اشكرك من كل قلبى داعياً لك المولى عز وجل بالصحة والعافية واسف جداً على تعطيل حضرتك وربنا يجعلة فى ميزان حسناتك ..
نعم يا اخى لقد جربت الاستعلام الذى ارسلته وهو يعمل بشكل جيد لكن نتائجه غير التى اريدها واسف مرة اخرى بارسالى الملف بعد ايضاح بعض الامور عسى ان تحل هذه المشكلة والله العظيم انا فى غاية الخجل ولولا ان هذا المشكل اوقف عطلنى عن استكمال البرنامج ما كنت ارفقته وهو دورة مستندية للعمل العقارى اشكرك يا اخى الف الف مليون شكر وربنا يوفقك ويرعاك ويسدد خطاك

استاذنا الفاضل ابوهادى
سلام الله عليكم ورحمته وبركاته
اسف جدا يا اخى على العطلة التى عطلتك بها واضعت بها وقتك وثمنها عند الله جعلها الله فى ميزان اعمالك .
لقد فحصت الاستعلام الذى ارسلته لى وهو تقريباً يحل المشكلة وقد ادخلت عليه تعديل بسيط جداً فقام بالجمع صحيح لكن حينما لا يكون هناك بيانات فى المدة السابقة او الشراء يظهر المجموع خطأ واستعملت دالة nz دون جوى
اذن المشكلة هنا انحصرت فى هذا الاستعلام .
كمل جميلك معى يا اخلى الفاضل ربما تشاهد ما لا أراه وتدلنى عليه وفقكم الله ورعاكم مرفق المثال والاستعلام سترى ان الحوض الأول جمعه صحيح اما الثانى فخطأ ما السبب اشكرك واتنمى لك التوفيق والسداد

السلام عليكم
أخي أبو طالب .. لم ألحظ ردك الأخير ، عموما لقد عملت تعديل جزئي فقط آمل فحصه ، والتعديل تم على الأعمدة s,t,f,mall .
كما تم إضافة حقل على جدول tg .
سوف أنزل ملفك الأخير وأطلع أيضا .
تحياتي .
السلام عليكم
تم التعديل على الإستعلام المرفق مع ردك الأخير ، آمل فحصه وإخباري بالنتيجة .
SELECT mok_aty.ma_id, mok_aty.nah_id, mok_aty.mok_id, mok_aty.ho_id, Sum(IIf([tg_id]=1,Nz([mok_aty]!),0))+Sum(IIf([tg_id] Between 2 And 6,Nz([mok_aty]!),0))-Sum(IIf([tg_id]>=7,Nz([mok_aty]!),0)) AS s, Sum(IIf([tg_id]=1,Nz([mok_aty]![t]),0))+Sum(IIf([tg_id] Between 2 And 6,Nz([mok_aty]![t]),0))-Sum(IIf([tg_id]>=7,Nz([mok_aty]![t]),0)) AS t, Sum(IIf([tg_id]=1,Nz([mok_aty]![f]),0))+Sum(IIf([tg_id] Between 2 And 6,Nz([mok_aty]![f]),0))-Sum(IIf([tg_id]>=7,Nz([mok_aty]![f]),0)) AS f, Sum(IIf([tg_id]=1,Nz([mok_aty]![mall]),0))+Sum(IIf([tg_id] Between 2 And 6,Nz([mok_aty]![mall]),0))-Sum(IIf([tg_id]>=7,Nz([mok_aty]![mall]),0)) AS mall FROM mok_aty GROUP BY mok_aty.ma_id, mok_aty.nah_id, mok_aty.mok_id, mok_aty.ho_id HAVING (((mok_aty.mok_id)=1));
أنا الآن سوف أخرج من المنزل وسأعود بعد ساعتين تقريبا إن شاء الله تعالى .
تحياتي .
أستاذى الكريم / أبوهادى
سلام الله عليكم ورحمته وبركاته
بقدجربت الاستعلام الاخير الذى ارسلته حضرتك وارسلت لحضرتك رد عليه
وعلى فكرة الامور بدأت تتضح وان شاء الله سوف تحل المشكلة وشكرا على مجهودكم واسف على ضياع وقتكم فقد تعلمت الصبر منكم وعدم اليأس وكثرة المحاولة وربنا يديم المعروف اشكرك كثيرا الف الف شكر والسلام عليكم ورحمة الله وبركاته

الاستاذ الفاضل / ابوهادى
ملاحظة غريبة يا اخى لم انتبه اليها فقد قمت على سبيل التجربة بمسح سجل من الفورم الرئيسى ولم يتم تحديث الجدول وعندما عملت حضرتك الاستعلام وقمت بفتح الجول وجدت ان الامور تسير على ما يرام وانه قد حلت المشكلة وخصوصا بعد ان ادخلت بيانات جديدة وكانت النتائج سليمة ... اخيراً تعبك لم يضع يا اخلى الفاضل والاستعلام اشتغل تمام
ماذا اقول كل كلمات الشكر لا تكفى ربنا يعطيك الصحة والعافية ويزيدك علماً فوق علمك مع تحياتى ودعواتى لك بالتوفيق والسداد فى حياتك وفق المولى عز وجل
والسلام عليكم ورحمة الله وبركاته:o:o:o

السلام عليكم
أخي أبو طالب .. الإستعلام الأخير ليس حلي المقترح ، بل يوجد حل قبله بالمشاركة التي تسبق الإستعلام ، إفتح الفورم وافحص مصدر البيانات .
وهذا الحل أسهل وأقل تعقيد ويعتمد على تبديل القيم بعد ضربها بـ 1 أو -1 ومن ثم تتعامل مع المجاميع بكل سهولة باستخدام Sum فقط وبدون استثناءات .
تحياتي .
استاذنا الفاضل /أوبو هادى
سلام الله عليكم ورحمة الله وبركاته
لقد اطلعت على الحلين وانا اشكرك يا استاذى ربنا يديم المعروف وانا عاجز عن شكرك وهذا ليس ببعيد عليكم وانا أسف على تعطيلك معى هذه المدة
تمنياتى لك بدوام الصحة والعافية وشكرا يا استاذنا الفضل

هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…