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

Gamal.Saad

الخبراء
  • Posts

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

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

  • Days Won

    3

مشاركات المكتوبه بواسطه Gamal.Saad

  1. 1 hour ago, alzahrani07 said:

    لكن إذا أضطر الأمر أستخدم كود خاص

    Function

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

    سيبك من الأجانب دول تفكيرهم تقليدي

    1 + 1

    = 2

    وده طبعا مينفعش معانا 

    لازم تبتكر يعني مثلا

    1+1

    = 3 - 1

     

    المهم فكرة الدالة على السريع إنها بتشوف القيم المسجلة في المربعات الثلاثة مجتمعة

    وبناءا على تلك القيم يتم انشاء كود استعلام

    ثم نجعله مصدر النموذج

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

    وثانيا تكتب الكود التالي في محرر الفيجوال بيسك

    وجرب

    واعمل أكثر من تجربة

    مرة قيمة خالية هنا

    ومرة قيمتين خاليتين هناك وهكذا

     

    Option Compare Database
    Dim strSQL, a, b, c As String
    
    Private Sub SectionSearch_AfterUpdate()
    rs
    End Sub
    
    Private Sub StatusSearch_AfterUpdate()
    rs
    End Sub
    
    Private Sub UserSearch_AfterUpdate()
    rs
    End Sub
    
    Function rs()
    strSQL = ""
    a = strSQL & IIf(Nz(Me.UserSearch, 0) = 0, "", " (Table1.User) Like '*" & "" & Me.UserSearch & "" & "*'")
    b = strSQL & IIf(Nz(Me.SectionSearch, 0) = 0, "", " (Table1.Section) Like '*" & "" & Me.SectionSearch & "" & "*'")
    c = strSQL & IIf(Nz(Me.StatusSearch, 0) = 0, "", " (Table1.Status) Like '*" & "" & Me.StatusSearch & "" & "*'")
       If Nz(Me.UserSearch, 0) = 0 And Nz(Me.SectionSearch, 0) = 0 And Nz(Me.StatusSearch, 0) = 0 Then
       Me.RecordSource = "SELECT Table1.ID, Table1.User, Table1.Section, Table1.Status FROM Table1; "
       Else
              strSQL = "SELECT Table1.ID, Table1.User, Table1.Section, Table1.Status FROM Table1 WHERE "
              If Nz(Me.UserSearch, 0) <> 0 Then
                  strSQL = strSQL & a
                     If Nz(Me.SectionSearch, 0) <> 0 Then
                        strSQL = strSQL & " and " & b
                            If Nz(Me.StatusSearch, 0) <> 0 Then strSQL = strSQL & " and " & c
                    Else
                            If Nz(Me.StatusSearch, 0) <> 0 Then strSQL = strSQL & " and " & c
                    End If
              Else
                    If Nz(Me.SectionSearch, 0) <> 0 Then
                        strSQL = strSQL & b
                            If Nz(Me.StatusSearch, 0) <> 0 Then strSQL = strSQL & " and " & c
                    Else
                            If Nz(Me.StatusSearch, 0) <> 0 Then strSQL = strSQL & c
                    End If
              End If
       Me.RecordSource = strSQL
       End If
    Me.Requery
    End Function

     

    • Like 3
  2. ههههههه

    مش عارف أنت مش محظوظ معايا ليه

    على العموم الملف كان عندي شغال

    ولما  أنا غيرت الاسم  لكي ألأرفعه لك لم أنتبه لوجود مسافات بالاسم الجديد

    والمسافات تسبب مشكلة عند استخدام معاملات  برنامج الضغط

    لذلك حذفت المسافات واشتغل عندي طبيعي

     

     

    النسخ_الاحتياطي.rar

  3. باستخدام الاستعلام يمكنك تحديد الاسماء المكررة وعدد مرات التكرار كما بالصورة

    http://do.php?img=328178

    وهناك معالج انشاء الاستعلام يمكنك انشاء استعلام باختيار نوع استعلام القيم المكررة

    Find duplicate query wizard

     

    32 minutes ago, حمدى الظابط said:

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

    فعلا أنا لم أستخدم دالة استخراج وفصل اسم الاب الموجودة في مرفقك الأول

    وعملت كود جديد

     

     

  4. Quote

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

    هل تقصد :

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

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

    النقطة دي مبهمة

     

    كما قلت لك سأبدأ بالدالة الحسابية التي تبدأ مع جدول الحركة

    لذلك أخبرني لو السجل به صنف مكونات منتج معين

    وقمنا بالاضافة أو الخصم

    ولو السجل به منتج رئيسي وقمنا بالاضافة أو الخصم

    ودور الدالة الحسابية التي تحسب متوسط السعر هل تحسب للجميع أم ماذا ؟

    واعذرني فالموضوع كله تنظيمي وتخطيطي لا أكثر ومن السهل تطبيق المعادلات واحضار القيم

    لكن طبقا لطريقة شرح عملية بأصناف و أرقام حسابية

     

  5. @ابوخليل بعد إذن أستاذنا 

    @رمهان وبعد إذن أستاذنا

    @alzahrani07 أستاذ

    سيادتك ما تريد فلتر

    وما تريد قيمة افتراضية

    فهل تريد حل يعتمد على استخدام دالة

    Function

    وتؤدي طلبك بدون فلتر وبدون استبدال قيم ؟

    وتعتمد  على تكوين استعلام مخصص لطلبك

    ويمكن أن تبحث بحث متعدد للثلاثة مربعات بحث معا أو فرادي أو حسب ما تريد الجمع بينهم

     

    وأنا أريد أن أعرف رأيك كي لا أضيع الوقت في الدالة ثم تقول لي  لا أريد هذه الطريقة

  6. أعتقد  أهم مشكلة نبدأ بيها هي هذه النقطة

    8 hours ago, elkareee said:

    على فكرة هعزمك على أكلة كوارع لما الفكرة دى تتم :wavetowel:

    هههههههه

    ووعد الحر دين عليه

    8 hours ago, elkareee said:

    لما اكتب الكمية فى خانة الوارد (In AfterUpdate) يقوم باحث عن الكود فى جدول المنتجات لو لقاه يبقى الصنف ده منتج تام يقوم جامع اخر متوسطات اسعار لمكونات المنتج ويكتبها فى AvgPrice  ثم يضربها فى قيمة الوارد اللى انا هكتبها ويكتب الناتج فى zvalue ثم ينسخ الناتج ويضيفه فى Price فى الجدول التانى يعنى نفس طريقة مرفقك بس بيها بعض التعديل طيب فى حالة انه ملقاهوش فى جدول المنتجات يبقى يضيف الكمية بدون ما يشغل اى معادلات خااالص لأنه فى الحالة دى هيبقى مكون وبالتالى هندخل فى الفورم التانى بتاع التقييمات نديله قيمه وساعتها هيتحسب زى ماحنا عاوزين معايا ؟؟ .

    طيب الحالة التانية طبعا منطقيا الصرف بيتم بعد الاضافة تمام ؟. طيب فى حالة الصرف يعنى Out AfterUpdate

    صاحبنا هيقوم باحث عن الكود فى جدول المنتجات ولو لقاه يقوم جايب اخر متوسط سعر للمنتج (ماهو هنا بقى هيبقى اتقيم قبل كده وقيمته موجودة فى الجداول ) ويقوم كاتبه فى AvgPrice ويضربه فى كمية الصادر ويكتب فى zvalue قيمة الحركة وبلاش يكتب متوسط السعر تانى فى جدول المنتجات لأنه فى الحالة دى متغيرش اساسا عن المرة اللى فاتت طيب ولو ملقاهوش برده يضيف حركة الصرف بدون تشغيل اى معادلات زى فوق كده واحنا فى نموذج التقييم هنتعامل معاه تماااام ؟؟؟

    وطبعا فى كل الحالات بيحسب رصيد بعد الحركة الأول عشان يحسب بناء عليه قيمة الرصيد المتبقى زى مانتا عارف

    تمام تمام

    هحاول إن شاء الله أطبق كلامك على ملف تقييم 6

    وزي ما أنت قلت كلها تجارب وتعديلات

    مفيش حاجة فنية مستحيلة

    لكن اليوم عندي الوقت ضيق لذلك  أعطني وقتا طوال اليوم 

    وأقرب تعديل سأوافيك به إن شاء الله

  7. 5 hours ago, elkareee said:

    مشكور استاذ جمال بس حابب اوضحلك الخطوة الجاية بالنسبة ليا عشان متعملش حاجة ونرجع نغير فى الفكرة

    أوك

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

    بمعنى

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

    وفي المرة التالية نستعين بهذا الرقم وهو عبارة عن متوسطات أسعار مكوناته لحساب القيمة

    أليس كذلك ؟

    طيب

    بالنسبة للمكونات الفرعية للمنتج زي لوحة المفاتيح مثلا

    فين هيتسجل سعرها ؟ هل في جدول المنتجات زي جهاز الكمبيوتر ؟

     

    على العموم جرب المرفق وممكن نعدل عادي

     

    2.rar

    • Like 1
  8. هلا أخي

    أرجو أن تلتمس لي وللزملاء العذر

    فلديك جدول باسم

    Ded_K4_In

    وأنت ذكرت جدول

    K4_History

    فما علاقة الجدولين ببعض؟

    وأين التاريخ الذي تقصده؟ شو اسم الحقل المسجل به التاريخ؟ لم أجد أي تواريخ مسجلة بالجداول

    وأرجو ارفاق مثال يحتوى فقط على النماذج والاستعلامات والجداول والتقارير

    التي تخدم طلبك

    حتى لا يتشتت من يريد مساعدتك

    وتقبل تحياتي

    وكل عام وأنتم بخير

    • Like 1
  9. 31 minutes ago, elkareee said:

    تفضل مثال على الاكسل لتأكيد المطلوب

    Ex.rar

    تمام تمام

    الحمد لله فهمت برغم أن ملف الاكسل الارقام والخامات مش مطابقة لنفس ملف الأكسس

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

    وإن شاء الله خير

    • Like 1
  10. زين

    علشان أتأكد أني فهمت

    في مثالك:

    المطلوب قيمة السعر في جدول المنتجات

    field: price ________ table: products

    وهذا يساوي

    آخر  متوسط سعر لكل مكون من مكونات هذا المنتج مضروباً في العدد الموجود بالجدول بوم

    field: con____________ table: Bom

    ثم نجمع ما سبق

    اذا كان فهمي خطأ فأرجو التوضيح بأرقام حسابية من خلال التطبيق على المثال السابق ارفاقه أو مثال آخر

    مع توضيح العدد

    0.0002083335

    الموجود بجدول بوم هو ناتج ايه ؟

     

     

    • Like 1
  11. 2 hours ago, elkareee said:

    أستاذنا  @Gamal.Saad وحشتنا :wavetowel: محتاجك هنا اظنك هتندمج فى الموضوع بسرعة لدرايتك السابقة به وهتفهم انا محتاج ايه بالظبط

    مشكور أخي محمد بك زينة شباب المنصورة

    أنا أتمنى طبعا  من الله التوفيق لك والمساعدة سواء عن طريقي أو طريق أساتذة المنتدى المحترفين

     

    لكن نبدأ بطلبك الأول حيث عندي استفسارين:

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

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

    أم حاصل ضرب متوسط السعر في العدد

    con

    ?

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

    أو بالأصناف الفرعية بجدول

    Bom

    ؟

     

     

    • Like 1
  12. نفذت لك الفكرة التي أخبرتك عنها سابقا وهي الاستعانة بجدول وسيط

    لكن ارجو أن تنتبه إلى أن البرنامج يتعامل مع الاسماء التالية باعتبار أنهم

    ليسوا أخوة

    مثلا

    "حمدي الظايط طه عبدالرحمن"

    " فتحي الظايط طه عبدالرحمن محمد"

    نظرا لعدم كتابة الاسم الرباعي في أحدهم

    الناجحين3.rar

    • Like 1
  13. 13 hours ago, king5star said:

    للرفع

    هههههههه

    لا أعلم من الذي يجب عليه أن يقولها أنا أم أنت

     

    On ٩‏/٦‏/٢٠١٧ at 11:09 AM, Gamal.Saad said:

    في حدث عند التحميل يرفض النموذج أمر الفتح الجديد في وضع التصميم

    DoCmd.OpenForm Name_Frm, acViewDesign

     

    أوك

    هل تريد تشغيل الكود لكافة النماذج عدا النموذج الحالي في كل مرة يفتح فيها النموذج الحالي ؟

    أم تريد تشغيل الكود لكافة النماذج عدا النموذج الحالي مرة واحدة فقط أثناء فتح النموذج الحالي؟

    أم تريد تشغيل الكود لكل النماذج بما فيهم النموذج الحالي في كل مرة فتح فيها النموذج الحالي ؟

    أم تريد تشغيل الكود لكل النماذج بما فيهم النموذج الحالي مرة واحدة فقط أثناء فتح النموذج الحالي؟

     

    الحالات الأربعة شبه متاحة من الوهلة الأولى فيما عدا حالة واحدة

    للرفع

    +

    up

     

    • Like 1
  14. 24 minutes ago, حمدى الظابط said:

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

     

    تمام وصلت الفكرة

    ولكي تحل المشكلة جرب تقوم بعمل جدول مؤقت لالحاق البيانات من استعلام1

    ثم تقوم باستخراج الاسماء المتشابهة من الجدول المؤقت

    ثم تحدث الجدول الأصلي

    والنجاح مؤكد إن شاء الله

    لكن تبقى مشكلة تصحيح البيانات

    يعني تحذف المسافات الزائدة وتوحد الهمزات وخلافه في الجدول الأصلي قبل بداية الحل حتى تكون النتيجة صحيحة

     

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

    16 minutes ago, alwasili said:

    صراحة وجدت مثال رائع للبحث عن السجلات

    فعلا ويعطيك امكانية لاختيار الحقل الذي تريد البحث فيه ويظهر كل شيئ أمامك في النموذج

    17 minutes ago, alwasili said:

    ولكني عجزت في تطبيق ذلك على اعمالي 

    أرفق ملف بسيط لبرنامج لك وسنحاول إن شاء الله التطبيق

    19 minutes ago, alwasili said:

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

    كما ترى الطريقة تتلخص في كود الفلترة التالي

    
    Private Sub comb_Search_AfterUpdate()
        On Error Resume Next
    Me.Filter = Nz(comb_Search, "id") & " Like ""*" & txt_Search & "*""": Me.FilterOn = True
    End Sub
    
    ''ÑãåÇä
    ''ÇæÝíÓäÇ
    
    Private Sub txt_Search_Change()
        On Error Resume Next
            FindAsType = txt_Search.Text
            Me.Filter = (Nz(comb_Search, "ID")) & " Like ""*" & FindAsType & "*""": Me.FilterOn = True
            txt_Search.SetFocus
            txt_Search = FindAsType
            txt_Search.SelStart = Len(FindAsType)
    End Sub

    الجزء الأول من الكود يقوم بالفترة اذا قمت باختيار حقل الفلترة وتستند الفلترة على القيم الموجودة في مربع البحث

    والجزء الثاني يقوم بالفلترة مع كتابة أي شيئ في مربع البحث

     

    لكن هناك خطأ في الكود التالي :

    Nz(comb_Search, "id")

    المفترض أنه اذا لم تقم باختيار حقل للبحث فإنه تلقائيا يختار الحقل

    ID

    وهو حقل غير موجود في مصدر البيانات مما تظهر معه رسالة خطأ

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

    شيئ آخر :

    جرب استبدال الكود كاملاً بهذا  الكود التالي وانظر الفرق

    Option Compare Database
    
    Private Sub comb_Search_AfterUpdate()
    Me.Filter = Nz(comb_Search, "CustomerID") & " Like ""*" & txt_Search & "*""": Me.FilterOn = True
    End Sub
    
    Private Sub txt_Search_Change()
            Me.Filter = (Nz(comb_Search, "CustomerID")) & " Like ""*" & txt_Search.Text & "*""": Me.FilterOn = True
            txt_Search.SetFocus
            txt_Search.SelStart = Len(txt_Search.Text)
    End Sub

    وأخيرا :

    ربما يكون عدم التطبيق في برامجك راجع إلى الفلترة في اللغة العربية حيث أن المثال لا يدعم الحروف المتشابهة مثل الهمزات إلى آخره

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

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

    وشكرا جزيلا لمن قام بهذا العمل ولكل أساتذة المنتدى الأكفاء

     

     

     

     

    • Like 2
  16. 17 hours ago, حمدى الظابط said:

    ومن هنا تأتى المشكلة بعد تجربة البرنامج عندما نبحث يدويا عن اسماء اولياء الامور المتشابه فى اكثر من 3000 سجل يعطى نتائج غير مضمونة وغير صحيحة ومجهود على المستخدم  

    المطلوب كيف يتم استخراج اسماء اولياء الامور الذين لهم اخوات بالمدرسة واستدعائهم من السجلات تلقائيا

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

    والأفضل مرجعية اسم ولي الأمر لشيئ أكثر ثباتا مثل الرقم القومي لولي الأمر أثناء عملية ادخال البيانات

    17 hours ago, حمدى الظابط said:

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

    أنا بس عندي استفسار بخصوص الدالة التجميعية

    هل وظيفتها هي استخراج اسم الأب فقط ؟

    بمعنى آخر

    لماذا نفصل الاسم لأجزاء ثم نعيد تجميعه مرة أخرى لتكوين اسم الأب ؟ كان ممكن نكتفي باستبعاد الاسم الأول الممثل للطالب فقط ويتبقى اسم الأب

    أم أن هناك وظيفة أخرى وشيئ غير واضح لي بالنسبة لهذه النقطة

    وأرجو أن تعذرني على سؤالي فربما أستفيد من موضوعك

  17. بعد اذن الأستاذ عبدالفتاح كيرة

    ومعذرة أستاذ طارق

    سأجيب سؤالك الأول في بداية الموضوع

    وسويت لك تقرير اسمه

    Query1

    يضم الثلاثة استعلامات المستهدفة

    tajmiaa.rar

  18. 9 hours ago, ali2017 said:

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

    ولكن  اذا ما اردت التعديل على الدرجة     ما العمل ؟؟ 

    @Shivan Rekany بعد إذن الأستاذ

    أقترح عليك يا أستاذ /علي   تضغط على مفتاح الشفت ثم تقوم بالتعديل

    أضف الكود هذا إلى البرنامج

    Private Sub a1_KeyDown(KeyCode As Integer, Shift As Integer)
    If (Shift) Then Me.a1.Locked = False
    End Sub

     

×
×
  • اضف...

Important Information