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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

كل منشورات العضو jjafferr

  1. مثل ما اختي أم خلود قالت ، يُفضل ان ترفق برنامجك ، وتخبرنا متى (عند ضغط اي زر) يحصل هذا. ما كنت اعنيه: المرفق في الرابط التالي يخفي خلفية اكسس: http://www.officena.net/ib/topic/66410-ارغب-في-اخفاء-اطار-اكسس-عنوان-معدل/?do=findComment&comment=431836 اسم المستخدم وكلمة السر 123 فاذا كان برنامجك فيه الكود ليعمل هذا ، فيجب ازالت الكود او تضبيطه جعفر
  2. السلام عليكم الظاهر عندك كود اللي يخفي خلفية الاكسس ، ويمكن فيه شروط معينة تخلي الكود يشتغل !! جعفر
  3. وعليكم السلام اخوي رمهان 1. حياك الله ، ولك مثل ما دعوت لي وزيادة ان شاء الله 2. كلامك صحيح ، هذا لأن الاخ محمود سعيد اخبرني ان الموضوع كله متعلق بالجدول Blagh ، فلهذا السبب شغلي كله كان عليه ، مع اني شفت الجدولين الثانيين ، ولكني لم اربط بينهما ، ولكن وبعد ملاحظتك ، قمت بتعديل البرنامج ، بحيث اصبح يأخذ من الجداول الثلاثة: Blagh والمصابين والوفيات ، ومرفق نسخة منه ، 3. لا تستطيع ان تستغني عن حقلي المصابين والوفيات في الجدول Blagh ، وذلك لأنه في حالات يوجد بلاغ ولا يوجد مصابين ولا وفيات ، ولا يوجد جدول مستقل لحالات البلاغ ، وقد عملت البرنامج على حساب هذين الحقلين في الجدول شكرا على المتابعة وعليكم السلام اخي محمود لوسمحت المرات الجاية ، لوسمحت لا تضع ملف تجريبي ، لأن العمل يصير مرتين استعمل احد برامج الضغط مثل winzip او winrar ، وارفق ملفك في الموضوع ، فانا لا املك حساب في الموقع الذي رفعت فيه الملف. جعفر 411.Database11.accdb.zip
  4. الله يسلمك اخوي محمد اذا تلاحظ ، مافي كود في العملية كلها في طريقة ثانية عن طريق الكود ، بس تحتاج نكتب في جدول مؤقت ، بحيث يأخذ التقرير بياناته من هذا الجدول المؤقت ، وانا اتفادى الجداول المؤقته ، لأنها تُكبّر من جحم البرنامج ، ويجب عليك الضغط والاصلاح لتصغير البرنامج جعفر
  5. وعليكم السلام ورحمة الله وبركاته السؤال ظاهرا سهل ، ولكني لم اجد طريقة سهلة لحلّه اليك خطوات عملي: الجدول الذي نأخذ منه البيانات: . والنموذج الذي يجب ان نحتار التاريخين فيه: . استعلام المجاميع Totals لجمع البيانات حسب الحالات المتشابهة بين تاريخي النموذج: . ونتيجته: . وفي الواقع ، كل العمل التالي هو لجعل معلومات الاستعلام اعلاه تدور 90 درجة الاى اليمين ، ليصبح: . لعمل الدوران لكل حالة ، نحن محتاجين نعمل استعلام جدولي Crosstab Query ، وفي حالتنا عندنا 3 حالات ، عدد البلاغات ، عدد المصابين ، عدد الوفيات: . والنتيجة لكل حالة: . ولكن الاستعلام الجدولي محتاج تضبيط قبل ان يشتغل بالطريقة الصحيحة: اولا: بإدخال جميع الحالات الموجودة ، حتى تظهر لنا في التقرير (وإن لم يكن فيها قيمة للفترة بين تاريخين): . ثانيا: بتعريف المعايير التي تم استخدامها في استعلام المجاميع سابقا: . الآن لدينا 3 استعلامات جدولية ، وفي كل واحد منها قيمة ، ولكننا نريد القيم الثلاث ، لذا يجب ان نعمل استعلام تجميع Union query لهذه الاستعلامات الثلاث: . والنتيجة: . ولكن الاستعلام اعلاه جدا حساس ، واذا غيّرت شئ ، فلن يعمل الاستعلام!! ولكننا بحاجة الى عمل مجموع للقيم !! لذا ، سنأخذ الاستعلام السابق ، ونعمل منه استعلام جديد عادي Select ، بحيث نجمع القيم في الحقل Total ، كمل عملنا حقل للملاحظات (طبعا انت يجب ان تربطه بجدول): . والنتيجة: . بس انت ولا يهمك كل الكلام اعلاه ، فقط اضغط في النموذج على زر معاينة التقرير ، علشان تحصل على نتيجة جميع الاستعلامات اعلاه: سهله هاه جعفر 411.Database11.accdb.zip
  6. موضوع متكرر
  7. ان شاء الله بس بعض الاوقات لازم نفتح النموذج ، وفي الامر نخبر البرنامج اننا نريد فتحه على هيئة ورقة بيانات ، هكذا: DoCmd.OpenForm "frm_Silver", acFormDS جعفر
  8. بالاضافة الى ملاحظة أخي رمهان ، يُفضل ان ترفق هذه الجزئية من برنامجك ، وتخبرنا عن طريقة عرض النموذج (عن طريق الزر الفلاني) ، ومنها الجواب يكون ادق جعفر
  9. وعليكم السلام هاي احنا ما طلّعنا الزار ولا عزمنا ولا عملنا بخور ولبان وحرمل ولا استعنّا بالشيخ الحل كان بسبب شرحك ومثالك الواضح (مب شرحك الاول ) ، المشكلة تصير لما السائل يسأل بكلمتين ويرفق برنامجه ، وبدون مثال ، وبدون ما يقول اي نموذج / جدول يتكلم عنه ، ولا حتى اي حقل ، بل بعض الاوقات يطلب الجواب بصيغة معينة (يعني هو يكون الـ Navigator وانت السائق ، هو يوجّهك في الاتجاه الذي يريد) ، وبهذه الطريقة ياتوصل الى طريق مسدود او الى طريق وعر حياك الله جعفر
  10. السلام عليكم عملي كله معتمد على: لتسهيل الامر ، اضفت الى النموذج زر: أ. اذا النموذج الفرعي فارغ ، فعند النقر على الزر فانه يضيف 5 سجلات فيه حسب ما وضحت انت ، ولا يعمل الزر اذا كان فيه سجلات ، ب. سواء استخدمت الزر او ادخلت البيانات يدويا بنفس الترتيب (نفس الوجبات ونفس الترتيب) ، فهنا يبدأ الكود في العمل ، مثلا: لا يسمح لك بإدخال سجل سادس ، لا يسمح لك تغيير قيمة حقل الكميات في السجل الرابع والخامس ، عند تغيير قيمة حقل الكميات في اي سجل ، فانه يقوم بعملية الحساب من جديد. هذا كود زر الاضافة: Private Sub cmd_add_5_Click() On Error GoTo err_cmd_add_5_Click Dim rst As DAO.Recordset Dim food_list 'save the Record of the Main Form, if not saved If Me.Dirty Then Me.Dirty = False Set rst = Me.main.Form.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount 'this should be a new set, make sure we don't have Records If RC <> 0 Then MsgBox "لا يمكن الاضافة ، توجد سجلات مسبقا" & vbCrLf & _ "Can't add on existing Records" GoTo Exit_cmd_add_5_Click End If food_list = Array("hamor", "zbedy", "nweby", "sheep", "tona") For i = 1 To 5 rst.AddNew rst!cid = Me.ID rst!food = food_list(i - 1) rst.Update Next i Exit_cmd_add_5_Click: rst.Close: Set rst = Nothing Exit Sub err_cmd_add_5_Click: If Err.Number = 3021 Then 'No Records Resume Next ElseIf Err.Number = 3201 Then 'No Record in main Form MsgBox "رجاء تعبئة بيانات النموذج الرئيسي اولا" & vbCrLf & _ "Please fill Main Form first" Resume Exit_cmd_add_5_Click Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub وهذا كود النموذج الفرعي: Private Sub food_AfterUpdate() 'do the calculations for Records 4 and 5 Call Check_Record End Sub Function Check_Record() On Error GoTo err_Check_Record ' If Me.NewRecord = True Then Exit Function If Me.Dirty Then Me.Dirty = False 'DoCmd.RunCommand acCmdSaveRecord Dim food_list Dim rst As DAO.Recordset 'if we have the same list, then DON'T ALLOW CHANGES TO QTY Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount food_list = Array("hamor", "zbedy", "nweby", "sheep", "tona") Counter = 0 For i = 1 To 5 If rst!food = food_list(i - 1) Then Counter = Counter + 1 End If rst.MoveNext Next i If Counter = 5 Then 'get the 4th and 5th Records values rst.MoveFirst Q1 = rst!qty rst.MoveNext Q2 = rst!qty RQ5 = Q2 / 5 rst.MoveNext Q3 = rst!qty RQ4 = Q1 - (Q3 + RQ5) rst.MoveNext rst.Edit rst!qty = RQ4 rst.Update rst.MoveNext rst.Edit rst!qty = RQ5 rst.Update End If Exit_Check_Record: rst.Close: Set rst = Nothing Exit Function err_Check_Record: If Err.Number = 3021 Then Resume Exit_Check_Record Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function Private Sub Form_Current() On Error GoTo err_Form_Current If Me.NewRecord = False Then Exit Sub Dim food_list Dim rst As DAO.Recordset 'if we have the same list, then DON'T ALLOW CHANGES TO QTY Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount food_list = Array("hamor", "zbedy", "nweby", "sheep", "tona") Counter = 0 For i = 1 To 5 If rst!food = food_list(i - 1) Then Counter = Counter + 1 End If rst.MoveNext Next i If Counter = 5 Then Cancel = True Me.Undo DoCmd.GoToRecord , , acPrevious MsgBox "لا يمكنك اضافة سجل جديد" & vbCrLf & _ "Can't add a new Record" Exit Sub End If Exit_Form_Current: rst.Close: Set rst = Nothing Exit Sub err_Form_Current: If Err.Number = 3021 Then Resume Exit_Form_Current Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub Private Sub qty_AfterUpdate() 'do the calculations for Records 4 and 5 Call Check_Record End Sub Private Sub qty_BeforeUpdate(Cancel As Integer) On Error GoTo err_qty_BeforeUpdate Dim food_list Dim rst As DAO.Recordset 'if we have the same list, then DON'T ALLOW CHANGES TO QTY Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount food_list = Array("hamor", "zbedy", "nweby", "sheep", "tona") Counter = 0 For i = 1 To 5 If rst!food = food_list(i - 1) Then Counter = Counter + 1 End If rst.MoveNext Next i If Counter = 5 Then If Me.food = "sheep" Or Me.food = "tona" Then Cancel = True Me.Undo MsgBox "لا يمكنك تغيير قيمة الكمية اذا كانت الوجبة " & vbCrLf & Me.food & vbCrLf & _ "Can't change Qty if food is " & Me.food Exit Sub End If End If Exit_qty_BeforeUpdate: rst.Close: Set rst = Nothing Exit Sub err_qty_BeforeUpdate: If Err.Number = 3021 Then Resume Exit_qty_BeforeUpdate Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub جعفر 407.قيمة محسوبة.mdb.zip
  11. وهل اصبح الموضوع واضح الان ، ام تحتاج لمزيد من التوضيح ؟ جعفر
  12. السلام عليكم أخي صالح لم ارد الرد ، ولكن بما انك ارسلت لي رسالة على الخاص ، فهذا دلوي : الاستعلام الذي عملته انت ، يأخذ معياره من قيمة موجودة (مثله مثل لو طلعت لك رسالة تطالب بالقيمة ، وانت ادخلت القيمة ، فلن تظهر لك الرسالة) ، ولكن ، غير المعيار (مثلا) : من [جدول2]![id] الى [جدول2]![id2] واضغط على زر الامر في النموذج ، فاذا ادخلت رقم صح ، مثلا 1 ، فلن تظهر لك الرسالة (كما هو الحاصل مع الاخ الشاعر) ، ولكن عندما تنقر على الزر cancel ، فستظهر لك رسالة الخطأ (كما هو الحاصل مع الاخ الشاعر) ، وهنا بيت القصيد جعفر
  13. السلام عليكم أخي صالح: عمل قواعد البيانات ، بإختصار : ادخال بيانات ، فرز وتصفية لإخراج البيانات ، فلا يوجد شئ اسمه اول سجل ولا آخر سجل ، لإستخراج سجل معين ، يجب علينا الفرز / التصفية ، الفرز يكون بقيمة حقل / حقول ، والتصفية كذلك يكون بقيمة حقل / حقول ، لهذا السبب ، وجود حقل ترقيم تلقائي AutoNumber مفهرس ، مهم لهذا السبب ، حقل الرقم التلقائي في الواقع هو مهم في سرعة الوصول الى اي سجل ، ويجب ان يكون في كل جدول ، بالاضافة الى حقل تاريخ تلقائي (القيمة الافتراضية Now ) والآن الى سؤالك على اليمين جدولك كما هو ، وعلى اليسار نسخة من الجدول ، ولكن تم حفظه بعد فرز حقل الاسم تنازليا ، الظاهر ان اكسس يحتفظ بتسلسل الادخال ، حتى ولو تمت عملية الفرز ، واللي عملته اني وضعت حقلين في النموذج باسم nom_1 و nom_11 ، استعملت الكود التالي على زر cmd_1: Private Sub cmd_1_Click() Dim rst As DAO.Recordset mySQL = "SELECT TOP 1 nom FROM tbl" Set rst = CurrentDb.OpenRecordset(mySQL) Me.nom_1 = rst!nom mySQL = "Select * FROM tbl2" rst.MoveLast: rst.MoveFirst Me.nom_11 = rst!nom rst.close : set rst = nothing End Sub الكود الاول يأخذ قيمة واحدة من الجدول الاول (والذي بدون فرز) ، بينما الكود الثاني يأخذ الجدول الثاني ، ثم يأخذ اول قيمة منه ، والنتيجة كانت "صلاح" ولكن ، الافضل دائما اضافة حقل الرقم التلقائي ، والذي تستطيع ان تعمل الفرز عن طريقه ، للوصول الى اي سجل مطلوب ، والنتيجة تكون دقيقة فعند إضافة حقل الترقيم التلقائي ، فان اكسس يعطي الرقم حسب الادخال الاصل وليس حسب فرز الجدول ، فيكون الجدولان هكذا: هذا هو الكود للحقل nom_2 في النموذج ، وهي الطريقة الصحيحة في العمل: mySQL = "Select * From tbl2 Order by Auto_ID" rst.MoveLast: rst.MoveFirst Me.nom_2 = rst!nom جعفر 410.استخراج قيمة السجل الأول.accdb.zip
  14. اخي محمد مثالك فيه خطأ !! رجاء تعديله واذا كان عندك اكثر من 5 سجلات ، فما هي المعادلة المطلوبة؟ جعفر
  15. السلام عليكم اخي صالح ، السؤال يحتاج الى توضيح لوسمحت ، وياريت ترفق لنا جدول و تخبرنا ما معنى السجل الاول لأحد الحقول ، وماهو من مثالك ، والذي على اساسه يمكننا المساعدة ان شاء الله جعفر
  16. أخوي محمد انت تعرف ان اسالتك غريبة فياريت تعطينا مثال واضح نقتدي به جعفر
  17. السلام عليكم أخي حسين الظاهر انك صاحب تجربة في هذا الموضوع اخي محمد الان اصبح عندك طريقتين ، فاختر ما شئت جعفر
  18. السلام عليكم ادخل البيانات وجرب نتيجة النموذج لوسمحت هذه تجربة اولى حتى نتوصل للمطلوب ان شاء الله بالنسبة الى sex&state ، اين سنجد هذه المعلومة في النموذج؟ جعفر 400.Parameter.mdb.zip
  19. طبعا ، فهي مجموع جميع الكميات ، اليس هذا سؤالك؟ جعفر
  20. تفضل الجدول: الاستعلام ، ونتيجته: . والان إضافة حقل مادة المستوى . الان اصبح الترتيب صحيحا ، ولكننا نريد العشرة الاوائل فقط: . والنتيجة: جعفر 406.First_Ten.mdb.zip
  21. الموضوع مخالف قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف جعفر
  22. السلام عليكم أخي صالح جربت الطريقة وما نفعت ، رسالة الخطأ لازلت تظهر حياك الله أخي الشاعر جعفر
  23. السلام عليكم في النموذج ، وللإنتقال من حقل الى آخر عند الضغط على الزر TAB او Enter ، فهذا يعتمد على رقم Tab index الحقل (انظر الى الصورة): فعند فتح النموذج ، فإن مؤشر الادخال يكون على الحقل الذي رقمه 0 صفر والذي يكون Tab Stop نعم ، وعند الضغط على الزر Tab او Enter ، فانه ينتقل الى الحقل المسلسل التالي ، لذلك ، تأكد ان حقل ادخال الباركود لا يحمل آخر رقم في النموذج ، والذي ينتج عنه الانتقال الى سجل جديد ، وكذلك ، اذا لم ترد ان تنتقل الى سجل جديد ، فغير اعدادات النموذج الى Current Record: يعني ، لا تغير اعدادات الاكسس وتلخبط عمل جميع برامج الاكسس ، وانما غيّر اعدادات النموذج وحقوله جعفر
  24. وعليكم السلام تفضل: Private sub .... on error goto err_No_2001 ..... ..... Exit_N0_2001: exit sub err_No_2001: if err.number=2001 then Resume Exit_N0_2001 else msgbox err.number & vbcrlf & err.description endif end sub جعفر
×
×
  • اضف...

Important Information