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

محب العلم

04 عضو فضي
  • Posts

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

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

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

  1. السلام عليكم أولا وقبل كل شيء شكرا لك أخي احمد شوقي على الموضوع اسمحوا لي ببعض الملاحظات 1. كلام شوقي كل الاحترام لشركة ميكروسوفت لنجاحها في ذلك وهذا هو المفروض إنه mde تكون محمية من العبث كيف وصلت للإستنتاج أن الكود مدمج مع كود برنامج أكسيس ، ولا تنسى انه الذين عملوا هذه الأداة ليسوا من ميكروسوفت . 2. أيضا كلا شوقي أخي الأداة فقط لإسترجاع النماذج وليس غيرها 3. الأداة لا تعمل ضد نفسها أي لو جربتم أن ترجعوا النموذج الأساسي منها لما استطعتم مع وافر الاحترام والتقدير
  2. السلام عليكم صدقنى حاولت اساعدك هنا وفي مشاركتك الأخرى ولكن كلما أنزل ملفك عندي واحاول فتحه يعطينى الخطأ التالي لا أعرف المشكلة من عندي أو من عنك أو من المنتدى لأنه تحصل كثيرا أرجو ممن يعرف الحل يدلني عليه وأسف أخي أبا همام الطائفي مع وافر الاحترام
  3. وعليكم السلام ورحمة الله وبركاته إضغط هنا لزيارة موضوع يساعدك مع وافر الاحترام والتقدير
  4. حياك الله اختي الوردة الزرقاء ، تفضلي : AdaptiveMesurmentV1.rar مع وافر الاحترام
  5. تحية لكل المشاركين ، يمكن عمل ذلك بتعريف هذه القيم بواسطة الضغط مرتين بزر الماوس على حقل dr ويتم تعريف الحدث عند الضغط المزدوج هكذا : 1. تعريف الحدث هكذا 2.وكتابة الكود هكذا مع وافر الاحترام
  6. حياك الله أختي الوردة الزرقاء ، تفضلي : مع وافر الاحترام
  7. نعم أخي الشقاوي ، صدقت هي بواسطة nz مثلا لو كان عندك متغير a و b وتريد جمعهما طبعا في الحقل الذي ستظهر فيه النتيجة يجب أن تضع a + b فتحدث المشكلة التي تذكرها وهي عدم ظهور النتييجة إذا كانت قيمة a او قيمة b هي null لحل المشكلة نستخدم الاقتران nz هكذا كود nz(a,0) + nz(b,0) وهكذا تستبدل القيمة بصفر إذا كانت null لكل من a و b ------------ شرح إضافي ليس له علاقة بسؤالك كما يمكن استخدام هذا الاقتران أي nz لإرجاع أي قيمة مثلا لنفرض "a = "naser فإن نتيجة ("nz(a,"samer ستكون naser لأن قيمة a ليست null أما إذا كانت قيم a هي null فإن النتيجة لتعبير السابق ستكون samer ----------------------- وللتأكد من فهم طرق استخدم الاقتران nz حاول أن تعرف ما هي نتيجة msgbox في البرنامج الأتي : كود Private Sub Command0_Click() Dim a, b, c As Integer Dim n As String n = "محب العلم يشكر إخوانه الأعضاء على تفاعلهم مع هذا السؤال" a = Null b = 50 c = Nz(a, 50) + Nz(b, 0) n = Nz(Left$(n, 10), "شكرا") MsgBox n & "يشكرك " & c & Nz(Null, "مرة ") End Sub الجواب الصحيح هومحب العلم يشكرك 100 مرة مع وافر الاحترام
  8. صدقت يا أبا غدي ، كود Private Sub cmd_Click() Dim otherdbs As Database Set otherdbs = DBEngine.Workspaces(0).OpenDatabase("c:\AmbulanceV6") otherdbs.TableDefs("driver").Attributes = dbHiddenObject End Sub هذا مثال لإخفاء جدول في قاعدة أخرى وهو جدول driver الموجود في القاعدة c:\ambulancev6 مع وافر الاحترام
  9. هل أنت متأكد أن هذا هو السب ؟ ! إذا دخلت وأنت في وضع التصميم في التقرير إلى File | Page Setup | Page | Use Specific Printer ملف - اعدادات الصفحة - صفحة - اختيار طابعة محددة في أكسيس من 95 - 2003 فإن هذا الخيار سيخزن بعد تخزينك للتقرير وسيطبع التقرير على تلك الطابعة عندما تطلبه.وإذا كنت تستخدم أكسيس 2007 في أخر خيار تختار Margins on the Report Tools ribbon وفي كل الأحول يوجد كود خاص وينصح بإستخدامه إذا كنا سنحدد الطابعة في وقت النفيذ أي وقت طلب التقرير من المستخدم حيث أن الطابعات عند المستخدم يمكن أن تختلف عن الطابعات التي عندنا مع وافر الاحترام التقدير
  10. وعليكم السلام ورحمة الله وبركاته أخي حامل المسك ، في حدث عن الخروج من عنصر التحكم الخاص بالاسم تضع كود يفحص التكرار وإن تكرر الاسم يعطي رسالة ولا يخرج من الاسم هكذا : Private Sub الاسم_Exit(Cancel As Integer) w = Nz(DCount("[الاسم]", "[الأسماء]", "[الاسم] = '" & الاسم & "'"), Empty) If w > 0 Then MsgBox "هذا الاسم موجود مسبقا يرجى تغييره" Cancel = True End If End Sub names.rar مع وافر الاحترام
  11. كود Application.SetHiddenAttribute acTable, "اسم جدول", True تحياتي
  12. الأخ ميدو طه ، السؤال الأول في القيمة الأفتراضية للحقل تضع : كود =DLast("[p#]","ph") السؤال الثاني : يجب إنشاء العلاقة بشكل صحيح بين الأساس والتفصيل تحياتي
  13. إقتباس(محب العلم @ Dec 23 2007, 08:20 PM) <{POST_SNAPBACK}> المثال الرابع طريقة مثلى لإحضار المجموع الفرعي SubTotal من النموذج الفرعي إلى النموذج الرئيسي دون مشاكل المقدمة كثيرا ما نصمم نموذج رئيسي ونموذج فرعي ويكون في النموذج الرئيس المعلومات الرئيسة وفي الفرعي التفاصيل (الحركات)، وغالبا ما نحتاج إلى احضار المجموع الفرعي من النموذج الفرعي إلى النموذج الرئيسي وقد نعالج هذه المسألة بطرق محتلفة ومتعددة وصعبة أحيانا وقد تقودنا إلى مشكلة معظمنا شاهدها وهي ? name# ، في هذا المثال سنتعلم طريقة مثلى لتحقيق المطلوب دون مشاكل. التفاصيل إذاحاولت جمع حقل في نموذج فرعي باستخدام عنصر تحكم محسوب على نموذج رئيسي قد تتلقى رسالة خطأ في عنصر تحكم النموذج الرئيسي. التعبير الآتي في عنصر تحكم نموذج رئيسي على سبيل المثال، ينشئ رسالة إعلام بالخطأ "? Name# " الرسالة غير المرغوب بها: كود =Sum([MySubForm].Form![ExtendedPrice]) حيث MySubForm هو اسم النموذج الفرعي ويمكن لتجنب الخطأ، جمع حقل النموذج الفرعي باستخدام عنصر تحكم محسوب في تذييل النموذج الفرعي، ويمكنك ثم الرجوع لعنصر التحكم المحسوب من النموذج الرئيسي لعرض القيمة المجموعة.
  14. أشكرك جزيل الشكر على لطفك وكرمك أخي محمد صالح
  15. المثال الثالث عشر إنشاء حدث جديد في النموذج اسمه AfterUndo لمعالجة مشكلة تغيير الحسابات الناتجة عن ضغط زر التراجع المقدمة هذا المثال يبين كيفية إنشاء واستخدام إجراء التراجع عن undo . من المعروف أنه في النموذج إذا ضغطنا ESC مرتين أو من قائتم تحرير ثم تراجع يمكن التراجع عن التعديل الأخير في السجل الحالي في النموذج. المشكلة التي قد نقع فيها أو لنقل الاحتياج الذي قد نكون بحاجة له هو متابعة هذا الحدث (حدث التراجع) ومن المعروف أنه لا يوجد في النموذج مثل هذا الحدث. في هذا المثال فإن هذا الإجراء وهو إجراء Undo يحاكي عمل الحدث الذي يمكن استخدامه لإسترجاع الحسابات التي يمكن أن تكون غيرت نتيجة التعديل على السجل والتي لا يرجعها بالطبع ESC أو Undo من قائمة Edit تحرير . التفاصيل لا يوجد أي حدث مضمن في نموذج أكسيس والذي يتم تشغيله عند ضغط المفتاح ESC مرتين للتراجع عن التغييرات عن السجل الحالي في نموذج أو عند نقر فوق تراجع عن سجل في القائمة تحرير. إجراء AfterUndo يحاكي حدث AfterUndo بحيث يمكنك استعادة الحسابات التي قد تم تعيينها بينما يتم تحرير السجل. لإنشاء إجراء AfterUndo اتبع هذه الخطوات: 1. افتح النموذج الذي تريد إضافة إجراء AfterUpdate في طريقة العرض " تصميم " ، ثم أضف مربع نص ذو الخصائص التالية إلى النموذج: Name: txtEditModeChange ControlSource: =[Form].[Dirty] & CheckUndo([Form]) Visible: No 2. إضافة إجراء الحدث التالي إلى الخاصية AfterUpdate من النموذج: Sub Form_AfterUpdate () PrevBookmark = Null End Sub 3. إنشاء وحدة نمطية ثم اكتب السطر التالي في مقطع Declarations: Option Explicit Dim PrevBookmark 4. اكتب الإجراء التالي: Function CheckUndo (F As Form) As Variant Dim CurrBookmark If Not F.Dirty Then On Error Resume Next CurrBookmark = F.bookmark If Err Then CurrBookmark = "NewRecord" AfterUndo Else PrevBookmark = CurrBookmark End If End If End Function Sub AfterUndo () End Sub 5. تعديل التعليمات البرمجية في إجراء AfterUndo (تم إنشاؤه في الخطوة 4) كما يلي: Sub AfterUndo () MsgBox "Record Changes Undone" End Sub 6. عرض النموذج في طريقة العرض " نموذج ". 7. تعديل أي حقل في أي سجل في النموذج. 8. في القائمة تحرير، انقر فوق السجل تراجع عن الحقل الحالي . لاحظ أن مربع الرسالة يظهر " Undone Changes " . 9. كتابة أي نص في أي حقل في السجل الجديد. 10. اضغط المفتاح ESC . لاحظ أن مربع الرسالة يظهر " Undone Changes " . المثال بعد تعريبه : AfterUndo.rar مع وافر الاحترام
  16. المثال الثاني عشر كيفية إنشاء نموذج عداد الوقت StopWatch المقدمة لحساب الوقت الذي مضى منذ بدء نشاط معين أو منذ تركنا للحاسوب للإستراحة أو غيرها من التطبيقات المفيدة أو حتى للتسلية والتعلم ليس إلا . هذا المثال يعلمك كيف تستخدم حدث عداد الوقت للنموذج لإنشاء عداد وقت StopWatch. التفاصيل 1. يمكن بناء هذا النموذج في أي قاعدة بيانات مفتوحة بغض النظر عن هدفها أو عملها. 2.قم بإنشاء نموذج فارغ لا يستند إلى أي جدول أو استعلام وقم بتعيين الخصائص التالية للنموذج: ScrollBars: Neither RecordSelectors: No NavigationButtons: No OnTimer: [Event Procedure] TimerInterval: 0 3. أضف مربع نص إلى النموذج وقم بتعيين الخصائص التالية في مربع النص: Name: ElapsedTime DefaultValue: "00:00:00:00" Enabled: No Locked: Yes 4. قم بإضافة زر أمر على النموذج وتعيين الخصائص التالية لزر الأمر: Name: btnStartStop Caption: Start OnClick: [Event Procedure] 5. قم بإضافة زر أمر ثاني إلى النموذج وتعيين الخصائص التالية لزر الأمر الثاني: Name: btnReset Caption: Reset OnClick: [Event Procedure] 6. انقر فوق الرمز في القائمة عرض لفتح المحرر. اكتب الأسطر التالية في مقطع Declarations: Option Explicit Dim TotalElapsedMilliSec As Long Dim StartTickCount As Long Private Declare Function GetTickCount Lib "kernel32" () As Long 7. قم بتعيين الخاصية OnTimer من النموذج إلى إجراء الحدث التالي: Private Sub Form_Timer () Dim Hours As String Dim Minutes As String Dim Seconds As String Dim MilliSec As String Dim Msg As String Dim ElapsedMilliSec As Long ElapsedMilliSec = (GetTickCount() - StartTickCount) + _ TotalElapsedMilliSec Hours = Format((ElapsedMilliSec \ 3600000), "00") Minutes = Format((ElapsedMilliSec \ 60000) Mod 60, "00") Seconds = Format((ElapsedMilliSec \ 1000) Mod 60, "00") MilliSec = Format((ElapsedMilliSec Mod 1000) \ 10, "00") Me!ElapsedTime = Hours & ":" & Minutes & ":" & Seconds & ":" _ & MilliSec End Sub 8. قم بتعيين الخاصية OnClick من زر أمر btnStartStop إلى إجراء الحدث التالي: Private Sub btnStartStop_Click() If Me.TimerInterval = 0 Then StartTickCount = GetTickCount() Me.TimerInterval = 15 Me!btnStartStop.Caption = "Stop" Me!btnReset.Enabled = False Else TotalElapsedMilliSec = TotalElapsedMilliSec + _ (GetTickCount() - StartTickCount) Me.TimerInterval = 0 Me!btnStartStop.Caption = "Start" Me!btnReset.Enabled = True End If End Sub 9. قم بتعيين الخاصية OnClick من زر أمر btnReset إلى إجراء الحدث التالي: Private Sub btnReset_Click() TotalElapsedMilliSec = 0 Me!ElapsedTime = "00:00:00:00" End Sub 10. افتح النموذج وتمتع بالنتيجة المثال : StopWatch.rar مع وافر الاحترام
  17. المثال الحادي عشر كيفية عمل مجموع تراكمي باستخدام DSum في النموذج المقدمة إذا احتجنا لمجموع تراكمي يحسب مجموع شيء ما لكل السجلات التي مفتاحها أقل من مفتاح السجل المعروض (الحالي) في النموذج فإننا سنحتاج بلا شلك لفهم هذا المثال التطبيقى على هذا الموضوع. التفاصيل كما ذكرنا يستخدم المثال التالي الدالة ()DSum لإنشاء مجموع تراكمي على نموذج 1. إنشاء النموذج الجديدة استناداً إلى الجدول Orders (الطلبيات) وفي تذييل النموذج نجعل مصدر البيانات لعنصر التحكم الخاص بالمجموع التراكمي كما يأتي : =DSum("[Freight]","Orders", "[OrderID] <= Forms![Form1]![OrderID]") 2. تحسب الدالة dsum مجموع كافة تكاليف الشحن Freight على الترتيب والتي مفتاح السجل لها (الرقم) أقل من أو يساوي الرقم المعروض حاليا. لهذا السبب اعتمد المجموع على مفتاح أي فريد ومتسلسل. 3.عند عرض النموذج في طريقة العرض " نموذج " ، لاحظ أن مربع النص للمجموع التراكمي لمصاريف الشحن الإجمالية يعرض المجموع للرقم المعروض وكل الطلبيات السابقة للرقم المعروض . 4. المجموع التراكمي يجب أن يكون في تذييل النموذج. المثال : RunningSum.rar مع وافر الاحترام
  18. أخي محمد صالح ، بارك الله فيك على هذا العمل الإبداعي وادعو الله أن يكتبه لك ولذريتك صدقة جارية . أرجو أن يتسع صدرك لملاحظة بسيطة كما في الصورة التالية هل عندك فكرة عن سبب ظهور اللون الأسود المشار اليه وقد ظهرت في عدة مواضع ! هل مسموح لي التطوير على البرنامج لاحقا ؟ وشكرا
  19. السلام عليكم أخي شريف ، في هذه النسخة المعدلة تم ما يلي : 1. إضافة مفاتيح التصفية وتفعيلها في القوائم المختصرة للنماذج المفردة (يبقى لاحقا في هذا الموضوع التصفية عند الدخول لقائمة البياناتالمرتبطة به وهذا موضوع سهل بإذن الله) 2. تم ضبط عمليات الحذف بطريقة مثالية . 3. تم معالجة رسائل الخطأ من النماذج بطريقة ممتازة . سيتم بإذن الله الاستمرار في العمل خلال الثلاث أيام المقبلة وسأقوم بشرح بعض الأمثلة في سلسلة الأمثلة المشروحة النسخة رقم 5 : AmbulanceV5.rar تحياتي
  20. أخي شريف ، في النسخة رقم 4 قمت بما يآتي : 1. ربط مصدر السجلات بين النماذج المفردة وقوائم البيانات والشرح هـــــــنـــــــا 2. عمل قائمة أدوات مختصرة لجميع التماذج المفردة كهذه 3. عمل قائمة أدوات مختصرة لجميع النماذج قوائم البيانات كهذه والعمل متواصل بإذن الله النسخة رقم 4 : تحياتي
  21. المثال العاشر طريقة أمنة وسهلة لربط نموذجين معا وكأن لهما نفس مجموعة السجلات وتحريك مؤشر السجلات في النموذجين المقدمة إذا قمنا بتصمم نموذج عرض مفرد (سجل تلو الأخر) وصممنا نموذج أخر عرض قائمة بيانات datasheet على نفس مجموعة السجلات (الجدول أو الاستعلام) وثم طلبنا القائمة من المفرد، فإننا نود بالطبع عند الرجوع إلى نموذج العرض المفرد أن يظهر السجل الذي كنا عنده عندما خرجنا من قائمة البيانات. هذا المثال يبين طريقة سهلة وأمنة لعمل ذلك بمعنى أننا لو قمنا بفتح كل من النموذجين لوحده لا يحدث مشكلة. التفاصيل لنفترض أن أسم النموذج المفرد : Ambulance وأن النموذج قائمة البيانات هو : AmbulanceDS وأننا سنطلب AmbulanceDS من Ambulance بواسطة زر وهو الزر الذي شكلة كالقائمة في مثالنا يقع مباشرة فوق زر الخروج. الفكرة مبينية على حدث (في الحال on current ) للنموذج في عرض القائمة وهو الذي سيتم طلبه حيث نضع ما فيه ما يأتي Private Sub Form_Current() Dim rs As Object If IsLoaded("Ambulance") Then Set rs = Forms!Ambulance.Recordset.Clone rs.FindFirst "[ambId] = '" & Controls(0).Value & "'" If Not rs.EOF Then Forms!Ambulance.Bookmark = rs.Bookmark End If End Sub لاحظ هنا أننا نفحص وضع النموذج الأب Ambulance أولا قبل تحويل المؤشر بواسطة إقتران فحص فتح النموذج المعروف وهو Function IsLoaded(ByVal strFormName As String) As Boolean Const conObjStateClosed = 0 Const conDesignView = 0 If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then If Forms(strFormName).CurrentView <> conDesignView Then IsLoaded = True End If End If End Function ثم بعد ذلك وبناء على النتيجة فإننا نقوم بتحويل المؤشر للنموج الأب Ambulance للسجل الذي نكون عنده في الأبن AmbulanceDS لاحظ لو قمنا بفتح النموذج الأبن بدون نموذج الأب فلا مشكلة. المثال التطبيقي :Example10.rar تحياتي
  22. شكرا لكم إخواني جميعا على التشجيع والدعم . أخي يوسف ، رجوعا إلى ما تفضلت به عن جمع المادة العلمية في ملف pdf ، أرجو منك فضلا أن ترشدني إلى البرنامج الخاص بذلك أو أن تقوم مشكورا سلفا بعمل المطلوب لأول 10 دروس/أمثلة. أشكرك كثير أخي يوسف والمسؤولين على دعمي وترقيتي وإن شاء الله أكون قدر حمل اللقب المناط بي. الأخ أبو ناره تحياتي لك ماذا تقصد بإنك لم ترى شرح ، لم أفهم قصدك عن أي مثال تتحدث ؟ تحياتي
  23. شكرا لكم إخواني جميعا على التشجيع والدعم . أخي يوسف ، رجوعا إلى ما تفضلت به عن جمع المادة العلمية في ملف pdf ، أرجو منك فضلا أن ترشدني إلى البرنامج الخاص بذلك أو أن تقوم مشكورا سلفا بعمل المطلوب لأول 10 دروس/أمثلة. أشكرك كثير أخي يوسف والمسؤولين على دعمي وترقيتي وإن شاء الله أكون قدر حمل اللقب المناط بي. الأخ أبو ناره تحياتي لك ماذا تقصد بإنك لم ترى شرح ، لم أفهم قصدك عن أي مثال تتحدث ؟ تحياتي
×
×
  • اضف...

Important Information