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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. السلام عليكم هذا رابط جواب التسلسل جعفر
  2. السلام عليكم كان المفروض ان يكون هذا الموضوع كجواب للموضوع والمشكلة هي ان ارقام التسلسل بالعربي ، في كل من التقارير الفرعية ليست بالتسلسل المطلوب ، ولا السنه بالتسلسل الصحيح . نعرف اذا اردنا ان نعمل اكثر من عمود في التقرير ، فاننا نستعمل اعدادات الصفحة في التقرير . اذا التقرير بالانجليزي ، فكل شيء تمام وبالترتيب/التسلسل المطلوب ، ولكن للأسف لما نريد الاعمدة بالتسلسل العربي ، من اليمين الى اسفل ، ثم يُكمّل العمود الثاني من حيث انتهى الاول ، هكذا . فهنا يجب ان نقوم بمعالجة الموضوع بطريقتنا الخاصة استعنت بالبرنامج من الروابط اعلاه ، وعملت تجارب على عدة اعمدة: 2 الى 6 اعمدة ، وكتبت نتائجها في الاكسل ، لأرى النتائج بصورة مباشرة ، الحالي معناه ما يعطينا الاكسس ، والمفروض هو التسلسل الذي نسعى لعمله . وبعد التمعن في الارقام لعدة ايام ، توصلت الى ان هناك لوغاريثم معين يتماشى مع ارقام الاعمدة وتسلسلها ، وبعد تجربة عدة طرق توصلت لطريقة تعرض هذه الاعمدة بالطريقة التي نريدها 1. سنحتاج الى حقلين اضافيين في الجدول (لكل تقرير فرعي) ، حقل تسلسل الاعمدة (وسيكون مخفي ، باللون البرتقالي في الصورة ادناه) والذي سيعتمد عليه التقرير في فرز البيانات ، rpt2_Seq مثلا، وحقل للتسلسل الذي سنراه في التقرير ، Seq2 مثلا (الحقل الآخر في التقرير) ، 2. في التقرير ، هكذا نجعل فرز البيانات ، على اساس الحقل rpt2_Seq . وبما ان التقرير الرئيسي يحتوي على 3 تقارير فرعية (في برنامج الرابط اعلاه) ، . فوضعت الكود على حدث "التنسيق" لرأس التقرير Page Header ، وهذا هو الكود ، والذي نراه انه ينادي الدالة ("Call Seq_Records(2, "rpt2_Seq", "Seq2") ، لكل تقرير فرعي ، ويرسل عدد الاعمدة المطلوبة ، واسم حقلي التسلسل في الجدول للتقرير الفرعي: Option Compare Database Dim rst As DAO.Recordset Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) 'Seq the subform Records 'rpt2 Set rst = CurrentDb.OpenRecordset("Select * From qry_2 Where nationalty=" & Me.nationalty) Call Seq_Records(2, "rpt2_Seq", "Seq2") 'rpt3 Set rst = CurrentDb.OpenRecordset("Select * From qry_3 Where nationalty=" & Me.nationalty) Call Seq_Records(2, "rpt3_Seq", "Seq3") 'rpt4 Set rst = CurrentDb.OpenRecordset("Select * From qry_4 Where nationalty=" & Me.nationalty) Call Seq_Records(2, "rpt4_Seq", "Seq4") End Sub . وهذا كود الدالة ، والتي يمكن إخراجها من التقرير وجعلها وحدة نمطية مستقلة) : Function Seq_Records(N As Integer, Seq_fName As String, Seq_n As String) On Error GoTo err_Seq_Records 'N = Number of columns 'Seq_fName = Seq Field Name 'Seq_n = Seq rst.MoveLast: rst.MoveFirst RC = rst.RecordCount c_Columns = N 'Number of columns in the report r_Records = RC 'Number of Records in the report j_First = c_Columns 'Start rtp_Seq with this number Counter = 0 'each time reduce c_Columns by this Counter For i = 1 To RC rst.Edit rst(Seq_fName) = j_First rst(Seq_n) = i 'Debug.Print "rtp_Seq=" & j_First & vbTab & "Seq=" & i rst.Update 'rtp_Seq j_First = j_First + c_Columns 'rpt_Seq cannot be > RC If j_First > RC Then 'start Counter Counter = Counter + 1 'rpt_Seq re-calculate j_First = c_Columns - Counter End If rst.MoveNext Next i Exit_Seq_Records: rst.Close: Set rst = Nothing Exit Function err_Seq_Records: If Err.Number = 3021 Then Resume Exit_Seq_Records Else MsgBox Err.Number & vbCrLf & Err.Description End If End Function . والنتيجة: . كما عملت تقرير للتجربة وبه 4 اعمدة ، والذي ينادي الدالة هكذا ("Call Seq_Records(4, "rpt2_Seq", "Seq2") ، والنتيجة . جعفر 680.4.الاجازات.accdb.zip
  3. وعليكم السلام نصيحة: الطريقة التي تقوم بها بكتاية الكود ، هي احد اسباب حصول خلل في برنامج الاكسس ابدا لا تكتب الكود او تغير فيه والنموذج ليس في وضع التصميم او وضع LayOut اما سبب مشكلتك: فعندك حدث على Timer التوقيت او ساعة او شيء من هذا القبيل ، والكود كلما اراد ان يشتغل بالطريقة الطبيعية ، واذا بالـ Timer يريد ان يقرأ الكود ، فيتلخبط الكود الذي تكتبه وما يلحق يأخذ نفس جعفر
  4. وانا ارحب بأخي رمهان ، واشاركه الرأي بطلب الكود ، للفائدة جعفر
  5. هذا نقلا عن الرابط https://www.pcreview.co.uk/threads/basic-difference-between-visual-basic-6-and-microsoft-access-vba.3034726/ 1. طريقة المعادلات والوحدات النمطية هي نفسها ، وبسبب ظهور vb للعالم قبل الاكسس ، فهناك الكثير من حلول vb والتي نستفيد منها في الاكسس ، 2. طريقة التعامل مع كائنات النموذج تقريبا نفسها ، ولكن الحدث يوجد فيه فرق ، وطريقة قراءة اعدادات كائنات النموذج تختلف قليلا ، وvb لا يملك نماذج فرعية كما في الاكسس ، والتعامل مع هذه البيانات الفرعية ليست بسهولة الاكسس ، 3. لا توجد تقارير في vb ، 4. لا تحتوي على وضع التصميم للجدول والاستعلام كما في الاكسس ، 5. الاكسس مهيأ ليتعامل مع البيانات ، ولكني الذي فهمته من سؤالك والذي جوابه النقطة 1 من جوابي اعلاه جعفر
  6. عفوا اخي ابوخليل ، لم الحظ ردك كانت الصفحة عندي مفتوحة لفترة طويلة اختي رجاء اعطني مثال من برنامجك عن كيف تريدين الجمع والنتيجة ، حتى نحاول نتبعها ونصل الى الذي تريدين جعفر
  7. وعليكم السلام تم تغيير اعدادات الحقل ID الى السماح بالتكرار ، وتفضل الكود ، والذي يشتغل بعد ان تُدخل قيمة الحقل Type في النموذج: Private Sub Type_AfterUpdate() Me.ID = Nz(DMax("[ID]", "Table1", "[Type]='" & Me.Type & "'"), 0) + 1 End Sub بس ملاحظة ، الموضوع غير متوقف على المادتين اللي ذكرتهم ، بل اذا اضفت اي مادة جديدة ، سوف يكون لها تسلسل مستقل. جعفر 718.db1.accdb.zip
  8. أخي وائل رجاء الالتزام بقوانين المنتدى ، كما نحن نلتزم به ، وقد كتبت لي على الخاص بأني حذفت احد مشاركاتك ، ولكني لم افعل ، والمشرفون الآخرون تصرفوا بها لأنها مشاركة في غير محلها ، عيناً كما هي مشاركتك هذه ، اما الآن ، فانا الذي تصرفت مع مشاركتك الاخير ، والخارجة عن اطار هذا الموضوع ، مشاركة في غير محلها. . جعفر
  9. وعليكم السلام انا لم اتدخّل في البرنامج/الكود ، ولا في تقريب الارقام ، إلا في التالي: . وهذا هو الكود Private Sub أمر8_Click() Dim strSQL As String Dim Add_it As Double strSQL = "DELETE G2.[رقم القسط], G2.رقم, G2.التاريخ, G2.المبلغ, G2.[المبلغ كتابه] FROM G2 WHERE (((G2.رقم)=[FORMS]![f1]![رقم]));" DoCmd.SetWarnings False DoCmd.RunSQL strSQL DoCmd.SetWarnings False Me.Requery DoCmd.GoToRecord , , acFirst For i = 0 To Forms![f1]![qastno] - 1 Me.رقم = Forms![f1]![رقم] Me.التاريخ = DateAdd("m", i, Forms![f1]![Date]) Me.المبلغ = Round(Forms![f1]![المبلغ] / Forms![f1]![qastno], 2) Add_it = Add_it + Nz(Me.المبلغ, 0) Me.المبلغ_كتابه = NoToTxt(Me.المبلغ, "ريال سعودي", "سنتيم") DoCmd.GoToRecord , , acNext Next 'Debug.Print Forms![f1]![المبلغ] & " >> " & Add_it If Add_it <> Forms![f1]![المبلغ] Then DoCmd.GoToRecord , , acNewRec Me.رقم = Forms![f1]![رقم] Me.التاريخ = DateAdd("m", i, Forms![f1]![Date]) Me.المبلغ = Forms![f1]![المبلغ] - Add_it Me.المبلغ_كتابه = NoToTxt(Me.المبلغ, "ريال سعودي", "سنتيم") End If DoCmd.Requery End Sub . جعفر
  10. وعليكم السلام تفضل . وهذا هو الكود Private Sub cmd_Next_Page_Click() On Error Resume Next Me.TabCtl0.Value = Me.TabCtl0.Value + 1 End Sub Private Sub cmd_Previous_Page_Click() On Error Resume Next Me.TabCtl0.Value = Me.TabCtl0.Value - 1 End Sub Private Sub cmd_lock_bbb_Click() Me.TabCtl0.Pages("bbb").Enabled = False End Sub Private Sub cmd_unlock_bbb_Click() Me.TabCtl0.Pages("bbb").Enabled = True End Sub جعفر 716.Tapages.accdb.zip
  11. وعليكم السلام 1. نعم تتشابه ، ولكن ليس 100% ، وهناك اوامر خاصة بالاكسس والتي لا توجد في VB ، 2. استعمل خاصية البحث لتجد بعض المواضيع التي تناقش طلبك جعفر
  12. السلام عليكم انا عملت بعض التعديلات ، وحذفت التاريخ من الربط بين النموذج الرئيسي والفرعي ، فرجاء تشوف اذا هذه النتيجة اللي تريدها جعفر 696.1.المستخدمين.accdb.zip
  13. وعليكم السلام هناك طريقة سهلة لهذا العمل واسمها "التنسيق الشرطي Condtional Formating" ، ولكنها لا تعمل الزر ، وانما على الحقول ، وهذه الروابط تشرح لك الطريقة جعفر
  14. رجاء توضع المرفق اللي انت اشتغلت عليه ، علشان نعمل التغيير عليه ، فالمرفق اعلاه مافيه تقرير. جعفر
  15. وعليكم السلام جرب هذا الكود Function Add_Sum() Me.sumation = Nz(Me.arab, 0) + Nz(Me.forgen, 0) End Function Private Sub arab_AfterUpdate() Call Add_Sum End Sub Private Sub forgen_AfterUpdate() Call Add_Sum End Sub Private Sub year_AfterUpdate() Me.id = Nz(DMax("[id]", "id", "[Glose]=" & [Forms]![main]![Glose]), 0) + 1 End Sub جعفر
  16. انا اعتذر عن مواصلة هذا الموضوع جعفر
  17. انا اعطيتك نصيحتي ، وانت صاحب البرنامج ، فاعمل ما تراه مناسبا ، والله سبحانه وتعالى أسأل ان يوفقك جعفر
  18. 1. أخي sofiane ، بعد 3 ايام و 40 مشاركة ولم تتوصل لما تريد!! 2. 3و4. جميع مشاركاتك كانت عن نموذج Admin!! 4. اولا: انت عملت اللازم كما هو واضح في الصورة الاخيرة ، والحمدلله وثانيا: هذه الطريقة غير صحيحة في العمل ، فيجب على Admin ان يسجل اسم المستخدم ويعطيه الصلاحيات ، وإلا فكما قلت انت ، الكل "يدخل يخربط"!! بالاضافة لما قلت اعلاه ، انا اعطيتك نصيحة وكل الذي تسأل عنه الآن ليس سوى القشرة ، فاعمل برنامجك من اول وجديد على اساس انك تعمل على مدينة واحدة فقط ، فالظاهر انه صار تغيير في طريقة عمل البرنامج ، بدل ان يخدم 8 مدن مرة واحدة ، فهو سيكون نسخة لكل مدينة ، وستضطر عند التعديل (لو البرنامج بطريقتك الحالية) الى ان تعدل على 8 برامج مختلفة ، لأن اسماء الجداول مختلفة ووووو ، بينما لو اخذت نصيحتي وعملت البرنامج من جديد على اساس مدينة واحدة ، لرأيت ان هذا الموضوع لم يكن له حاجة اصلا 2. نعم هذا الموضوع هو مجرد القشرة ، جعفر
  19. وعليكم السلام واهلا وسهلا بك في المنتدى ، قرب مافي شيء خاص للطباعة على واجهتي الورقة ، فهذه خاصية الطابعة ولا علاقة للأكسس فيها ، فقط تأكد عند اختيارك تصميم التقرير ، ان تختار حجم الورقة الصحيحة جعفر
  20. وعليكم السلام اخي طارق رجاء اعطنا مثال على النتيجة ، او مثالين. جعفر
  21. أخي sofiane رجاء فتح موضوع جديد للسؤال الجديد ، فأنت بهذه الطريقة تخالف قوانين المنتدى بوضع أكثر من سؤال في الموضوع. مخالف ، يُقفل. جعفر
  22. سؤال الموضوع كان: وقد اجبتك على جميع الاسئلة المتعلقة بهذا الخصوص عن طريق نموذجك Admin ، وبهذا يُعتبر الموضوع هذا منتهي اما اي شيء آخر تريد ان تضيف/تغير ، فالامر راجع لك وبالطريقة التي تعتقد انها مناسبة جميع اسئلتك تدور حول مدينة واحدة ، ولكن برنامجك فيه 8 مدن ، وهذا الذي عقّد لك الموضوع ، وخصوصا ان لكل مدينة برنامجها الخاص بها ومستخدميها ، نصيحتي ، انسى شيء اسمه مدينة ، واعمل برنامجك لمدينة واحدة فقط ، وجدول واحد ، وسترى ان جميع اسئلتك تستطيع الاجابة عليها ، وببساطة. والسلام خير ختام جعفر
  23. جوابك هو: ادخل في البرنامج ، افتح النموذج Admin في وضع التصميم ، وافتح قفل الحقلين اسم المستخدم وكلمة السر ، الآن اغلق البرنامج (ولا اقصد النموذج Admin ، وانما البرنامج) ، 1. افتح البرنامج من جديد ، ادخل اسم المستخدم a وكلمة سره هي a ، افتح نموذج Admin ، ادخل اسم مستخدم جديد ، وليكن a10 وكلمة السر a10 ، الآن لا يمكن للـ Admin a ان يعطي هذا المستخدم الجديد صلاحية أي مدينة غير CBR . 2. اغلق البرنامج وافتحه من جديد ، ادخل اسم المستخدم a10 وكلمة سره هي a10 ، افتح نموذج Admin ، سترى انه لا يستطيع الدخول الى هذا النموذج ويـ "يدخل يخربط" ، جرب واخبرني النتيجة ، لأننا ندور في نفس الحلقة من هذه الاسئلة عدة مشاركات. جعفر
×
×
  • اضف...

Important Information