
AbuuAhmed
الخبراء-
Posts
1071 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
17
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو AbuuAhmed
-
طلبك غريب !!!
-
شاركوني في تهنىة انفسنا بخبير جديد ،أخونا ابو احمد AbuuAhmed
AbuuAhmed replied to jjafferr's topic in قسم الأكسيس Access
حياك الله أستاذ جعفر ، وشكرا للجميع. -
شاركوني في تهنىة انفسنا بخبير جديد ،أخونا ابو احمد AbuuAhmed
AbuuAhmed replied to jjafferr's topic in قسم الأكسيس Access
فاجأتوني ، شكرا لكم على الثقة والترقية ، وشكرا لكم جميعا على التهنئة ، وإن شاء الله أكون عند حسن ظنكم دائما. -
حياك الله أخي ، لم أنزل مثالك ، أنا فقط لفت انتباهي استخدام دالة Nz وكتبت تصحيح لكتابتها مباشرة في المشاركة. أخي أنا لا أريد أن أكون ضيفا ثقيلا في المنتدى ، واصل مع الأخ @Barna وإذا سمح لي بالتداخل فابشر بالفزعة.
-
يجب أن يكون هذا السطر كالتالي: Forms!Form1.ID = Nz(DMax("[ID]", "InvoiceSavetbl"),0) + 1 أو هكذا Forms!Form1.ID = Nz(DMax("[ID]", "InvoiceSavetbl")) + 1 والأولى أفضل لن تظهر عندكم المشكلة قبل التصحيح إلا إذا كان الجدول فارغا.
-
فتح شجرة الحسابات ونقل التركيز لحساب محدد
AbuuAhmed replied to محمد القدسي's topic in قسم الأكسيس Access
هذا يعطينا رقم ترتيب السجل (الفهرس) وفي مثالي زدت عليه 2 واحد لأن الفهرس في الجداول يبدأ بصفر والثاني لأنه تم إضافة عنوان للشجرة. -
فتح شجرة الحسابات ونقل التركيز لحساب محدد
AbuuAhmed replied to محمد القدسي's topic in قسم الأكسيس Access
الحمد لله تقلص الحل إلى سطر واحد فقط 🙂 TreeView1.Nodes("A" & Me.AccID).Selected = True الأخ @محمد القدسي لقد قمت بتنظيم الكود كشكل فقط لتسهيل المراجعة وفهم أدائه. سأجعل هذا المثال لدراسة الشجرة والوصول إلى حلول جديدة إن وجدت. شجرة حسابات_04.rar -
فتح شجرة الحسابات ونقل التركيز لحساب محدد
AbuuAhmed replied to محمد القدسي's topic in قسم الأكسيس Access
تم التخلص من الاستعلامات واستبدالها بعبارة SQL ، وعبارة الـ اس كيو ال مطلوبة بشدة عندما يريد المبرمج أن يبدل نوع رقم الحساب من نصي إلى رقمي. شجرة حسابات_03.rar -
فتح شجرة الحسابات ونقل التركيز لحساب محدد
AbuuAhmed replied to محمد القدسي's topic in قسم الأكسيس Access
عملت لك حل يفي بالغرض ولكني أعتقد أنه غير مثالي ويمكن يوجد حل أقصر لدى المتمرسين في موضوع الشجرة. حلي عبارة عن استعلامين وشفرة في زر حفظ. شجرة حسابات_02.rar -
فتح شجرة الحسابات ونقل التركيز لحساب محدد
AbuuAhmed replied to محمد القدسي's topic in قسم الأكسيس Access
لو كنت أرفقت مثال لوجدت بدل الفزعة فزعات ، توكل على الله وضع مثالك -
استخدم دالة التنسيق Format: Format([MyTimeTxtbox], "hh:mm") 'غير متأكد الآن استخدام mm للدقائق 'ربما تكون nn
-
طبعا هذا فحص خاطئ ، حيث من غير المنطقي جمع قيمة مع نوع قيمة.
-
عملت فحص للدالة وكانت مخرج الدالة فارغ Empty وليس صفر ، والـ vba يتعامل مع الفارغ كصفر في العمليات الرياضياتية. Debug.Print "*" & Nz(Null) & "*", VarType(Nz(Null)), 2022 + Empty والنتيجة: ** 0 2022
-
تطبيقها هنا خاطئ: آ =Nz(([sale_price]-[Text58],0)*[sale_qty]) وتطبيقها الصحيح هكذا: =Nz([sale_price],0)-Nz([Text58],0)*Nz[[sale_qty],0) وإذا أردت ضرب الكمية في ناتج الطرح تكون كالتالي: =(Nz([sale_price],0)-Nz([Text58],0))*Nz[[sale_qty],0)
-
عايز احسب العمر باليوم والشهر والسنة بالطريقة الصحيحة
AbuuAhmed replied to محمدمطر's topic in منتدى الاكسيل Excel
أخي أحيانا الشرح يحتاج وقتا أكثر من وقت الحل. رؤوس أقلام: - حذف يوم من حقل "التاريخ" ليوافق نتائجك. - ركزت على حقل اليوم على أن لا يكون أقل من صفر أو يكون بطول شهر حقل "التاريخ" بعد إنقاصه يوما: فإذا كان أقل من صفر عدلت قيمته إلى صفر وإذا كان بطول الشهر كذلك صفرته وزدت الشهور شهرا وإذا وصلت الشهور 12 صفرت الشهور وزدت السنين سنة. حتى لا تتعب رأسك حول المعادلات إلى دالة vba أو ابحث عن دالة جاهزة من عمل الأستاذ جعفر بمنتدى الأكسس. -
عايز احسب العمر باليوم والشهر والسنة بالطريقة الصحيحة
AbuuAhmed replied to محمدمطر's topic in منتدى الاكسيل Excel
الأمر فيه صعوبة ، وباستخدام شفرة VBA يسهل العملية. اضطررت أن أضيف عمود للوصول إلى أفضل نتيجة ممكنة. مع ملاحظة أن حسابك اليدوي اثنتان منهم خطأ والأخيرة فقط صحيحة. جرب وخبرنا: طرسقة حساب تاريخ الميلاد بطريقة صحيحة_02.xlsx -
أوقات الصلاة
- 1 reply
-
- 3
-
-
-
شكرا لمروركم ، صممتها لدالة حساب المدة فقط. تم التعديل على الدالة ولم أقم باختبارها بشكل موسع ، فالتجارب عليكم Function vbBetween(Value As Variant, Min As Variant, Max As Variant) As Boolean If VarType(Value) = VarType(Min) And _ VarType(Value) = VarType(Max) Then vbBetween = Value >= Min And Value <= Max End If End Function
-
ابحث عنها بنفسك ، فما لا تجلبه الرياح تأخذه الزوابع. معلومة أخيرة ، في مديولي دالتين لحساب المدة بطريقتين مختلفتين وإجراءين لفحصهما ، يمكنك التخلص من الدالة التي ينتهي اسمها برقم 2 ويمكنك حذف الإجراءين أيضا ، فقط أنت تحتاج لدالة المدة التي ينتهي اسمها برقم 3 ودالة حصر المدة Between. موفقين.
-
أخي @محمد احمد لطفى ، هل اختيارك لأفضل إجابة بناء على مقارنة وتفاضل بين الحلول؟ أرجو تزويدي بمؤاخاذاتك على مثالي ، حتى أتجنب أخطائي مستقبلا وأطور من نفسي وأتقن إرضاء السائلين. عموما حتى المثال الأخير به خطأ ولا يزال مثالي باعتقادي هو الأصح بنتائجه ، مع الإعتذار للزميل والأخ @أبو إبراهيم الغامدي فهو من أقوى المبرمجين في الموقع الذين يجيدون كتابة الشفرات.
-
تمت إضافة الكود على المثال: finish_02.rar
-
Function Between(inDate As Date, SP As Date, EP As Date) As Boolean Between = inDate >= SP And inDate <= EP End Function Public Function DatePeriod(ByVal StartDate As Date, ByVal EndDate As Date, _ Optional ByRef Per1 As Integer, _ Optional ByRef Per2 As Integer, _ Optional ByRef Per3 As Integer) As String Const SP1 = #1/1/1990#: Const EP1 = #9/6/2016# Const SP2 = EP1 + 1: Const EP2 = #9/30/2020# Const SP3 = EP2 + 1: Const EP3 = #1/1/2050# '------------------ If EndDate < StartDate Then GoTo Result If Not (Between(StartDate, SP1, EP3) Or _ Between(EndDate, SP1, EP3) Or _ Between(SP1, StartDate, EndDate) Or _ Between(EP3, StartDate, EndDate)) Then GoTo Result If StartDate < SP1 Then StartDate = SP1 If EndDate > EP3 Then EndDate = EP3 '------------------ If Between(StartDate, SP1, EP1) Then Per1 = DateDiff("w", StartDate, IIf(EP1 > EndDate, EndDate, EP1)) If EP1 < EndDate Then StartDate = SP2 Else GoTo Result End If If Between(StartDate, SP2, EP2) Then Per2 = DateDiff("m", StartDate, IIf(EP2 > EndDate, EndDate, EP2)) If EP2 < EndDate Then StartDate = SP3 Else GoTo Result End If Per3 = DateDiff("m", StartDate, IIf(EP3 > EndDate, EndDate, EP3)) Result: DatePeriod = Per1 & "," & Per2 & "," & Per3 End Function Sub DatePeriodTest() Dim Per1 As Integer, Per2 As Integer, Per3 As Integer Debug.Print " " & DatePeriod(DateSerial(1989, 9, 1), DateSerial(2050, 1, 1), Per1, Per2, Per3) Debug.Print Per1, Per2, Per3 End Sub إن شاء الله فهمت طلبك بشكل صحيح.
-
محاولة منى إذا فهمي لطلبك صحيح:
-
وهذه أيضا من عندي: If L Like "[0-9]" Then أو If L Like "[0123456789]" Then
-
أكثر ما أكرهه في البرمجة هو تكديس الأكواد للوصول إلى أقصر كود. من الحالات التي مرت علي أذكر منها حالتين: الأولى صاحبها يستخدم الفاصلة بين الأسطر ":" ولا يستخدم أسطر فارغة بين الدوال ليخرج ويعلن أن كوده هو الأفضل لأنه الأقصر!! والأخرى صاحبها يستخدم نتائج بعد تحضيرها منفصلة خارج الكود الأصل ، ثم يستخدمها كثوابت ويستخدم أسطر بيانات تصل طول السطر فيها إلى ما يقارب الألف حرف ليعلن أن كوده هو الأقصر والأسرع. ملاحظة أخرى عملية السرعة ليست مطلوبة في كل الأوقات ، نحتاجها أكثر في العمل الذي به حسابات كثيرة ومتكررة وهذا نادر جدا ، أما لو كانت عملية تحويلات لملف بيانات قديمة ولمرة واحدة مثلا فلا داعي للإنشغال بالسرعة والإختصار فالكود سوف يستخدم مرة أو مرتين ثم يهمل/يترك/يرمى لانتهاء الحاجة له. حركتوا مشاعري المدفونة.