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

تصميم دالة dsum


Hussein888

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

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

وزي ماهو واضح ,, انا عملتها غلط ومدياني خطا 

الحقل المطلوب جمعه هو حقل الرصيد الاولي..

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

و بارك الله فيكم وزادكم من العلم و المعرفة

Database8.accdb

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

اتفضل

Expr1: Nz(DSum("[الرصيد الافتتاحي]";"اطراف الفاتورة";"[باركود]='" & [باركود] & "'"))
هذا حسب كودك
والاصح هو بدل الرصيد الافتتاحي يكون الرصيد الاولى
هكذا
Expr1: Nz(DSum("[الرصيد الاولي]";"اطراف الفاتورة";"[باركود]='" & [باركود] & "'"))

 

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

اشكرك يا ابو ياسين على سرعة الاستجابة ولكن اعزرني انا لسة مبتدئ

الكود مكتوب متلخبط و معكوس من اليمين للشمال وانا مش فاهمه ...لو امكن اعملهولي في المثال اللي انا  رافعه وارسلهولي من جديد..

دا اولا

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

 

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

الكود صحيح عشان انه بالغه العربيه انسخه وبيطلع مضبوط

Expr1: Nz(DSum("[rr]";"اطراف الفاتورة";"[aa]='" & [aa] & "'"))
aa=باركود
rr= الرصيد الاولي

 

Database8.accdb

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

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

ولي طلب اخير و اكون شاكر لك.. 

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

لا اريد التصفير عن طريق التحويل او الصرف... 

 

وياريت مايلغيش العمليات السابقة من صرف و تحويل عشان لو حبيت ارجعلها 

 

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

اولا نصيحه ابتعد عن التسميات بالغه العربيه ممكن تسميها بالانجليزي ثم تسميها بالعربي من التسميه التوضيحيه

مثلا الرصيد تسميه rased

وهكذا لان اللغه العربيه مشكلتها كثيره في الاكواد

ثانيا ماهو معيار التاريخ 

ثلاثه ممكن تصفر الرصيد عبر استعلام تحديث

رابعا لم افهم طلبك بالضبط

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

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

المطلوب.. 

اذا قمت يوم ١ /٨ بعملية ارصدة افتتاحية لصنف x بكمية ٥٠٠.. يكون حقل raseed  ٥٠٠

 

قمت ٢ / ٨ بمنصرف ١٠.. يكون حقل  raseed

490 

قمت تاريخ ٢ /٨ بتحويل ١٠.. يكون حقل raseed ب ٤٨٠... 

 

حاليا تكتب القيمة ٤٨٠ في حقل raseed امام تاريخ ١/ ٨ و ٢ /٨  ٢ /٨ (بيجمع كل القيم مرة واحدة و يحط الناتج امام كل عملية) 

دا اولا 

 

بابنسبة للتصفير 

انا عامل فاتورة شبه فاتورة المنصرف اسمها فاتورة تسوية كميات الاصناف.. 

راس الفاتورة فيها تاريخ و نوع العملية و رقمها

و الاطراف مكتوب فيها كود الصنف و الاسم و بدلا من كمية المنصرف مكتوب فيها الكمية الجديدة 

اريد ان اكتب في الفاتورة الكمية الجديدة مثلا.. يتم التسجيل في جدول اطراف الفاتورة 

تاريخ الحركة و نوعها و تكتب الكمية الجديدة في خانة raseed

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

تفضل الكود بعد التعديل اخي الكريم

Expr1: Nz(DSum("[Column_Name]";"Table_Name";"[Where]>= '" & [Column_Name] & "' ");0)

فقط انسخ و الصق

Expr1: Nz(DSum("[الرصيد الافتتاحي]";"اطراف الفاتورة";"[باركود]>= '" & [باركود] & "' ");0)

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

 

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

test_quit.accdb

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

وهذ مشروط بالباكورد والتاريخ

الرصيدالنهائي: Nz(DSum("[الرصيد الاولي]";"[اطراف الفاتورة]";"[باركود]='" & [باركود] & "'" & " And [التاريخ]<= #" & Format([التاريخ];"yyyy-mm-dd") & "#");"0")

 

Database8 (1).accdb

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

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

د كاف يار اشكرك على اهتمامك و ربنا يبارك في علمك ويزيدك ..

الاخ العزيز اللي اثقلت عليه بطلبات مبتدئين 0ابو ياسين الشمولي

هو دا بالضبط اللي بسال عيه تماما ..لكن معلش كمل جميلك للاخر

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

وقمت بانشاء استعلام تحديث لاضافة قيمة الرصيد الحالي الى جدول الاصناف ..يتم التحديث بنجاح ايضا ولكن انر الى الصورة   

تظهر لي رسالة تح>يرية انه سيتم تحديث 7 سطور على الرغم من انهم قيمتين فقط 

ال7 صفوف اللتي سيتم تحديثها هي عدد الصفوف الموجودة في الاستعلام ..ولكن مع مرور الوقت و كثرة عمليات الصرف و  التوريد سنلاحظ زيادة صفوف الاستعلام ..و طبعا المطلوب فقط هو تحديث حقل الرصيد في جدول الاصناف بقيمة واحدة فقط لكل صنف مهما تكررت

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

بمعنى انه ازا لم تتم عمليات صرف ا و توريد على صنف معين , ف بالتالي قيمة الرصيد في الاستعلام تظل ثابة ومساوية لقيمة الرصيد في جدول الاصناف ,

و بالتالي عند تشغيل استعلام التحديث يتم تحديث الرصيد اللزي تغير فقط وليس كل القيم الموجودة  في الاستعلام

اتمنى ان يتم التعديل على القاعدة المرفقة لتيسير الشرح و  شكرا لكم

انا عارف  اني ارهقتكم بالطلبات ولكن عشمي فيكم كبير

 

 

ttt.png

mm.png

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

 

38 دقائق مضت, ابو ياسين المشولي said:

هذه رساله طبيعي وهو بالفعل يحدث صنفين فقط

بارك الله فيك يا اخي الغالي.. لكني اخشى ما اخشاه بعد عام او اثنين من الان ان شاء الله سيصبح جدول اطراف الفاتورة به اكثر من ١٠٠ الف صف.. و وقتها قد يحدث تجميد للبرنامج او خطا في التنفيذ او خروج من البرنامج..

هل يوجد امكانية اني احول الاستعلام إلى total 

وقتها ييتم تجميع القيم كلها مع بعضها البعض عن طريق group by.. 

لكن في هذه الحالة  استعلام التحديث لا يعمل لانه يشترط ان يكون الاستعلام المراد اخذ القيم منه قابل للتعديل(the query must be updatable).. 

حاولت احمل استعلام الحاق بدلا من التحديث.. طلعلي خطأ key violation validation.. 

هل في حل للاستعلام الالحاقي دا ولا ايه رايك

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

في ١٤‏/٨‏/٢٠١٩ at 23:33, ابو ياسين المشولي said:

ارفع ملفك من جديد صار في خطاء عند التحميل

اخي ابو ياسين الشمولي.. 

لك و لكل من حاول المساعدة جزيل الشكر.. 

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

بعد ما حضرتك شرحتلي دالة ال dsum.. و عملناها اول مرة بدون شرط التاريخ.. كان الناتج النهائي لجميع العمليات يكرر في كل عملية.. 

اخذت الاستعلام و عملته تجميعي (total) 

و طبعا في الحالة دي استعلام التحديث مابينفعش.. ولما لقيت صعوبة في استعلام الالحاق.. اتجهت الى استعلام انشاء جدول كخطوة اولى.. وسميته ( x) 

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

و استخدمت شرط ان قيمة الرصيد الحالي اللي في جدول الاصناف <> قيمة الرصيد في الجدول(x) 

عشان لو القيمة واحدة لا يعيد تحديثها و يخفف ضغط العمليات المتوالية على قاعدة البيانات تجنبا للمشاكل.. 

اشكركم.. و رجاء وضع شعار تم الحل 

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

  • 1 year later...
في ١٤‏/٨‏/٢٠١٩ at 06:45, ابو ياسين المشولي said:

وهذ مشروط بالباكورد والتاريخ

الرصيدالنهائي: Nz(DSum("[الرصيد الاولي]";"[اطراف الفاتورة]";"[باركود]='" & [باركود] & "'" & " And [التاريخ]<= #" & Format([التاريخ];"yyyy-mm-dd") & "#");"0")

 

Database8 (1).accdb 432 kB · 5 تنزيلات

استاذ ابو يس.. 

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

مثلا رصيد سلعة ما 5 قطع 

قمت ب 3 عمليات بيع في نفس اليوم 

سيظهر في جدول اطراف الفاتورة 3 سجلات للبيع.. 

وعند استخدام الدالة السابقة سيتم اظهار الناتج النهائي وهو 2 امام كل خطوة و ليس 4 ثم 3 ثم 2

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

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