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

Gamal.Saad

الخبراء
  • Posts

    211
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    3

كل منشورات العضو Gamal.Saad

  1. هناك احتمال لحدوث الخطأ بسبب تحديث مشغل الفلاش بلاير لديك لذلك إما تحذف مشغل الفلاش بلاير وتعمل ريستارت وتعيد تحميله وإما تجرب على نظام تشغيل أو كمبيوتر مختلف وبعدها نشوف احتمال جديد
  2. بعد إذن الأساتذة جميعا وطبعا الاستاذ طارق صاحب الموضوع قد وقع نظري على الأسطر الخمس الأخيرة والحمد لله فهمتها على ما أظن وسويت لك نموذج تختار من خلاله المسميات بالجدول NoufousTable ثم تفتح تقرير يستند على المعايير التي ذكرتها من جدول اسمه 1 وأرجو أن تلتمس لي العذر اذا لم أستطع فهم المطلوب كما ينبغي بريد الدوار24.rar
  3. ههههههههه يوجد حل سريع وهو أنك بعدما تقوم بادخال القيمة يتم اغلاق وفتح النموذج بصورة فورية فينتج عن ذلك حفظ البيانات بالجدول ثم نقوم باستدعاء الفانكشن لتعمل على الصنف كما بالسابق كأن شيئا لم يحدث وقبل اغلاق النموذج سنحتفظ بكود الصنف لدى متغير عام بالنموذج طبعا لكي يتم العمل على الصنف فقط وأضفت لك كود لاغلاق النموذج حال البيانات صفر وحذف للاستعلام المؤقت فاذا كانت بعض النتائج الحسابية غير صحيحة فيمكن تتبع الأخطاء أما اذا أظلم الكود تماما فالأفضل إعادة الهيكلة لكن بعد أن تستقر على نموذج وطريقة لتحديث وتشغيل الفانكشن لأنك لو قمت بالتغيير لاحقا من المؤكد ستحتاج للتعديل مجددا تقييم 6.rar
  4. ههههههه واحدة واحدة هناك أكثر من مشكلة متداخلة بعد تغيير مكان وتوقيت تنفيذ الفانكشن وأهمها اثنتين عدم التحديث الفوري للقيمة داخل الجدول تحويل الكود للتعامل مع صنف واحد مع الحفاظ على التسلسل سأحاول حل المشكلات في أقرب وقت وقد أتأخر عليك للغد إن شاء الله لظروف الشهر الكريم لكن لا تقلق الكود أندركنترول حتى تاريخه
  5. أوك جرب التعديل المرفق ولا تقلق فهذا أمر طبيعي حيث تقوم بالتجربة واختيار مكان وتوقيت جديد لتنفيذ الدالة الحسابية test2.rar
  6. ولا يهمك المهم نضبط البرنامج أنا أميل لتشغيل الفانكشن مع كل حركة صنف في النموذج لكي تحسب لك الرصيد بعد الحركة ولن نحتاج لزر تشغيلها يظهر بالنموذج أو لعرض التقرير بعد تشغيلها يعني ممكن تضعها في حدث بعد تحديث كمية صنف الصرف أو بعد تحديث سعر الاضافة حسب احتياجات المعادلة الحسابية
  7. إما عندك تعطيل في macro security وإما المشكلة في Digital Certificate for VBA الأول شوف اعدادات تمكين الماكرو والأكتف إكس
  8. لو عاوز تدرج ملفات فلاش فيمكنك استخدام العنصر Shockwave Flash Object Shockwave Flash Object.rar
  9. الأساتذة @elkareee & @Amr Ashraf والله كلامك وسام شرف وأنا مازلت في بداية الطريق وأتمنى أكون عند حسن الظن بس مترجعوش في كلامكم بعد كده هههههه أستاذ محمد جرب التعديل بكود بناء الاستعلام المؤقت ستجد سطر مستقل يعبر عن اختيار صنف محدد من النموذج تجنباً لاستدعاء الخمسين ألف سجل طبعا يمكن التعديل في أي وقت لأي أصناف وتم تغيير جزء بسيط من الكود حتى نتجنب أخطاء قد تحدث وجرب القيمة لحركة الصرف ''''''''''''''''''''''''''''''''' Building Quary ''''''''''' If Nz(Forms![Trans_top]![Transaction subform]![Code], 0) = 0 Then GoTo en2 Else: strSQL = "SELECT Transactions.ID, Transactions.Item, Trans_top.zdate, Transactions.Out, Transactions.[In], Transactions.Zvalue, Transactions.Code FROM Transactions INNER JOIN Trans_top ON Transactions.Doc = Trans_top.Doc " '''''''''' Choosing Item : strSQL = strSQL + "WHERE Code = '" & [Forms]![Trans_top]![Transaction subform]![Code] & "' " strSQL = strSQL + "GROUP BY Transactions.ID, Transactions.Item, Trans_top.zdate, Transactions.Out, Transactions.[In], Transactions.Zvalue, Transactions.Code ORDER BY Transactions.Item, Trans_top.zdate;" تقييم 5.rar
  10. استفسار : بخصوص ID المذكور فى الفانكشن هوا اللى يخص جدول Trans_Top يعنى بالتالى لو فى تاريخ واحد حصل فيه حركتين هيتم الترتيب بأولوية التسجيل تمام كده ؟ الحقل المميز للسجل المعرف ID يخص جدول الحركة Transaction حيث يتم الاستناد إلي ذلك الحقل عند تحديث أي قيمة بالسجل لما له من دور هام في حالة أكثر من حركة للصنف بنفس اليوم وعشان يكون ترتيب التقرير فى العرض بتاعه يكون زى ترتيب عمل الفانكشين هنضيف فى الاستعلام مصدر التقرير جدول Trans_Top ونختار الحقلين zDate , ID ويكون الترتيب Ascending تمام كده ؟ تمام يا فندم وذلك في حالة صنف واحد في حالة أكثر من صنف فيتم الترتيب تصاعديا لاسم الصنف بجانب التاريخ أما وفي المثال استند المثال إلى استعلام به نفس ما ذكرته أنت من استناد للجدول توب مرتبطا بجدول الحركة مع ترتيب حسب التاريخ أظن اننا كده غطينا جميع النقط فاضل بس ملحوظة قيمة حركة الصرف وتبقى كده العملية مظبوطة فى كافة الاتجاهات أوك. سنضيف القيمة تساوي متوسط السعر مضروبا بالكمية وبالمناسبة عندي سؤال : أريد التأكد من أن القيمة بالنسبة لحركة الاضافة يتم ادراجها يدويا حسب فاتورة الشراء ؟ أليس كذلك ؟ و بالنسبة لتهيئة الفانكشن لتعمل على كل صنف على حدى لأنه هيكون أسهل و أسرع فعلا . إن شاء الله عارف انك بذلت مجهود جامد فى الموضوع والله جزاك الله خير تقبل تحياتى وجزاكم كل خير لكن أرجو من لديه فكرة عن استخدام استعلام التحديث ليحل محل الفانكشن أن يطرحها لأن المسألة عندي تتطلب عمل جدول مؤقت وأكثر من استعلام
  11. سيساعد ذلك على اختصار الوقت بصورة قد تكون هائلة لأنه سيتم استدعاء سجلات الحركة للصنف فقط ثم تمر على كل سجل المعادلة الحسابية بدلا من كافة سجلات الجدول الخمسين ألف أحتاج تشرح لي هذه النقطة المفترض الحركة إما صرف أو اضافة وفي الصورة الحركة صفر لأن السجل يكون حركة اضافة أما متوسط السعر مضروبا بالكمية فهو قيمة الرصيد كما بالصورة بصورة عامة حتى لو كان هناك خطأ بالنقطة الأخيرة فاذا كان متوسط السعر صحيح بالصورة السابقة فهذا معناه أن الكود جاهز للاستخدام وسوف أرفق لك المثال فبرجاء مراجعة متوسط السعر في السجلات وهذه هي الفانكشن قبل التنقيح والتعديل لصنف واحد حتى هذه النقطة حتى يستفيد من يهتم من الزملاء Option Compare Database Option Explicit Dim balance, bal, i, avg1, avg2, toval, tovalue, zval As Integer Function qty_normalize() '''''''''''''''''''''''''''''''''' Declaring ''''''''''''''''''' Dim db, dbs As DAO.Database Dim rst As DAO.Recordset Dim qdf, qryLoop As DAO.QueryDef Dim item_a, item_b, strSQL As String Set dbs = CurrentDb: Set db = CurrentDb For Each qryLoop In CurrentDb.QueryDefs If qryLoop.Name = "Q" Then DoCmd.DeleteObject acQuery, "Q" Next ''''''''''''''''''''''''''''''''' Building Quary ''''''''''' strSQL = "SELECT Transactions.ID, Transactions.Item, Trans_top.zdate, Transactions.Out, Transactions.[In], Transactions.Zvalue, Transactions.AvgPrice, Transactions.BalanceAfter, Transactions.Tovalue, Trans_top.Orient, Trans_top.Warehouse, Trans_top.Doc, Transactions.Code FROM Trans_top INNER JOIN Transactions ON Trans_top.[Doc] = Transactions.[Doc] GROUP BY Transactions.ID, Transactions.Item, Trans_top.zdate, Transactions.Out, Transactions.[In], Transactions.Zvalue, Transactions.AvgPrice, Transactions.BalanceAfter, Transactions.Tovalue, Trans_top.Orient, Trans_top.Warehouse, Trans_top.Doc, Transactions.Code ORDER BY Transactions.Item, Trans_top.zdate;" Set qdf = CurrentDb.CreateQueryDef("Q", strSQL) DoCmd.OpenQuery qdf.Name Set qdf = db.QueryDefs("Q") Set rst = qdf.OpenRecordset() Set rst = CurrentDb.OpenRecordset("Q", dbOpenDynaset) rst.MoveLast: rst.MoveFirst ''''''''''''''''''''''''''''''''' Setting to Zero ''''''''''' item_a = item_b = rst!Item balance = avg1 = avg2 = tovalue = toval = zval = 0 ''''''''''''''''''''''''''''''''' The first Row ''''''''''''' balance = rst!In CurrentDb.Execute ("Update transactions Set BalanceAfter = " & balance & " where [id] = " & rst!ID & "") avg1 = Round(rst!zvalue, 2) / Round(rst!In, 2) tovalue = Round(Int(balance * avg1), 0) CurrentDb.Execute ("Update transactions Set AvgPrice = " & avg1 & " where [id] = " & rst!ID & "") bal = balance zval = rst!zvalue toval = tovalue rst.MoveNext '''''''''''''''''''''''''''''''''Starting of Row(s) Later ''''''''''''' With rst For i = 0 To rst.RecordCount - 1 If item_a = item_b Then balance = Val(balance) + rst!In - rst!Out CurrentDb.Execute ("Update transactions Set BalanceAfter = " & balance & " where [id] = " & rst!ID & "") item_b = rst!Item ''''''''''''''''''''''' In Or Out ''''''''''''' If rst!In <> 0 Then avg2 = Round(Round(toval + rst!zvalue, 2) / Round(bal + rst!In, 2), 2) tovalue = Round(balance * avg2, 0) CurrentDb.Execute ("Update transactions Set AvgPrice = " & avg2 & " where [id] = " & rst!ID & "") avg1 = avg2 Else avg2 = avg1 tovalue = Round(balance * avg2, 0) CurrentDb.Execute ("Update transactions Set AvgPrice = " & avg2 & " where [id] = " & rst!ID & "") End If ''''''''''''''''''''''' A new Item ''''''''''''' Else balance = 0 item_b = rst!Item balance = Val(balance) + rst!In - rst!Out CurrentDb.Execute ("Update transactions Set BalanceAfter = " & balance & " where [id] = " & rst!ID & "") avg1 = Round(rst!zvalue, 2) / Round(rst!In, 2) tovalue = Round(balance * avg1, 2) CurrentDb.Execute ("Update transactions Set AvgPrice = " & avg1 & " where [id] = " & rst!ID & "") End If ''''''''''''''''''''''' Storing Values ''''''''''''' toval = tovalue bal = balance zval = rst!zvalue ''''''''''''''''''''''' Next Row or End '''''''''''''' .MoveNext If Not .EOF Then item_a = rst!Item Else GoTo en: End If Next End With ''''''''''''''''''''''' Deleting Query And Closing Recordsets '''''''''''''' en: rst.Close DoCmd.Close acQuery, "Q", acSaveYes DoCmd.DeleteObject acQuery, "Q" Set rst = Nothing Set qdf = Nothing Set db = Nothing Set dbs = Nothing End Function
  12. اي المفروض شغالة بس ممكن نحتاج تعديل لضبط الناتج انظر الصورة وراجعها معي خصوصا ما يلي : السجل الأول : للصنف يكون حركة اضافة طبعا حسب التسلسل التاريخي وتكون معادلة متوسط السعر الكمية المضافة مقسوماً على القيمة السجلات التالية للصنف : اذا كان خصم يأخذ آخر متوسط واذا كان اضافة فتكون المعادلة قيمة رصيد للصنف بالحركة السابقة مضافا إليه قيمة الصنف في الحركة الحالية ثم نقسم الناتج على مجموع رصيد ما بعد الحركة السابقة للصنف + كمية الاضافة الحالبة ومع بداية صنف جديد نعود لمعادلة السجل الأول ومش مهم تراجع النتيجة المهم جوهر المعادلة خاصة ما هو مكتوب هنا باللون الأحمر حيث هل يقصد برصيد الصنف للحركة السابقة أياً كانت سواء حركة اضافة أم حركة خصم أم اضافة فقط ؟ http://
  13. صحيح أنت قلت بيانات فارغة لكن لم أنتبه لأنك لم تقل Null معلش كل واحد وتعليمه هههههههه بس مشكلتك الثانية لو سوينا كود تحديث لخمسين ألف سجل ربما يتطلب عشرون ثانية للتنفيذ على الأقل لذلك يجب العمل على تقليل الزمن شيئ آخر : البيانات الأخيرة لا يوجد بها حقل القيمة zvalue المطلوب للمعادلة
  14. في البداية سبب الخطأ هو القيمة Null وهي موجودة لديك في حقول مستخدمة بالمعادلة الحسابية رصيد بعد الحركة وبعد ازالتها من الحقول التالية item in out اشتغل الكود طبعا القيم السالبة في رصيد بعد الحركة نظرا للسجلات المفقودة الخاصة بالاضافة لبعض الأصناف والتي يجب أن تكون في بداية كل صنف New up2.rar
  15. كنت أطمع حتى في بضعة آلاف أو بضعة مئات من السجلات حتى نتتبع الخطأ وليس هناك تطابق تام بين الحقول في جدول transaction
  16. أوك لصعوبة ارفاقك للقاعدة الأصلية أرفق الجداول فقط
  17. ههههههه أوك يا أستاذ محمد علشان قلت كلب البحر يبقى لازم يكن الحل بفانكشن تمر على كافة السجلات براحتها أنا رأيت المرفق ويبدو من النظرة الأولى أنه يأتي بنتيجة صحيحة لكن بحثت في استعجال عن أي شيئ للتسلسل التاريخي فلم أجد وإن شاء الرحمن سأحاول فهم طريقتك بالتفصيل والبناء عليها وأرجو باعتبارك المهتم الأول بالموضوع أن تعلق على الحل سواء بوضع تعليقات على النموذج أو داخل كود الفيجوال بالنموذج ولا تفعل مثلي في عدم وضع تعليقات واذا كانت هناك كائنات غير ضرورية مثل استعلامات وما شابه فياريت تحذفها حتى لا يتشتت المتابع لملفك
  18. ولا يهمك استاذ محمد جميعنا نسعى للاستفادة وللمساعدة ما امكن المهم يتم حل مشكلة السائل
  19. السلام عليكم ما تريده هو تنسيق شرطي بالتقرير ويتم عن طريق اختيار كافة السجل الخاص بالموظفين في التقرير بوضع التصميم وهي مربعات نصية ثم من تبويت Format ومن المجموعة Control Formatting اختر Conditional Formatting
  20. نعم أتفهم ذلك والمعادلة تعتمد على قيم في سجلات سابقة ويسهل تطبيقها مهما ابتعدت وتنوعت القيم في سجلات سابقة أو تالية ولكن باستخدام كود من داخل النموذج والأفضل استعلام تحديث لأني أراه أسرع اذا زادت السجلات لأعداد كبيرة أما اذا كان يكفيك الحل باسخدام نفس الدالة الحسابية السابقة فلا مانع من بدء المحاولة ثم نحاول تحويل الدالة بعد ذلك إلا عدة استعلامات
  21. السلام عليكم أستاذ محمد أحببت أسجل متابعتي للموضوع وأعرفك أني مازلت أحاول في استعلام التحديث ليتم تحديث الرصيد بعد الحركة بدلا من الدالة الحسابية qty_normalize Function الموجودة بموضوعك السابق واذا تم الاستعلام بنجاح فسنحاول حل مشكلتك الجديدة بهذا الموضوع والتي تعتمد أيضا على حساب الرصيد بعد الحركة لكن اذا يسعفني الوقت أو لم أصل لحل أو لم يحلها الأخوة بالمنتدى فستكون مضطرا إلى الاعتماد على الدالة السابق ذكرها
  22. أهلا بك أستاذ محمد والتشريف لنا يا غالي طالما المشكلة الثانية أصعب بأضعاف يبقى لازم نتشارك مع الأخوة في المنتدى للوصول للحل ولازم تكون بموضوع جديد كي لا يضيع تركيز المتابعين للمشكلة الحالية في دراسة الحل المقترح بهذا الموضوع كمان المفضل يكون عنوان الموضوع الحالي يعبر عن المشكلة لتسهيل البحث عنها فيكون مثلا مشكلة في تحديث رصيد بعد الحركة أو ما شابه أو ما شابه
  23. هل تقصد هذا ؟ https://www.gulf-up.com/do.php?img=322660 Invoices (2).rar
  24. ممكن نوقف الكود اذا كانت قاعدة البيانات فارغة والأفضل للتسميات عموما الابتعاد عن الكلمات المستخدمة للنظام لكن لطالما تعمل فلا توجد مشكلة والله أسعدتني سعادتك بحل المشكلة يا أستاذ elkareee طيب اسم سيادتك ايه ؟ لو معلومة عسكرية ممكن تكتبها على الخاص
  25. ولا يهمك شيئ كلنا أخوة الوحدة النمطية تقوم بعمل ترقيم تلقائي في الاستعلام Print_Current وهي نفس فكرة الاستاذ Shivan Rekany التي اعتمد فيها على حقل ترقيم تلقائي بالجدول وفي النهاية يستند التقرير في الترتيب للأصناف على هذا الترقيم أو ذلك
×
×
  • اضف...

Important Information