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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    408

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

  1. ان شاء الله بس بعض الاوقات لازم نفتح النموذج ، وفي الامر نخبر البرنامج اننا نريد فتحه على هيئة ورقة بيانات ، هكذا: DoCmd.OpenForm "frm_Silver", acFormDS جعفر
  2. بالاضافة الى ملاحظة أخي رمهان ، يُفضل ان ترفق هذه الجزئية من برنامجك ، وتخبرنا عن طريقة عرض النموذج (عن طريق الزر الفلاني) ، ومنها الجواب يكون ادق جعفر
  3. وعليكم السلام هاي احنا ما طلّعنا الزار ولا عزمنا ولا عملنا بخور ولبان وحرمل ولا استعنّا بالشيخ الحل كان بسبب شرحك ومثالك الواضح (مب شرحك الاول ) ، المشكلة تصير لما السائل يسأل بكلمتين ويرفق برنامجه ، وبدون مثال ، وبدون ما يقول اي نموذج / جدول يتكلم عنه ، ولا حتى اي حقل ، بل بعض الاوقات يطلب الجواب بصيغة معينة (يعني هو يكون الـ Navigator وانت السائق ، هو يوجّهك في الاتجاه الذي يريد) ، وبهذه الطريقة ياتوصل الى طريق مسدود او الى طريق وعر حياك الله جعفر
  4. السلام عليكم عملي كله معتمد على: لتسهيل الامر ، اضفت الى النموذج زر: أ. اذا النموذج الفرعي فارغ ، فعند النقر على الزر فانه يضيف 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
  5. وهل اصبح الموضوع واضح الان ، ام تحتاج لمزيد من التوضيح ؟ جعفر
  6. السلام عليكم أخي صالح لم ارد الرد ، ولكن بما انك ارسلت لي رسالة على الخاص ، فهذا دلوي : الاستعلام الذي عملته انت ، يأخذ معياره من قيمة موجودة (مثله مثل لو طلعت لك رسالة تطالب بالقيمة ، وانت ادخلت القيمة ، فلن تظهر لك الرسالة) ، ولكن ، غير المعيار (مثلا) : من [جدول2]![id] الى [جدول2]![id2] واضغط على زر الامر في النموذج ، فاذا ادخلت رقم صح ، مثلا 1 ، فلن تظهر لك الرسالة (كما هو الحاصل مع الاخ الشاعر) ، ولكن عندما تنقر على الزر cancel ، فستظهر لك رسالة الخطأ (كما هو الحاصل مع الاخ الشاعر) ، وهنا بيت القصيد جعفر
  7. السلام عليكم أخي صالح: عمل قواعد البيانات ، بإختصار : ادخال بيانات ، فرز وتصفية لإخراج البيانات ، فلا يوجد شئ اسمه اول سجل ولا آخر سجل ، لإستخراج سجل معين ، يجب علينا الفرز / التصفية ، الفرز يكون بقيمة حقل / حقول ، والتصفية كذلك يكون بقيمة حقل / حقول ، لهذا السبب ، وجود حقل ترقيم تلقائي 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
  8. اخي محمد مثالك فيه خطأ !! رجاء تعديله واذا كان عندك اكثر من 5 سجلات ، فما هي المعادلة المطلوبة؟ جعفر
  9. السلام عليكم اخي صالح ، السؤال يحتاج الى توضيح لوسمحت ، وياريت ترفق لنا جدول و تخبرنا ما معنى السجل الاول لأحد الحقول ، وماهو من مثالك ، والذي على اساسه يمكننا المساعدة ان شاء الله جعفر
  10. أخوي محمد انت تعرف ان اسالتك غريبة فياريت تعطينا مثال واضح نقتدي به جعفر
  11. السلام عليكم أخي حسين الظاهر انك صاحب تجربة في هذا الموضوع اخي محمد الان اصبح عندك طريقتين ، فاختر ما شئت جعفر
  12. السلام عليكم ادخل البيانات وجرب نتيجة النموذج لوسمحت هذه تجربة اولى حتى نتوصل للمطلوب ان شاء الله بالنسبة الى sex&state ، اين سنجد هذه المعلومة في النموذج؟ جعفر 400.Parameter.mdb.zip
  13. طبعا ، فهي مجموع جميع الكميات ، اليس هذا سؤالك؟ جعفر
  14. تفضل الجدول: الاستعلام ، ونتيجته: . والان إضافة حقل مادة المستوى . الان اصبح الترتيب صحيحا ، ولكننا نريد العشرة الاوائل فقط: . والنتيجة: جعفر 406.First_Ten.mdb.zip
  15. الموضوع مخالف قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف جعفر
  16. السلام عليكم أخي صالح جربت الطريقة وما نفعت ، رسالة الخطأ لازلت تظهر حياك الله أخي الشاعر جعفر
  17. السلام عليكم في النموذج ، وللإنتقال من حقل الى آخر عند الضغط على الزر TAB او Enter ، فهذا يعتمد على رقم Tab index الحقل (انظر الى الصورة): فعند فتح النموذج ، فإن مؤشر الادخال يكون على الحقل الذي رقمه 0 صفر والذي يكون Tab Stop نعم ، وعند الضغط على الزر Tab او Enter ، فانه ينتقل الى الحقل المسلسل التالي ، لذلك ، تأكد ان حقل ادخال الباركود لا يحمل آخر رقم في النموذج ، والذي ينتج عنه الانتقال الى سجل جديد ، وكذلك ، اذا لم ترد ان تنتقل الى سجل جديد ، فغير اعدادات النموذج الى Current Record: يعني ، لا تغير اعدادات الاكسس وتلخبط عمل جميع برامج الاكسس ، وانما غيّر اعدادات النموذج وحقوله جعفر
  18. وعليكم السلام تفضل: 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 جعفر
  19. حياالله اخوي رمهان 1. وين هاي الاختيار ، رجاء عمل صورة منه وارفاقها ، 2. هذا الخيار (إن وُجد) ، فانه سيكون لجميع حقول قاعدة البيانات وليس لحقل معين فقط ، وهل سيكون للإستعلام والجدول كذلك؟؟ جعفر
  20. بالنسبة الى النموذج ، فيمكنك اتباع طريقة الاخ mostafa_fathy2004 اما بالنسبة للاستعلام و الجدول ، فيمكنك الضغط على زر Shift والضغط على Enter للإنتقال الى السطر التالي ولكن ، لماذا الإدخال في الاستعلام او الجدول !! ادخال البيانات في النموذج هي الطريقة الافضل ، والحل متوفر جعفر
  21. وعليكم السلام وحياك الله جعفر
  22. أختي الفاضلة عنوان موضوعك " ضروري جدا وعاجل " مخالف لقوانين المنتدى: قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف 1. لقد غيّرت عنوان الموضوع ، فرجاء الانتباه في المرات القادمة 2. الصورة التالية من اكسس 2010 ، بالنقر على الفأرة اليمين ، وبه تصدير بيانات الجدول الى اكسل: 3. الصورة التالية من اكسس 2010 ايضا ، بالنقر على الفأرة اليمين ، وبه تصدير التقرير الى اكسل ، بالاضافة الى وجود الايقونه في شريط المهام: ولكن هناك مشكلة في تصدير التقرير الى اكسل ، فانه لا يتم تصديره بنفس الشكل الموجود في الاكسس جعفر
  23. أعطني مثال لوسمحت ، فشرحك يحتاج إلى شرح آخر جعفر
  24. السلام عليكم اخي محمد لوسمحت تشرح المادة رقم 4 لأنها غير واضحة. جعفر
×
×
  • اضف...

Important Information