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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. وعليكم السلام عدة طرق تجي على بالي: 1. في النموذج الفرعي (اسمه مثلا s_Search_All) ، اعمل حقل لحساب عدد السجلات ولنسميه s_count ، ويمكنك عمله هكذا: =Count(*) وفي النموذج الرئيسي تعمل حقل يأخذ قيمة الحقل اعلاه ، هكذا: =IIf(IsError([s_Search_All]![s_count]),0,[s_Search_All]![s_count]) والشكرا لأخي رمهان على هذه المعادلة ، والتي فائدتها عندما لا تكون سجلات في النموذج الفرعي ، لا نحصل على خطأ 2. تستطيع ان تعمل تحسب عدد السجلات من الاستعلام مباشرة ، هكذا (ويعتمد على معايير الاستعلام ، فقد يجب عليك وضع المعيار في المعادله): =dcount("*","Name_All") 3. تستطيع ان تحسب عدد سجلات النموذج الفرعي هكذا ، بحيث يكون اسم الحقل في النموذج الرئيسي SubForm_Records: dim rst as dao.recordset set rst=me.[s_Search_All]![s_count].recordsetclone rst.movelast:rst.movefirst me.SubForm_Records=rst.recordcount rst.close: set rst=nothing جعفر
  2. وعليكم السلام الرسالة تقول بأنه لا يمكنك إضافة بيانات في حقل معين ، وهناك عدة اسباب لهذه الرسالة ، ولا يمكن حلها إلا برؤية البرنامج جعفر
  3. وعليكم السلام بما انك عملت البحث ليعطي نتائجه بعد ادخال المعلومة (على حدث عند التغيير On Change) وبدون وجود زر خاص ، لهذا السبب لن نعرف متى انتهيت من البحث لذلك ، وضعت لك الكود في حدث "عندما يفقد الحقل التركيز On Lost Focus" (وتستطيع وضعه على حدث عند الخروج من الحقل On Exit) ، يعني بعد ان تنتهي من البحث ، اضغط على Enter او Tab ، وستذهب الى الحقل الذي تريد ، وبما ان الحقل الذي تريد نقل التركيز اليه موجود في نموذج فرعي ، لذا يتوجب اولا نقل التركيز الى النموذج الفرعي ثم نقل التركيز الى الحقل: Private Sub n1_LostFocus() Me.تابع132.SetFocus Me.تابع132!rgmhsab.SetFocus End Sub جعفر 726.نقل موشر الماوس بعد التحديث.accdb.zip
  4. وعليكم السلام تم مناقشة الموضوع هنا والنتيجة كانت جعفر
  5. آسف ، ما اعرف!! عندك نسختي ونسختك ، واعمل مقارنه بينهما جعفر
  6. تفضل ، المرفق بطريقة اخي رمهان جعفر 724.1.55.accdb.zip
  7. تفضل تم الاستغناء عن كود xsql بالكامل ، واستخدام الاستعلام Qry_T1 بدلا عنه جعفر 722.1.up.accdb.zip
  8. وعليكم السلام الرابط التالي يوضح طريقة الحساب ، والتي توضح صورتك المرفقه: http://egyptera.org/ar/t3reefa.aspx جعفر
  9. شكرا اخي رمهان بالفعل ، يمكن الاستغناء عن الكود ، واستعمال المعادلة التاليه في الحقل مباشرة: =IIf(IsError([تابع15]![نص13]),0,[تابع15]![نص13]) جعفر
  10. السلام عليكم الطريقة التي اقترحتها لم تفلح ، لذا استخدمت الكود التالي لعمل اللازم Private Sub Sub_Values() On Error GoTo err_Sub_Valuest Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From [مساعد يوميه]") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount 'a pause is required PauseTime = 0.5 Start = Timer Do While Timer < Start + PauseTime DoEvents Loop If RC > 0 Then Me.نص130 = Me.[تابع15]![نص13] Me.نص228 = Me.[تابع15]![نص23] Me.نص28 = Me.[تابع15]![نص17] Me.نص132 = Me.[تابع15]![نص29] End If rst.close: Set rst = Nothing Exit Sub err_Sub_Valuest: If Err.Number = 3021 Then 'No Records in SubForm Me.نص130 = 0 Me.نص228 = 0 Me.نص28 = 0 Me.نص132 = 0 ElseIf Err.Number = 3061 Then 'parameter required Set db = CurrentDb Set qdf = db.QueryDefs("[مساعد يوميه]") For Each prm In qdf.Parameters prm.Value = Eval(prm.name) Next prm Set rst = qdf.OpenRecordset(dbOpenDynaset) Resume Next Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub . ونناديها مرتين ، مرة في الحالي للنموذج الرئيسي ، ومرة عند تغيير التاريخ: Private Sub Form_Current() Me.[تابع15].Requery Call Sub_Values End Sub Private Sub n2_Exit(Cancel As Integer) Call cmd_Search2_Click Call Sub_Values End Sub . جعفر 724.55.accdb.zip
  11. السلام عليكم الظاهر انك ارفقت البرنامج الخطأ !! جعفر
  12. طيب لو تكمل جميلك وترد على باقي السؤال لوسمحت: جعفر
  13. وعليكم السلام أهلا بك في المنتدى سؤالك غير واضح ، فرجاء توضيحه اكثر بمرفق ، وتوضح لنا من المرفق ما تريده ، وياريت تعمل لنا الشكل الاخير لما تريده ، سواء في ملف وورد او حتى صورة جعفر
  14. أخي الفاضل 1. سؤالك غير واضح ، 2. الجدول sales لا يوجد به هذه الحقول !! لذا ، رجاء الاخذ من وقتك ، واعطنا شرح وافي ومثال واضح وارقام من برنامجك ، والنتيجة التي تريد الوصول اليها (ولو عن طريق برنامج الاكسل او وورد او صورة). جعفر
  15. وعليكم السلام اخي وضاح هذا الخطأ ينتج لما تكون عندك معادلة لحقل ومافيه بيانات ، لذا تقدر تستعمل iif الشرطية: اذا في بيانات ، فقم بالمعادلة ، واذا مافي بيانات فاعطنا "" ، مثلا من http://allenbrowne.com/RecordCountError.html : =IIf([Form].[Recordset].[RecordCount] > 0, Sum([Amount]), 0) وهناك شرح اكثر في الرابط اعلاه. جعفر
  16. وعليكم السلام انت تريد ان تفتح النموذج MONTH TARGET ، ولكن بتصفيته حسب التاريخ الذي في الحقل Text21 DoCmd.OpenForm "MONTH TARGET", , , "[ProdPlanDate]=#" & Me.Text21 & "#" جعفر
  17. السلام عليكم اخي bahnay انا اتفق مع اخي co2002co ، ولكن وكما قلت انت ، قد يكون برنامجك له خصوصية تتطلب هذا العمل!! اقتراحي: 1. العمل على جدول واحد فقط ، ويمكنك توضيح المعادلات والنسب التي تريد تنفيذها ، فقد نستطيع عملها عن طريق استعلام ، وحفظ البيانات على اساسها في الجدول ، 2. اذا اردت المُضي قُدما بطريقة الجدولين ، فكل اللي تجتاج له هو استعلام تحديث (لتحديث بيانات الجدول الآخر) ، حسب بيانات النموذج جعفر
  18. وعليكم السلام اخي شفان مبدئيا أقول لك لا اعرف، فالطريقة التي استعملتها من نافذة إعدادات الصفحة لا تعطينا هذا الخيار!! ولكن رجاء ان تجرب ان تعمل إعدادات التقرير الرئيسي والفرعي من اليمين إلى اليسار، ثم أخبرنا عن النتيجة ، لأني سأكون بعيدا عن الكمبيوتر لعدة أيام جعفر
  19. السلام عليكم هذا رابط جواب التسلسل جعفر
  20. السلام عليكم كان المفروض ان يكون هذا الموضوع كجواب للموضوع والمشكلة هي ان ارقام التسلسل بالعربي ، في كل من التقارير الفرعية ليست بالتسلسل المطلوب ، ولا السنه بالتسلسل الصحيح . نعرف اذا اردنا ان نعمل اكثر من عمود في التقرير ، فاننا نستعمل اعدادات الصفحة في التقرير . اذا التقرير بالانجليزي ، فكل شيء تمام وبالترتيب/التسلسل المطلوب ، ولكن للأسف لما نريد الاعمدة بالتسلسل العربي ، من اليمين الى اسفل ، ثم يُكمّل العمود الثاني من حيث انتهى الاول ، هكذا . فهنا يجب ان نقوم بمعالجة الموضوع بطريقتنا الخاصة استعنت بالبرنامج من الروابط اعلاه ، وعملت تجارب على عدة اعمدة: 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
  21. وعليكم السلام نصيحة: الطريقة التي تقوم بها بكتاية الكود ، هي احد اسباب حصول خلل في برنامج الاكسس ابدا لا تكتب الكود او تغير فيه والنموذج ليس في وضع التصميم او وضع LayOut اما سبب مشكلتك: فعندك حدث على Timer التوقيت او ساعة او شيء من هذا القبيل ، والكود كلما اراد ان يشتغل بالطريقة الطبيعية ، واذا بالـ Timer يريد ان يقرأ الكود ، فيتلخبط الكود الذي تكتبه وما يلحق يأخذ نفس جعفر
×
×
  • اضف...

Important Information