-
Posts
9907 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
404
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
وعليكم السلام اليك هذا الرابط ، ولكن للقيمة الاولى ، وما عليك إلا استخدام Desc ، هكذا: mySQL = "Select * From tbl2 Order by Auto_ID Desc" جعفر
-
مطلوب عمل تقرير نهائي كما موضح بالصور ومرتبط بنموذج
jjafferr replied to محمود_سعيد's topic in قسم الأكسيس Access
السلا عليكم الموضوع هذا اصبح له حلّان: حلّي انا بإستخدام الاستعلام الجدولي ولأكثر من مرة ، وحل اخوي رمهان بإستخدام دالة Dcount في التقرير اكثر من مرة (اما موضوع النتائج الغير صحيحة كما اشرت اليها في مشاركتي السابقة ، فهو موضوع سهل حلّه على اخوي رمهان) . السؤال الذي طرأ على بالي هو: اي الطريقتين هي الاسرع (على اساس ان الطريقتين تعطيان النتائج الصحيحة) ، وبذلك نقترح هذه الطريقة على الاخ محمود سعيد في برنامجه لحساب السرعة ، يجب ان تكون الجداول كبيرة ، حتى يكون للمقارنة معنى ، لذلك عملت التالي: 1. عملت الفهرسة للحقول التي تحتاج فهرسة ، 2. جعلت عدد السجلات في الجداول كالتالي: Blagh = 3,845,966 ، المصابين = 1,922,966 ، الوفيات = 1,538,373 3. بحيث اصبح حجم قاعدة البيانات حوالي 328MB الموضوع اخذ مني يوم كامل ، والنتائج: وطريقة احتساب الوقت الذي أخذه كل تقرير على حده هو: t = Timer docmd.openreport .... Time_Took = Timer - t والنتيجة بالثوان: j = جعفر ، R = رمهان 1-7-2016 to 7-7-2016 j = 109.8164 R = 132.0977 1-7-2016 to 15-7-2016 j = 230.1016 R = 187.8359 1-7-2016 to 30-7-2016 j = 335.2969 R = 239.1992 وهذه صور التقرير النهائي: جعفر: . رمهان: لهذا السبب ، فانا اقترح على الاخ محمود سعيد ان يستخدم طريقة الاخ رمهان (طبعا بعد ان يتم تصحيح النتائج بها) ، فهي الاسرع في الاداء جعفر- 16 replies
-
- 3
-
-
- قاعدة بيانات
- تقرير
-
(و2 أكثر)
موسوم بكلمه :
-
مطلوب عمل تقرير نهائي كما موضح بالصور ومرتبط بنموذج
jjafferr replied to محمود_سعيد's topic in قسم الأكسيس Access
السلام عليكم نعم أخوي رمهان اللي تقوله يصير ، ولكني كنت اشير الى الطريقة التي عملت فيها برنامجي ، فبرنامجي معتمد عليه: وبالبرمجة ممكن عمل اي شئ وانزلت برنامجك واتضح انك تستخدم دالة Dcount في التقرير ، وعملت مقارنة بين نتائجي ونتائجك ، بس الظاهر ان عندك خطأ في الجمع: نتيجتي (بعد ان اخذت بيانات جداولك): . ونتيجتك: ورجاء متابعة المشاركة التالية جعفر- 16 replies
-
- 1
-
-
- قاعدة بيانات
- تقرير
-
(و2 أكثر)
موسوم بكلمه :
-
السلام عليكم نعم ، عندك كود إخفاء الخلفية في نموذج الافتتاح ، فتم توقيفه عن العمل ، هكذا: Private Sub Form_Open(Cancel As Integer) 'fSetAccessWindow (SW_SHOWMINIMIZED) End Sub جعفر 412.برنامج تدريبي.accdb.zip
-
مثل ما اختي أم خلود قالت ، يُفضل ان ترفق برنامجك ، وتخبرنا متى (عند ضغط اي زر) يحصل هذا. ما كنت اعنيه: المرفق في الرابط التالي يخفي خلفية اكسس: http://www.officena.net/ib/topic/66410-ارغب-في-اخفاء-اطار-اكسس-عنوان-معدل/?do=findComment&comment=431836 اسم المستخدم وكلمة السر 123 فاذا كان برنامجك فيه الكود ليعمل هذا ، فيجب ازالت الكود او تضبيطه جعفر
-
السلام عليكم الظاهر عندك كود اللي يخفي خلفية الاكسس ، ويمكن فيه شروط معينة تخلي الكود يشتغل !! جعفر
-
مطلوب عمل تقرير نهائي كما موضح بالصور ومرتبط بنموذج
jjafferr replied to محمود_سعيد's topic in قسم الأكسيس Access
وعليكم السلام اخوي رمهان 1. حياك الله ، ولك مثل ما دعوت لي وزيادة ان شاء الله 2. كلامك صحيح ، هذا لأن الاخ محمود سعيد اخبرني ان الموضوع كله متعلق بالجدول Blagh ، فلهذا السبب شغلي كله كان عليه ، مع اني شفت الجدولين الثانيين ، ولكني لم اربط بينهما ، ولكن وبعد ملاحظتك ، قمت بتعديل البرنامج ، بحيث اصبح يأخذ من الجداول الثلاثة: Blagh والمصابين والوفيات ، ومرفق نسخة منه ، 3. لا تستطيع ان تستغني عن حقلي المصابين والوفيات في الجدول Blagh ، وذلك لأنه في حالات يوجد بلاغ ولا يوجد مصابين ولا وفيات ، ولا يوجد جدول مستقل لحالات البلاغ ، وقد عملت البرنامج على حساب هذين الحقلين في الجدول شكرا على المتابعة وعليكم السلام اخي محمود لوسمحت المرات الجاية ، لوسمحت لا تضع ملف تجريبي ، لأن العمل يصير مرتين استعمل احد برامج الضغط مثل winzip او winrar ، وارفق ملفك في الموضوع ، فانا لا املك حساب في الموقع الذي رفعت فيه الملف. جعفر 411.Database11.accdb.zip- 16 replies
-
- 2
-
-
- قاعدة بيانات
- تقرير
-
(و2 أكثر)
موسوم بكلمه :
-
مطلوب عمل تقرير نهائي كما موضح بالصور ومرتبط بنموذج
jjafferr replied to محمود_سعيد's topic in قسم الأكسيس Access
الله يسلمك اخوي محمد اذا تلاحظ ، مافي كود في العملية كلها في طريقة ثانية عن طريق الكود ، بس تحتاج نكتب في جدول مؤقت ، بحيث يأخذ التقرير بياناته من هذا الجدول المؤقت ، وانا اتفادى الجداول المؤقته ، لأنها تُكبّر من جحم البرنامج ، ويجب عليك الضغط والاصلاح لتصغير البرنامج جعفر- 16 replies
-
- 1
-
-
- قاعدة بيانات
- تقرير
-
(و2 أكثر)
موسوم بكلمه :
-
مطلوب عمل تقرير نهائي كما موضح بالصور ومرتبط بنموذج
jjafferr replied to محمود_سعيد's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله وبركاته السؤال ظاهرا سهل ، ولكني لم اجد طريقة سهلة لحلّه اليك خطوات عملي: الجدول الذي نأخذ منه البيانات: . والنموذج الذي يجب ان نحتار التاريخين فيه: . استعلام المجاميع Totals لجمع البيانات حسب الحالات المتشابهة بين تاريخي النموذج: . ونتيجته: . وفي الواقع ، كل العمل التالي هو لجعل معلومات الاستعلام اعلاه تدور 90 درجة الاى اليمين ، ليصبح: . لعمل الدوران لكل حالة ، نحن محتاجين نعمل استعلام جدولي Crosstab Query ، وفي حالتنا عندنا 3 حالات ، عدد البلاغات ، عدد المصابين ، عدد الوفيات: . والنتيجة لكل حالة: . ولكن الاستعلام الجدولي محتاج تضبيط قبل ان يشتغل بالطريقة الصحيحة: اولا: بإدخال جميع الحالات الموجودة ، حتى تظهر لنا في التقرير (وإن لم يكن فيها قيمة للفترة بين تاريخين): . ثانيا: بتعريف المعايير التي تم استخدامها في استعلام المجاميع سابقا: . الآن لدينا 3 استعلامات جدولية ، وفي كل واحد منها قيمة ، ولكننا نريد القيم الثلاث ، لذا يجب ان نعمل استعلام تجميع Union query لهذه الاستعلامات الثلاث: . والنتيجة: . ولكن الاستعلام اعلاه جدا حساس ، واذا غيّرت شئ ، فلن يعمل الاستعلام!! ولكننا بحاجة الى عمل مجموع للقيم !! لذا ، سنأخذ الاستعلام السابق ، ونعمل منه استعلام جديد عادي Select ، بحيث نجمع القيم في الحقل Total ، كمل عملنا حقل للملاحظات (طبعا انت يجب ان تربطه بجدول): . والنتيجة: . بس انت ولا يهمك كل الكلام اعلاه ، فقط اضغط في النموذج على زر معاينة التقرير ، علشان تحصل على نتيجة جميع الاستعلامات اعلاه: سهله هاه جعفر 411.Database11.accdb.zip- 16 replies
-
- 4
-
-
- قاعدة بيانات
- تقرير
-
(و2 أكثر)
موسوم بكلمه :
-
موضوع متكرر
-
ان شاء الله بس بعض الاوقات لازم نفتح النموذج ، وفي الامر نخبر البرنامج اننا نريد فتحه على هيئة ورقة بيانات ، هكذا: DoCmd.OpenForm "frm_Silver", acFormDS جعفر
-
بالاضافة الى ملاحظة أخي رمهان ، يُفضل ان ترفق هذه الجزئية من برنامجك ، وتخبرنا عن طريقة عرض النموذج (عن طريق الزر الفلاني) ، ومنها الجواب يكون ادق جعفر
-
وعليكم السلام هاي احنا ما طلّعنا الزار ولا عزمنا ولا عملنا بخور ولبان وحرمل ولا استعنّا بالشيخ الحل كان بسبب شرحك ومثالك الواضح (مب شرحك الاول ) ، المشكلة تصير لما السائل يسأل بكلمتين ويرفق برنامجه ، وبدون مثال ، وبدون ما يقول اي نموذج / جدول يتكلم عنه ، ولا حتى اي حقل ، بل بعض الاوقات يطلب الجواب بصيغة معينة (يعني هو يكون الـ Navigator وانت السائق ، هو يوجّهك في الاتجاه الذي يريد) ، وبهذه الطريقة ياتوصل الى طريق مسدود او الى طريق وعر حياك الله جعفر
-
السلام عليكم عملي كله معتمد على: لتسهيل الامر ، اضفت الى النموذج زر: أ. اذا النموذج الفرعي فارغ ، فعند النقر على الزر فانه يضيف 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
-
وهل اصبح الموضوع واضح الان ، ام تحتاج لمزيد من التوضيح ؟ جعفر
-
السلام عليكم أخي صالح لم ارد الرد ، ولكن بما انك ارسلت لي رسالة على الخاص ، فهذا دلوي : الاستعلام الذي عملته انت ، يأخذ معياره من قيمة موجودة (مثله مثل لو طلعت لك رسالة تطالب بالقيمة ، وانت ادخلت القيمة ، فلن تظهر لك الرسالة) ، ولكن ، غير المعيار (مثلا) : من [جدول2]![id] الى [جدول2]![id2] واضغط على زر الامر في النموذج ، فاذا ادخلت رقم صح ، مثلا 1 ، فلن تظهر لك الرسالة (كما هو الحاصل مع الاخ الشاعر) ، ولكن عندما تنقر على الزر cancel ، فستظهر لك رسالة الخطأ (كما هو الحاصل مع الاخ الشاعر) ، وهنا بيت القصيد جعفر
-
السلام عليكم أخي صالح: عمل قواعد البيانات ، بإختصار : ادخال بيانات ، فرز وتصفية لإخراج البيانات ، فلا يوجد شئ اسمه اول سجل ولا آخر سجل ، لإستخراج سجل معين ، يجب علينا الفرز / التصفية ، الفرز يكون بقيمة حقل / حقول ، والتصفية كذلك يكون بقيمة حقل / حقول ، لهذا السبب ، وجود حقل ترقيم تلقائي 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
-
اخي محمد مثالك فيه خطأ !! رجاء تعديله واذا كان عندك اكثر من 5 سجلات ، فما هي المعادلة المطلوبة؟ جعفر
-
السلام عليكم اخي صالح ، السؤال يحتاج الى توضيح لوسمحت ، وياريت ترفق لنا جدول و تخبرنا ما معنى السجل الاول لأحد الحقول ، وماهو من مثالك ، والذي على اساسه يمكننا المساعدة ان شاء الله جعفر
-
أخوي محمد انت تعرف ان اسالتك غريبة فياريت تعطينا مثال واضح نقتدي به جعفر
-
السلام عليكم أخي حسين الظاهر انك صاحب تجربة في هذا الموضوع اخي محمد الان اصبح عندك طريقتين ، فاختر ما شئت جعفر
-
السلام عليكم ادخل البيانات وجرب نتيجة النموذج لوسمحت هذه تجربة اولى حتى نتوصل للمطلوب ان شاء الله بالنسبة الى sex&state ، اين سنجد هذه المعلومة في النموذج؟ جعفر 400.Parameter.mdb.zip
-
طبعا ، فهي مجموع جميع الكميات ، اليس هذا سؤالك؟ جعفر
-
-
تفضل الجدول: الاستعلام ، ونتيجته: . والان إضافة حقل مادة المستوى . الان اصبح الترتيب صحيحا ، ولكننا نريد العشرة الاوائل فقط: . والنتيجة: جعفر 406.First_Ten.mdb.zip