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

ابوخليل

أوفيسنا
  • Posts

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

  • Days Won

    237

كل منشورات العضو ابوخليل

  1. نعم وتستحق ان تفتح لها موضوعا جديدا
  2. تم فصل الموضوع الجديد عن الموضوع السابق اخي الكريم يجب تخصيص كل مشاركة بسؤال يخصها تم التعديل وعمل المطلوب stDocName = "Rep1" If R_p = 1 Then Rm2 = Rm1 Else Rm2 = "" End If If show = 1 Then DoCmd.OpenReport stDocName, acPreview Else DoCmd.OpenReport stDocName, acViewNormal End If اجازات2.rar
  3. تم تعديل المرفق وتمت التجربة ، آمل ان يحقق مطلبك جرب .. ووافنا بما يستجد db2.rar
  4. اطلعت على المثال وما قمت به انت جميل حيث ان اسم الدورية يظهر في مربع التحرير في النموذج بمجرد كتابة الحرف الاول وايضا عند معاينة التقرير يظهر اسم الدورية في الاعلى كعنوان علما ان البحث يتم عبر الارقام وهذا طبيعي لا اعلم ما تقصد في طلبك اعلاه فان كنت تريد تحويل مربع التحرير الى حقل والبحث عن نص فهذ ا يتطلب اعادة تصميم الحقل في الجدول
  5. اخي الكريم الموضوع قديم انظر تاريخ المشاركة يغلق ،،،
  6. لا يزيد عن عشرة ؟ لانه ما زال حقلا نصيا وفي الحقل النصي التسعة اكبر من العشرة بل الاثنان اكبر من العشرة لذا فالكود يختار اكبر عدد في الحقل النصي وهو التسعة ثم يقوم بتحويله الى رقم ثم يضيف اليه واحد ليصبح عشرة ولكن رقم عشرة موجود فعلا لذا يرفض اكسس تكرار الرقم . ومن هنا يتبين من اين جاءت المشكلة التي تحدث معك . والحل هو ان نقوم بتحويل العدد المقتطع الى رقم قبل اختيار اكبر عدد وهذا ماتم تحقبقه في التعديل أدناه التعديل تم داخل سطرين فقط وقد بينتهما . Private Sub ts1_AfterUpdate() Dim db As Database Dim rs As Recordset Dim strSQL As String Dim i As Long ' (1)هذا السطر Set db = CurrentDb strSQL = "SELECT Max(CLng(Right([no1],Len([no1])-1))) AS xc FROM tb WHERE (((tb.chk)=paray()))" '(2) وهذا السطر Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot) If rs.RecordCount > 0 Then rs.MoveFirst On Error Resume Next i = rs![xc] If ts1 = 1 Then Me.no1 = "A" & i + 1 ElseIf ts1 = 2 Then Me.no1 = "B" & i + 1 ElseIf ts1 = 3 Then Me.no1 = "C" & i + 1 End If End If rs.Close Set rs = Nothing Set db = Nothing Me.chk = Me.ts1 End Sub
  7. ممكن وهو الافضل في غالب الاعمال ولكن ما عمله الاستاذ ابو عمر هو الأصح لانه محمي عن التعديل تم التعديل في المثال ادناه ولكن يجب الحذر بعدم تغيير الارقام لان الكود مبني على الارقام الثلاثة 1 ، 2 3 ترقيم تلقائي منوع 3.rar
  8. هذا كلام جديد جديد : لان ماسبق كنا نتعامل مع بيانات الحقل كرقم بالرغم ان نوع الحقل نص اما اذا ادخلنا الحروف فهنا لا يمكن تطبيق الجمل البرمجية السابقة وسنحتاج الى التعامل مع الحقل بطريقة أخرى وهذا ما تم فعله في المثال المرفق حيث يتم استبعاد الحرف ونتعامل مع بقية النص كرقم Private Sub ts1_AfterUpdate() Dim db As Database Dim rs As Recordset Dim strSQL As String Dim i As Integer Set db = CurrentDb strSQL = "SELECT Max(Right([no1],Len([no1])-1)) AS xc FROM tb WHERE (((tb.chk)=paray()))" Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot) If rs.RecordCount > 0 Then rs.MoveFirst On Error Resume Next i = rs![xc] If ts1 = 1 Then Me.no1 = "A" & i + 1 ElseIf ts1 = 2 Then Me.no1 = "B" & i + 1 ElseIf ts1 = 3 Then Me.no1 = "C" & i + 1 End If End If rs.Close Set rs = Nothing Set db = Nothing Me.chk = Me.ts1 End Sub اما بخصوص حقل chk فإن المصدر مربع التحرير وليس الجدول وانما وضعنا الحقل داخل الجدول كي نستخدمه كمعيار ، وانظر اليه في المثال الجديد لتتضح الرؤية واما زيادة الفروع مستقبلا فلا يمكننا ذلك الا بتعديل الكود ايضا ترقيم تلقائي منوع 2.rar
  9. تفضل وامل ان يفي بحاجتك db6.rar
  10. هذا بالضبط ما عملته لك راجع المثال مرة اخرى ابدأ بالترقيم من 1 وان اردت ان تبدأ من اي رقم فغير الدالة Dcount الموجودة في الكود الى DMax هذا كلام جديد
  11. يوضع هذا الكود في محرر الفيجوال الخاص بالنموذج او التقرير التطبيق المرفق وضعنا الكود في حدث طباعة التفصيل في التقرير db4.rar
  12. تم تحديث الحل حسب طلبك الاخير Private Sub ts1_AfterUpdate() On Error Resume Next Dim i, x, z As Integer i = DCount("no", "tb", "chk=1") x = DCount("no", "tb", "chk=2") z = DCount("no", "tb", "chk=3") If ts1 = 1 Then Me.no = i + 1 ElseIf ts1 = 2 Then Me.no = x + 1 ElseIf ts1 = 3 Then Me.no = z + 1 End If Me.chk = Me.ts1 End Sub وانظر التطبيق حيث يلزم اضطرارا وضع حقل في الجدول يبين النوع ترقيم تلقائي منوع.rar
  13. Option Compare Database Dim x As Integer Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) If IsNull(Text1) = True Then 'بدء الترقيم من 216 Text1 = 216 x = 1 Else Text1 = x + Text1 End If End Sub
  14. مداخلة بعد اذن اخي الاستاذ ابا عمر وفي حقل واحد ؟ هذا يعني قبول التكرار اي ان رقم واحد سيتكرر مرتين ورقم 2 مرتين .... وهكذا اذا كان كذلك فيجب ازالة المفتاح من الحقل وضبط الخاصية على قبول التكرار بمعنى انه سيكون للجدول مفتاحا آخر ماذا تقول ؟
  15. بعد اذن اخي الاستاذ سمير انظر هنا لعلك تجد فائدة http://www.officena.net/ib/index.php?showtopic=49134&view=findpost&p=298300&hl=%D8%A7%D9%83%D8%B3%D9%84
  16. انظر هنا http://www.officena.net/ib/index.php?showtopic=48569&page=2#entry301916
  17. هذا الموضوع تجد فيه بغيتك http://www.officena.net/ib/index.php?showtopic=49880
  18. التمس لإخوانك عذرا بارك الله فيك وبالنسبة لطلبك فلتفريغ حقل text1 مثلا اكتب في حدث الزر : text1 = "" وهكذا لجميع الحقول المطلوب تفريغها يمكنك وضعها في حدث زر واحد
  19. [no] = (s * 1000000) + DCount("[no]", "[tb]", "left([tb]![no],1)=" & [s]) + 1 رائع
  20. الملف كبير جدا اكبر من 25 ميجا لا يمكن تحميله يكفي تقرير وجدول لترى كيف يتم العلاج يجب ان نتعامل مع المرفقات كأمثلة بسيطة لزيادة الايضاح
  21. المرفق معطوب ارفق مثالك على صيغة mdb
  22. تم دمج الموضوعين وتنسيقهما
  23. من هنا http://www.officena.net/ib/index.php?showtopic=31250
×
×
  • اضف...

Important Information