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

أبو عبدالله الحلوانى

الخبراء
  • Posts

    1,727
  • تاريخ الانضمام

  • Days Won

    5

كل منشورات العضو أبو عبدالله الحلوانى

  1. السلام عليكم ورحمة الله وبركاته جرب هذا المرفق لعله يوافق مرادك وأخبرنا بالنتائج ملاحظة: غير عنوان الايميل المرسل اليه قي هذا السطر من الكود Call sendAsAttach(docname, "testEmil@gmail.com") Barna.rar
  2. السلام عليكم ورحمة الله وبركاته بالاضافة الي ما تفضل به أستاذنا @محمد أبوعبدالله لماذا لا تجرب القيام باغلاق النموذج أو اخفاءه بدلا من التصغير - فان النماذج تعمل داخل بيئة الأكسس حتي لو قمت باخفاء الأكسس فإنه لا يزال متحكم بعمل النماذج والتقارير - فتصغير النموذج يودي الي بقائه تحت النماذج المفتوحة فقط ولا يختفي كما هو معلوم. كنت أتفادي التصغير دائما باغلاق النموذج أو اخفاءه واعادة فتحة مرة أخري عند الحاجة. تمنياتي بالتوفيق
  3. وعليكم السلام ورحمة الله وبركاته ان كان طلبك لبرنامج متكامل بمقابل مادي فضع موضوعك بقسم الاعلانات بالموقع وضع وسيلة للتواصل معك. وان كنت تريد المساعدة لاعداد برنامجك بنفسك فقم بوضع مشكلتك التي تواجهك واحدة تلو الأخري بمواضيع مستقلة وفقا لقواعد المنتدي حتي تجد من يساعدك بحلها من الاساتذة الكرام بالمنتدي ولن يبخل أحد منهم بأن يجود بما يعلم. تمنياتي لكم بالتوفيق والسداد.
  4. جزاكم الله عنا خيرا وجعله الله في موازين الحسنات صدقة جارية ينتفع به ان شاء الله اللهم اشفي والديه بمنك وكرمك شفاءا لا يغادر سقما وجميع مرضا المسلمين ومتعهم بالصحة والعافية ما أحييتهم يا رب العالمين اللهم اجعل ما أصبتهم رفعة في درجاتهم وزيادة في أجورهم يا رب العالمين آمين
  5. السلام عليكم ورحمة الله وبركاته مساهمة مع أستاذنا @محمد أبوعبدالله انظر الي هذا المرفق بالمشاركة التالية لعله يفيدك بشئ
  6. السلام عليكم ورحمة الله وبركاته الحقل يحوي نص بهذا الشكل "25.1*12.25*14.6" أو هذا الشكل "65.12+65+98+3.25" أو أيا كانت العملية الحسابية أحتاج الي كود ينفذ العملية الحسابية التي بداخل النص حاولت بهذا الكود ولكن الأمر لم يفلح معي حيث أني استخدمت الدالة mid لتقطيع النص ولكن تم التقطيع حرف حرف وليس رقم رقم وهذا هو كودي البسيط الغير ناجح Function CalcMsahaAkar(ByRef txtx As String) As Double 'If InStr(1, txtx, "*") > 0 Then 'CalcMsahaAkar = Round(Split(txtx, "*")(0) * Split(txtx, "*")(1), 2) 'End If Dim no As Double Dim no1 As Double no1 = 1 'CalcMsahaAkar = Val(txtx) For n = 1 To Len(txtx) If Mid(txtx, n, 1) <> "*" Or Mid(txtx, n, 1) <> "+" Then Debug.Print Mid(txtx, n, 1) no = Mid(txtx, n, 1) if Instr(1,txtx,"*")>0 then no1 = no1 * no Elseif Instr(1,txtx,"+")>0 then no1 = no1 + no end if End If Next CalcMsahaAkar =Round(no1,2) Debug.Print CalcMsahaAkar End Function وجزاكم الله عنا خيرا .
  7. شكرا لكم علي هذا العمل الرائع ما شاء الله جعله الله في موازين حسناتكم
  8. السلام عليكم ورحمة الله وبركاته الحمد لله تم اكتشاف الخطأ بالكود هو عند الخروج من الدوار فور قبل نتيجة الدالة الصورة توضح المقال الخطأ هنا If AutoAmount <= (Amount + 100) And AutoAmount >= (Amount - 100) Then Exit For <<====================== here a wrong tstAmont = "AmountCalculit: " & AutoAmount & vbCrLf & _ "Until date: " & IIf(stopDat > 0, stopDat, EndDate) Else كان يجب أن يكتب هكذا If AutoAmount <= (Amount + 100) And AutoAmount >= (Amount - 100) Then tstAmont = "AmountCalculit: " & AutoAmount & vbCrLf & _ "Until date: " & IIf(stopDat > 0, stopDat, EndDate) Exit For <<=============== must write here after calculate function Else ربما هذا الدالة الطويلة لن يستفيد منها أحد!! ولكن تلك المعلومة البسيطة هامة جدا حتي لا يقع أحد في مثل ما وقعت به (أعلم أن جميعكم أساتذتي لا يخفي عليكم مثل هذا ولكن للتوثيق ولربما مر من هنا مبتدأ مثلي فتفده تلك المعلومة). (أن الكود يسير من الأعلي الي الأسفل فمن الواجب أن ننتبه أن لا ننهي الكود قبل اتمام احتساب النتائج! كما هو موضح بالأعلي) وجزاكم الله خيرا جميعا
  9. السلام عليكم أعتقد أن هذا الكود يعمل ولكن لم اجربه أرجو التجربة والافادة Sheets(2).RefreshAll ملاحظة: الرقم بين الاقواس هو رقم الشيت المراد تحديثه وأعتقد أن هذا الاعداد سيغنيك عن هذا
  10. السلام عليكم ورحمة الله وبركاته أرجو من السادة الخبراء المساعدة في توضيح سبب عدم وجود أي مخرجات لهذه الدالة وهل يوجد سبيل لاختصارها وجزاكم الله خيرا Function tstAmont(ByVal Amount As Double, ByVal Nsht As Integer, ByVal strtDat As Date, ByVal srf As Integer, _ ByVal ktr As Integer, ByVal whdat As Integer, Optional stopDat As Date = 0) As String 'this code for test amount and return correct date for 'this amount main idea will use 'for loop' to add 1 month 'to start date and calc amount if our amount = user amount 'stop her. else add another month and so on. '====================== Dim n As Integer Dim shozDat As Integer Dim dats(5) As Date Dim prsHom(5) As Double Dim prsTjry(5) As Double Dim Kmya As Integer Dim srfHom(5) As Double Dim srfTgry(5) As Double Dim FrstDate As Date Dim EndDate As Date Dim AutoAmount As Double '====================== Kmya = Choose(ktr, 90, 135, 180, 270, 360, 225) dats(1) = (#2/28/2016#) dats(2) = (#5/30/2016#) dats(3) = (#8/31/2017#) dats(4) = (#6/30/2018#) dats(5) = (Date) prsHom(1) = 30 prsHom(2) = 50 prsHom(3) = 52 prsHom(4) = 64.5 prsHom(5) = 67.5 prsTjry(1) = 1.16 prsTjry(2) = 1.6 prsTjry(3) = 2 prsTjry(4) = 2.4 prsTjry(5) = 3.6 srfHom(1) = 0.52 srfHom(2) = 0.51 srfHom(3) = 0.57 srfHom(4) = 0.63 srfHom(5) = 0.75 srfTgry(1) = 0.81 srfTgry(2) = 0.8 srfTgry(3) = 0.86 srfTgry(4) = 0.92 srfTgry(5) = 0.98 '======================= 'If strtDat <= dats(1) Then For n = 1 To DateDiff("m", strtDat, Date) If AutoAmount <= (Amount + 100) And AutoAmount >= (Amount - 100) Then Exit For tstAmont = "AmountCalculit: " & AutoAmount & vbCrLf & _ "Until date: " & IIf(stopDat > 0, stopDat, EndDate) Debug.Print AutoAmount Debug.Print Amount Debug.Print n Debug.Print stopDat Debug.Print EndDate Else n = n + 1 EndDate = DateAdd("m", n, strtDat) If Nsht = 1 Then If (stopDat <= dats(1)) Then AutoAmount = DateDiff("m", EndDate, stopDat) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) ElseIf (EndDate <= dats(1)) Then AutoAmount = DateDiff("m", EndDate, dats(1)) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) End If If (stopDat <= dats(2) And stopDat > dats(1)) Then AutoAmount = DateDiff("m", EndDate, dats(1)) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) AutoAmount = DateDiff("m", dats(1), stopDat) * whdat * prsHom(2) * IIf(srf = 1, 1 + srfHom(2), 1) ElseIf (EndDate <= dats(2) And EndDate > dats(1)) Then AutoAmount = DateDiff("m", EndDate, dats(1)) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) AutoAmount = AutoAmount + (DateDiff("m", dats(1), dats(2)) * whdat * prsHom(2) * IIf(srf = 1, 1 + srfHom(2), 1)) End If If stopDat <= dats(3) And stopDat > dats(2) Then AutoAmount = DateDiff("m", EndDate, dats(1)) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) AutoAmount = DateDiff("m", dats(1), dats(2)) * whdat * prsHom(2) * IIf(srf = 1, 1 + srfHom(2), 1) AutoAmount = DateDiff("m", dats(2), stopDat) * whdat * prsHom(3) * IIf(srf = 1, 1 + srfHom(3), 1) ElseIf (EndDate <= dats(3) And EndDate > dats(2)) Then AutoAmount = DateDiff("m", EndDate, dats(1)) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) AutoAmount = AutoAmount + (DateDiff("m", dats(1), dats(2)) * whdat * prsHom(2) * IIf(srf = 1, 1 + srfHom(2), 1)) AutoAmount = AutoAmount + (DateDiff("m", dats(2), dats(3)) * whdat * prsHom(3) * IIf(srf = 1, 1 + srfHom(3), 1)) End If If stopDat <= dats(4) And stopDat > dats(3) Then AutoAmount = DateDiff("m", EndDate, dats(1)) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) AutoAmount = DateDiff("m", dats(1), dats(2)) * whdat * prsHom(2) * IIf(srf = 1, 1 + srfHom(2), 1) AutoAmount = DateDiff("m", dats(2), dats(3)) * whdat * prsHom(3) * IIf(srf = 1, 1 + srfHom(3), 1) AutoAmount = DateDiff("m", dats(3), stopDat) * whdat * prsHom(4) * IIf(srf = 1, 1 + srfHom(4), 1) ElseIf (EndDate <= dats(4) And EndDate > dats(3)) Then AutoAmount = DateDiff("m", EndDate, dats(1)) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) AutoAmount = AutoAmount + (DateDiff("m", dats(1), dats(2)) * whdat * prsHom(2) * IIf(srf = 1, 1 + srfHom(2), 1)) AutoAmount = AutoAmount + (DateDiff("m", dats(2), dats(3)) * whdat * prsHom(3) * IIf(srf = 1, 1 + srfHom(3), 1)) AutoAmount = AutoAmount + (DateDiff("m", dats(3), dats(4)) * whdat * prsHom(4) * IIf(srf = 1, 1 + srfHom(4), 1)) End If If stopDat <= dats(5) And stopDat > dats(4) Then AutoAmount = DateDiff("m", EndDate, dats(1)) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) AutoAmount = DateDiff("m", dats(1), dats(2)) * whdat * prsHom(2) * IIf(srf = 1, 1 + srfHom(2), 1) AutoAmount = DateDiff("m", dats(2), dats(3)) * whdat * prsHom(3) * IIf(srf = 1, 1 + srfHom(3), 1) AutoAmount = DateDiff("m", dats(3), dats(4)) * whdat * prsHom(4) * IIf(srf = 1, 1 + srfHom(4), 1) AutoAmount = DateDiff("m", dats(4), stopDat) * whdat * prsHom(5) * IIf(srf = 1, 1 + srfHom(5), 1) ElseIf (EndDate <= dats(5) And EndDate > dats(4)) Then AutoAmount = DateDiff("m", EndDate, dats(1)) * whdat * prsHom(1) * IIf(srf = 1, 1 + srfHom(1), 1) AutoAmount = AutoAmount + (DateDiff("m", dats(1), dats(2)) * whdat * prsHom(2) * IIf(srf = 1, 1 + srfHom(2), 1)) AutoAmount = AutoAmount + (DateDiff("m", dats(2), dats(3)) * whdat * prsHom(3) * IIf(srf = 1, 1 + srfHom(3), 1)) AutoAmount = AutoAmount + (DateDiff("m", dats(3), dats(4)) * whdat * prsHom(4) * IIf(srf = 1, 1 + srfHom(4), 1)) AutoAmount = AutoAmount + (DateDiff("m", dats(4), dats(5)) * whdat * prsHom(5) * IIf(srf = 1, 1 + srfHom(5), 1)) End If End If 'else tjary End If Next End Function وعند اختبارها لم تظهر أي نتائج أو حتي أخطاء!! ولا أدري لما؟! ?tstAmont(450,1,#8/5/2014#,0,1,1)
  11. جزاك الله خيرا F9 ما صنعت شئ ولكن المشكلة حلت والحمد لله كانت القيمة بالخلية A1 قيمة نصية لم يتعرف عليها الاكسل كتاريخ القيمة كانت (31/6/2015) جزاكم الله خيرا
  12. السلام عليكم ورحمة الله وبركاته خبرتي بدوال الاكسل ليست كبيرة ولكن الأمر أعتقد أنه بسيط ولكن لا تظهر لي نتائج صحيحة ولا أدري لماذا استخدمت هذه المعادلة للمقارنة بين تاريخين في حقول الشيت =if(A1>B1;A1;B1) ودائما تظهر لي قيمة الخلية A1 في كل الأحوال ولا أدري لماذا مع أني ضبط تنسيق الخلايا علي أنها short date تحياتي للجميع
  13. هذا رابط صاحب المرفق الأصلي لعلي أكون قد عبثت ببعض الأكود بدون قصد
  14. السلام عليكم ورحمة الله وبركاته أظنك تريد شيئا كهذا هذا مثال أجنبي به ما تريد وزيادة (105 كيلو علي البيعة 😄) رجائا فك الضغط عن المجلد وأبقي كل شئ بداخله في نفس المسار قم بفتح ملف الأكسس وخذ جولة بين الأزرار والتبويبات ثم وافنا بالنتائج DynamicMessage.rar
  15. ومن باب ارجاع الفضل لأهله قد نبهي لهذا الخطأ هذا الرابط لأستاذنا محمد أيمن جزاه الله خيرا. https://www.officena.net/ib/topic/79080-تطبيق-البحث-في-اكثر-من-حقل-دون-استخدام-الاستعلامات/
  16. السلام عليكم ورحمة الله وبركاته جزا الله أخوتي وأساتذتي الكرام كل خير أحسن الله اليكما لقد وجدت الحل والحمد لله - كنت أكتب الاستعلام بطريقة خاطئة أضفت علامة أقتباس زائدة بدون قصد (دا الأكسس دا المعاملة معاه صعبة قوي حرف واحد ما بيعدهوش دا ايه معاملة يهود 😀).
  17. جزاك الله خيرا أخي أبو بسملة اشتقنا للتواصل معكم ومع سائر الاساتذة الكرام بالمنتدي. أخي جرب هذا ولكن لم يفلح ظهرت رسالة خطأ 3420 تقول "object invailid or longer set" = وأظن أن هذا يعني أن "ALike" غير موجودة بالأكسس ملاحظة: أنا مازلت استخدم الأكسس كواجهة امامية
  18. السلام عليكم اولا أخي أنصحك أن تبتعد عن الأسماء المحجوزة بالأكسس لا تستعملها لتسمية عناصر التحكم أو الحقول بالجداول وهكذا فهذا سيؤدي بك للوقوع بمشاكل عند استخدام الأكواد فمثلا كلمة (Width) كلمة محجوزة ثانيا- هذا محاولة للحل لعلها تفيدك جرب هذا test.accdb
  19. السلام عليكم ورحمة الله وبركاته جمعة مباركة عليكم جميعا ان شاء الله أساتذتي الأحبة أستخدم استعلام داخل فورم للبحث بهذا الشكل الموضح بالصورة , ولكن دعت حاجة العمل لربط البرنامج بقاعدة الـ sql server فلم يعد يعمل الفورم كما كان بعهده السابق - فهل هنالك اختلافات معينة يجب مراعاتها عند انشاء الاستعلام بعد الربط بال sql server وهذا هو شكل الاستعلام SELECT databyBranchQry.* FROM databyBranchQry WHERE (((databyBranchQry.CustID)=[Forms]![InquiryFrm]![Tx0])) OR (((databyBranchQry.CustName) Like "*" & [Forms]![InquiryFrm]![tx0] & "*")) OR (((databyBranchQry.Address) Like "*" & [Forms]![InquiryFrm]![tx0] & "*")) OR (((databyBranchQry.KomiCrdNo)=[Forms]![InquiryFrm]![tx0])); قد وجد هذه الاختلافات التي تحدثت عنها مايكرسوفت هنا https://support.microsoft.com/ar-sa/office/مقارنه-access-sql-مع-sql-server-tsql-f09f180f-c005-4ff3-812f-14a5eb7902c8 ولكن بعد اجراء التغيرات من النجمة الي العلامة المؤية لم يحدث أي تغير وظل الفورم صامتا لا يبحث أرجو المساعدة فقد حاولت كثيرا عقد مصالحة بين الأكسس والسرفر ولم يقبلا التصالح حتي الآن - الفزعة يا أهل الخير 😀 وتحياتي للجميع
  20. اعتذر لتأخري بالرد لانشغالي ببعض أمور دنياي جزاكم الله عنا خيرا سأعمل ان شاء الله علي رفع نموذج لما قد فهمت من شرحكم الكريم - أضم فيه بعض الأفكار من الاساتذة الكرام المشاركين بالردود - علي حسب فهمي اعده ان شاء الله بموضوع مستقل للنقاش والتصويب واعتذر مرة أخري عن تأخري بالرد.
  21. جزاكم الله خيرا لحسن ظنكم بي أنا فعلا انشغلت ولكن ليس كما تفضلتم بالعشر الأواخر (وياليتني فعلت وها قد انفلت منا الشهر ) تقبل الله منا ومنكم صالح الأعمال وجعلنا واياكم ممن اعتق الله رقابهم من النار في هذا الشهر الكريم هل تعنون بتوضيحكم السابق انه سيتم التعامل مع الصنف كرتون والصنف مغلف علي كونه صنف واحد من خلال الكود المتشابه علي يسار البار كود بين الكرتون وما بداخلها من مغلفات ولكن ما ظهر لي من الصورة أن الصنف تم ادخاله بالوحدة الاجمالية الكرتون وتم احتساب الكمية الاجمالية وفقا للكمية المخزنة التي تعادل الكرتون من هذا الصنف مثلا تم شراء 20 كرتونة كاتشب وتم تخزين الكمية 480 علي اعتبار ان الكرتون يحوي 24 عبوة أعتقد أن الأمر بحاجة لمزيد من التوضيح ( بنسبة لصعيدي مثلي 😀) لو افترضنا أننا سننشأ module سيقوم بمعالجة كود الصنف واستخراج كونه كرتون أو مغلف داخل الكرتون أو ظرف داخل المغلف فما ضابط لهذا والأكواد مختلفة من صنف لصنف كما هو واضح من ردكم الكريم فضلا عن كون هناك بعض الاصناف التي لن نجد لها تكويد أصلا لا علي الكرتون أو ما بداخله (هذا يحدث أحيانا في بعض السلع المحلية😨) أعتذر علي الاطالة وجزاكم الله عنا خيرا
  22. هلا تفضلتم علي بمزبد من التوضيح فأنا الآن أشكل علي الأمر هل سيكون تسجيل الاصناف حسب ما تفضل أستاذنا خالد بأن تكون الكرتونة صنف مستقل وما بداخلها صنف آخر ويجري العمل علي هذا أم ماذا؟ وهل عند جرد المخزون في هذه الحالة سيستمر الأمر علي اعتبار الكرتونة صنف وما بداخلها صنف آخر أم سيتم جمع الكمية واعبارهما صنف واحد؟
  23. أستاذي وأخي جزاك الله عنب خيرا وجعله الله في موازين حسناتكم الفديو فعلا جميل ولكني فوجئت بأنه يناهز الساعتين لذا لم أدخل لضيق الوقت. وكذلك الشكر موصول لاستاذنا @ابو تراب الذي قام بتلخيص الموضوع والاشارة الي الوقت الذي به الفائدة المطلوبة فجزاكما الله عني خيرا وأحسن أليكم وكل من ساهم بكلمة وأرشدنا ولو بحرف فجميعكم أهل فضل وخير علي ومنكم نتعلم واليكم نلجأ فيما جهلنا من بعد الله سبحانه.
×
×
  • اضف...

Important Information