اذهب الي المحتوي
أوفيسنا

ابوخليل

أوفيسنا
  • Posts

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

  • Days Won

    245

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

  1. expe1:GetMonths30([TxtDate1];[TxtDate2]) لاحظ اختلاف الفاصلة على اعتبار TxtDate1 و TxtDate2 حقول في الاستعلام او الجدول المصدر
  2. Recordset.RecordCount تعد السجلات والجمع انما هو للحقول .. اي اننا سنجمع حقل محدد ضمن مجموعة السجلات sum نستخدمها في الاستعلامات وايضا في النموذج او التقرير لجمع حقل محدد وينطبق هذا ايضا على Count مفردة للعد اما جمع حقل في محرر الفيجوال فانت مخير بين طريقتين : اما ان تصنع جملة استعلام بالمطلوب واما ان تستخدم الدالة DSum
  3. استخدم هذه الدالة Function GetMonths30(Date1 As Date, Date2 As Date) As Long Dim d1, m1, d2, m2 As String Dim y1, y2 As Integer Dim sum_d, sum_m, sum_y, sum_days As Integer Dim tst1, tst2 As Long d1 = Format(Day(Date1), "00"): d2 = Format(Day(Date2), "00") m1 = Format(Month(Date1), "00"): m2 = Format(Month(Date2), "00") y1 = Year(Date1): y2 = Year(Date2) tst1 = y1 & m1 & d1: tst2 = y2 & m2 & d2 If tst2 < tst1 Then Exit Function sum_d = Abs(Int(d2) - Int(d1)) sum_m = Abs(Int(m2) - Int(m1)) * 30 sum_y = (y2 - y1) * 360 sum_days = sum_y + Abs(sum_m - sum_d) GetMonths30 = sum_days End Function ويتم مناداتها لحساب المدة بين تاريخين هكذا : Me.txtDays = GetMonths30(Me.TxtDate1, Me.TxtDate2)
  4. اخي الكريم يجب الاهتمام باختيارك للعنوان المناسب الذي يصف الموضوع . كي لا تعرض موضوعك للاغلاق
  5. جرب هذا استبدله بدل الموجود في مصدر تحكم الحقل : =Nz([tx23])+NZ([tx24])+NZ([tx25])
  6. في مثالي اعلاه عند اضافة عنصر جديد ستضيف سطر العنصر في مكانين فقط مفعل = لا ضمن حدث الدالة المصنوعة مفعل =نعم ضمن حدث زر الفائمة الرئيسي الخاصة بهذا العنصر
  7. انظر لما قصدته في مثالك المعدل واجهة جميلة منسدلة2.rar
  8. الحمد لله على سلامتك اخونا وحبيبنا واستاذنا خليفة .. سلامة دائمة ان شاء الله وعودا حميدا ..
  9. جميل جدا .. عندي ملاحظة على الاكواد التي وضعتها لإظهار واخفاء الازرار . يوجد طريقتان يمكنك الاخذ باحدهما لجعل عملك سهلا الأولى : ابداعات الأستاذ موسى هنا الثانية : ان تعمل كود يخفي جميع الازرار الفرعية عند تحميل البرنامج ... وعند الضغط على الزر الرئيسي تستدعي هذا الكود اولا .. ثم تسمح لما تحته بالظهور في هذه الحالة تتجنب اعادة وتكرار كتابة الاسطر .. ايضا يكون التعديل عند الحاجة سهلا يسيرا
  10. بارك الله فيك يابو احمد .. الأجمل والأكمل .. ( فأرى ردي واجبا ولا يسعني الصمت عنها ) ---------------------- كنت استخدمها للقفز عند الأخطاء المنطقية ولكن معالجة هذه الأخطاء اولى من القفز عليها مثلا : عندما يكون في اول الجملة سطر يجلب قيمة من جدول من اجل مقارنته او التأكد من وجوده ، فحينما يكون الجدول خاليا او القيمة غير موجودة يظهر الخطأ عالجته باستخدام الدالة NZ واتعامل بالشرط على اساس القيمة = صفر ... هنا تجاوزت الخطأ الذي سببه عدم وجود القيمة وقس على هذا كثير وهذا هو الذي يجب ان يهتم به المبرمج ويعمل عليه . ومع ذلك هناك اماكن في حدود ضيقة يضطر المبرمج الى الاستعانة بها ، لعجزه عن التصحيح .. اما لخبرته او بسبب فني برمجي بحت ، ولكن بشرط ان يعمل الكود على الوجه المطلوب .. ولا يتسبب في نتائج خاطئة .
  11. صحيح لن يعمل في الاجهزة الأخرى عند نقله . ولكي يعمل يلزم مسح القيمة من الجدول .. وهذه هي الثغرة .لمن عرف سر الحماية ما رأيك لو عملنا عرقلة للمعتدي بحيث لو عمل على افراغ الجدول لن يعمل معه الا بادخال كلمة السر بما يشابه هذا : If IpAddress = DLookup("[IpAddress]", "tblLog") Then Exit Sub End If Dim mypass mypass = "123" str_Title = "الرقم السري مطلوب" str_Prompt = "ادخل الرقم السري" If InputBox(str_Prompt, str_Title) = mypass Then If DCount("[IpAddress]", "tblLog") = 0 Then Call LogIpAddress Exit Sub End If Else MsgBox "لاتملك الصلاحية" DoCmd.CancelEvent DoCmd.Quit End If IP2.rar
  12. جميل جدا .. تمت التجربة .. يوجد ثغرة وهي اذا الجدول خالي يتم فتح النموذج بمعنى يمكنني افراغ الجدول وتشغيل الفورم على اي جهاز وانت ايضا لا يمكنك وضع قيمة في الجدول عندما ترسله لي لأنه سيجد قيمة مغايرة ولن يعمل
  13. نحترم فكرتك .. في الأصل أكسس لم تصنعه ميكروسوفت ليستفاد منه كتوزيع تجاري ، كما هو الحال في اللغات البرمجية الأخرى وتطبيقاتها وانما عملته لخدمات المكتب وتستفيد منه المؤسسات الصغيرة في اعمالها ، مثله مثل اكسل والوورد وبقية المجموعة ,, لاحظ ان معالج اكسس يصنع مشروعا كاملا بضغطة زر . فاذا ارتقينا الى قواعد سيكوال سيرفر فالافضل الارتقاء الى لغات برمجية ارقى وافضل ، والواجهات فيها لا تقارن بواجهات اكسس المحدودة . ما يميز اكسس سهولة ويسر العمل عليه وسرعة التنفيذ ... فما يتم تنفيذه على اكسس في يوم .. سيأخذ قرابة الشهر على اللغات الأخرى والسبب ان القوالب جاهزة في اكسس ولا تحتاج بناء من الصفر
  14. تمام .. عبارة وافية كما لو انك تحزم امتعتك وترسلها الى مكان آخر .. فالمسألة عبارة عن حزم وفك برامج التحزيم مفيدة في جوانب اخرى ( غير الحزم والفك ) بصورة عامة .. تقوم بتشغيل ملفات ضمن الحزمة كما لو انت قمت بها يدويا .
  15. المثال عمل عندي على اكمل وجه بالنسبة للحماية التي يعملها وندوز على الملف: انقر بالزر الأيمن على ملف اكسس ثم اختر الخصائص انظر الصورة : وضع علامة على خانة الاختيار ثم تطبيق / موافق
  16. اتوقع ان الخلل في مركز التوثيق عندك قبل فتح اكسس انقر بالزر الايمن ثم خصائص وازل الحماية ارفقت لك المثال مضغوط .. حتى لا تتم حمايته جرب فك الضغط وانقر نقرا مزدوجا على العقدة tree2.rar
  17. اولا لن تتمكن من رفع من مستواك التعليمي وخبرتك البرمجية ما دمت تستخدم الحروف العربية في البرمجة حينما اكتب كودا محكما يشتمل على حروف عربية .. حينما ارجع اليه بعد فترة لا يمكنني فهمه ولا ماذا يعمل معذرة .. لا اكف عن طبعي في اسداء النصائح ، مع علمي بأنها ثقيلة على المتلقي . على كل حال تم تحقيق طلبك بفتح النموذج المحدد بناء على العقدة tree2.accdb
  18. وهذا حل مشابه لما تفضل به اخوي موسى مع بعض الاضافات Private Sub txt1_AfterUpdate() Dim i As String Me.txt1.SetFocus i = Me.txt1.Value i = Replace(i, "عبد", "عبد" & " ") Me.txt1 = i End Sub الاسماء المركبة2.accdb
  19. انا اعتراضي على العنوان : اكسس والتعامل مع ملفات Dll مهما غيرت امتدادها فاكسس ينظر الى ما بداخلها ويعرف انها جداول اكسس من سنوات عديدة مضت ولا زلت وانا استخدم هذه الطريقة .. ليس من باب الحماية بل من باب منع العبث ويمكننا تسميته تمويه وليس حماية اي ان المستهدف هو الشخص المتصفح المستعجل الذي يفتح الملفات بحثا عن شيء ما . مثلا يريد فتح واجهات البرنامج فيخطيء ويفتح قاعدة الجداول
  20. انا غيرت في المسميات في مثالك كانت الاسماء : نوع CRJ CRI BOEING BOENIG AIRBUS AIRBUS CRJ BOING ARBUS ويبدوا ان فيها اخطاء املائية في الاسماء الثلاث .. وانت قلت : ( انها ثلاث انواع ولكن الارقام تختلف) لذا قمت بتصحيح الاسماء لاحظ BOEING كلها مختلفة عن بعضها .. والبقية مثلها اذا هذه الاخطاء الاملائية موجودة عندك في الأصل وتريد تطبيق فكرتك فيلزمك التالي : عمل حقل يحمل صفة محددة واحدة لهذه الاسماء مثلا .. BOEING ثلاث اسماء مختلفة يجب ان تضع امامها رقما او نصا واحدا .. اي انك تجعلها متشابهه في الصفة ولنقل تضع امام كل واحدة رقم 1 وهكذا تعمل مع بقية الاسماء ... ويكون تطبيق الكود على هذه الصفة كيف تعرف ان الاسماء مختلفة ؟ اعمل استعلام تجميعي لحقل الاسم Group By من جدول TBL_T_TYPE_PLANE
  21. وحماية ثالثة .. ان يحميك الله من كل سوء ، ويطيل عمرك على طاعته
  22. على اعتبار اننا نتكلم عن حماية التصميم .. ليتك قرأت ما كتبته بتمعن .. ابدا لا دخل للدوال والمعادلات بالجداول .. وممكن الجداول مفتوحة بدون حماية ، وازيدك من الشعر بيت .. تستلم مفتاح التسجيل ملكا لك مدى الحياة ، ولكنك لن تتمكن من نقل البرنامج الى كمبيوتر آخر وتشغيله
  23. اهلا ابا طارق لاحظت انك موضوعك هذا مكرر عن موضوعك السابق وكان الأولى ان تتابع هناك على كل حال خذ مني هذه الفوائد : 1- الترقيم التلقائي هو ملك للجدول ولأكسس وليس للمبرمج .. ولا ينصح العبث به .. وغالبا يستخدم كمفتاح له ، ومن هذا الرقم يمكننا اكتشاف عدد السجلات المحذوفة 1- الترقيم التلقائي يصعب تغييره او التعديل عليه الا بكود خاص ونلجأ اليه غالبا عند ادراج ارقام مفقودة . الخلل عندك من البداية حيث جعلت ترقيم الجدول التلقائي رقما للفاتورة . الارقام لا تعني شيئا بجانب البيانات المصاحبة .. اذا غرضك من هذا التعديل هو ترتيب العرض فأرى انه يمكنك معالجة وضعك باضافة حقل ترقيم بجانب رقم الفاتورة وتعمل فيه الترتيب الذي تريد ثم تستخدم الفرز والترتيب بناء على هذا الرقم
×
×
  • اضف...

Important Information