اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    408

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

  1. بالعكس اخوي شفان ، انا دائما ارحب اكثر من مشاركة في الموضوع ، فبهذه الطريقة الاجابات تكون مختلفة ، وهاي فائدة للجميع جعفر
  2. وعليكم السلام 1. انا غيّرت الحقل "رقم السند" الى نص ، 2. هذه الوحدة النمطية تقوم بعمل الترقيم Function Next_Seq(T As String) As String 'T = Type نوع السند 'A = سند ايردات 'M = سند مصروفات 'S = سند سداد 'G = سند قبض myGroup = "A = سند ايردات" & vbCrLf & _ "M = سند مصروفات" & vbCrLf & _ "S = سند سداد" & vbCrLf & _ "G = سند قبض" If Len(T & "") = 0 Then MsgBox "يجب ان يكون نوع السند" & vbCrLf & "A او M او S او G" & vbCrLf & vbCrLf & myGroup Exit Function ElseIf T <> "A" And T <> "M" And T <> "S" And T <> "G" Then MsgBox "يجب ان يكون نوع السند" & vbCrLf & "A او M او S او G" & vbCrLf & vbCrLf & myGroup Exit Function Else Next_Seq = Nz(DMax("Mid([رقم السند], 2)", "السندات", "Mid([رقم السند], 1, 1) = '" & T & "'"), 0) Next_Seq = T & Format(Next_Seq + 1, "00000") End If End Function وكلما اردت ان تحصل على رقم جديد في نموذجك ، اكتب هذا الكود: تذكر 'A = سند ايردات 'M = سند مصروفات 'S = سند سداد 'G = سند قبض me.[رقم السند]= Next_Seq("A") جعفر 698.3333.mdb.zip
  3. 1. ابدأ بعتاب ، المادة رقم 2 2. تأكد انك لم تختار الارقام العشوائية من اعدادات الحقل في الجدول ، فالصورة تعطيك الاعداد الصحيح: 3. هذه الارقام غير عشوائية ، وانما انت لم تعمل فرز بهذا الحقل ، فاعمل الفرز ، واعمل رقمين التاليين ، وستلاحظ انها ليست عشوائية اما اذا كانت هناك مجموعة كبيرة من الارقام غير موجودة ، والرقم التالي يكون كبير ، فاحذف الرقم الكبير ، واعمل كما قال أخونا ابو عبدالله اعلاه جعفر
  4. 1. نعم ، لأنك استخدمت رقم العميل ، واللي هو حقل رقم ، بينما لا يمكنك استخدام اسم العميل (حقل نص) بنفس الطريقة ، 2. عرض التقرير اعرض من الورقة ، لذا لازم تضيقه علشان التقرير ينطبع في ورقة واحدة جعفر
  5. الطريقة الصحيحة لأكثر من معيار: Private Sub cmd_Print_Click() Criti = "[رقم الفاتورة]=" & Me.[رقم الفاتورة] Criti = Criti & " And [اسم العميل]='" & Me.[اسم العميل] & "'" DoCmd.OpenReport "فاتورة مبيعات", , , Criti End Sub Private Sub cmd_Print_Preview_Click() Criti = "[رقم الفاتورة]=" & Me.[رقم الفاتورة] Criti = Criti & " And [اسم العميل]='" & Me.[اسم العميل] & "'" DoCmd.OpenReport "فاتورة مبيعات", acViewPreview, , Criti End Sub جعفر
  6. وعليكم السلام قد يفيدك هذا الرابط جعفر
  7. السلام عليكم اخي سلمان انا قبل ان اعمل تعديل على النموذج ، آخذ نسخة منه ، وبسبب عدم التوضيح مني ، انت تستخدم النموذج النسخة من ن_ادخال_العروض !! رجاء استخدام النموذج ن_ادخال_العروض ، لتحصل على: جعفر
  8. وعليكم السلام اخي وضاح السؤال هو ، في اي نموذج ، في اي حقل ، هل السنة لها علاقة بالموضوع جعفر
  9. انا اعتذر منك ، لم اجرب الكود قبل ان اضعه لك واليك التغيير ، بعد التجربة: Dim rst As DAO.Recordset Dim C 'As Integer Set rst = CurrentDb.OpenRecordset("Select * From qry_workscope_utility") rst.MoveLast: rst.MoveFirst rst.MoveNext C = rst!VisitNo rst.MovePrevious rst.Edit If C <> "NA" Then rst!VisitNo = C + 1 End If rst.Update rst.Close: Set rst = Nothing Me.frm_WORKSCOPE.Requery جعفر
  10. بالنسبة الى الخطأ ، اعملي هذا التغيير على السطر rst!VisitNo = IIf(IsNumeric(C), C + 1, "") والآن عندك كودين يشتغلون ، وانتي اختاري الكود اللي يريحك جعفر
  11. بالنسبة للتغيير اللي انتي عملتيه ، استخدمي التعديل التالي ، وراح يشتغل الكود Dim rst As DAO.Recordset Dim RC 'As Integer Dim C 'As Integer Set rst = CurrentDb.OpenRecordset("Select * From qry_workscope_utility") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount rst.MoveNext C = rst!VisitNo rst.MovePrevious If C = "NA" Then Else ' If IsNull(Form_frm_WORKSCOPE.VisitNo) Or Form_frm_WORKSCOPE.VisitNo = "" Then rst.Edit rst!VisitNo = C + 1 rst.Update Me.frm_WORKSCOPE.Requery 'End If End If rst.Close: Set rst = Nothing جعفر
  12. غيري السطر rst!VisitNo = C + 1 الى rst!VisitNo = IIf(C = "NA", "", C + 1)
  13. 1و2. تمام بس اكتبي السطر التالي في النهاية Me.frm_WORKSCOPE.Requery جعفر
  14. وعليكم السلام تفضلي Dim rst As DAO.Recordset Dim RC As Integer Dim C As Integer Set rst = CurrentDb.OpenRecordset("Select * From qry_workscope_utility") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount rst.MoveNext C = rst!VisitNo rst.MovePrevious rst.Edit rst!VisitNo = C + 1 rst.Update rst.Close: Set rst = Nothing جعفر
  15. تفضل Dim a() as string x = "852 ,123, 456, 789, 741" 'بدل ان يكون عندنا سطر للمتغير 'x 'اعمله اعمدة للمتغير 'a 'Array 'بحيث يكون فصل كل كلمة بعد الفاصلة a=split(x,",") 'خلينا نشوف قيم المتغير 'a 'من اول سطر فيه ، وهو صفر ، الى اخر سطر فيه 'Lower Bound(a) to Upper Bound(a) for i=lbound(a) to ubound(a) if a(i)=789 then msgbox "found 789" end if next i جعفر
  16. وعليكم السلام Dim a() as string x = "852 ,123, 456, 789, 741" a=split(x,",") for i=lbound(a) to ubound(a) if a(i)=789 then msgbox "found 789" end if next i جعفر
  17. وهنا شرح كيف تستطيع ان تعمل التصفية بنفسك جعفر
  18. وعليكم السلام هلا والله بولد بلادي رجاء تخبرنا اي نموذج تتكلم عنه ، واسم زر الطباعة ، وايش الطريقة اللي لازم نتبعها علشان نوصل للي تريده ، يعني يُفضل مثال لوسمحت جعفر
  19. وعليكم السلام تفضل: لقياس سرعة تنفيذ المجموعة 1 ....كود t = timer ....كود t1 = timer - t ' الوقت بالثواني ....كود لقياس سرعة تنفيذ المجموعة 2 ....كود t = timer ....كود t2 = timer - t ' الوقت بالثواني ....كود . هكذا ، t1 و t2 و ... يعطوك وقت تنفيذ كل مجموعة ولكن اخذ اكثر من قراءة واحدة لكل مجموعة ، ثم اخذ المعدل. جعفر
  20. اعتذر عن هذا الخطأ جرب المرفق جعفر 694.مثال على البرنامج 1.accdb.zip
  21. وعليكم السلام اخي سلمان تفضل Private Sub cmd_ReSeq_Click() Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("Select * From TB_1 Where isNull(m_RegMin1)=False Order By No_Common") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount 'set all id2 to zero DoCmd.SetWarnings False DoCmd.RunSQL ("UPDATE TB_1 SET Id2 = 0") DoCmd.SetWarnings True For i = 1 To RC rst.Edit rst!id2 = i rst.Update rst.MoveNext Next i rst.Close: Set rst = Nothing MsgBox "Done" End Sub جعفر 695.sa.accdb.zip
  22. وعليكم السلام اخي سلمان اولا احب ان اشكرك على جميل عرضك للسؤال ، بالشرح المفصّل والصور ، وبأسم النموذج والزر وووو والآن الى اسألتك 1. ازرار نموذج ورقة البيانات: من المعروف ان طريقة عرض ورقة البيانات لا تستطيع ان تجعل فيها ازرار ، ولكن مثل ما تفضّلت ، فيها ميزة التحكم بالاعمدة (الحقول) وتحريكها ، والتي لا توجد بالنموذج المستمر ، فإذا اردت ان تعمل كود لهذا النموذج ، فتستطيع ان تعمله بطرق اخرى غير الزر ، مثل حدث "النقر المزدوج" في حقل معين ، او كتابة رمز/رقم/حرف/كلمة في حقل وعمل الحدث على "بعد تحديث" الحقل ، الطريقة الاخرى اللي تستطيع ان تشغّل كود نموذج ورقة البيانات (في هذه الحالة سيكون النموذج نموذج فرعي) ، ولكن تعمل الزر في النموذج الرئيسي ، والذي سيستدعي كود نموذج ورقة البيانات الفرعي: في نموذج ورقة البيانات الفرعي ن_عروض_الاراضي_العام بدلا عن Private Sub ss_Click() اكتب Public Sub ss_Click() ومن اي نموذج/تقرير/وحدة نمطية في البرنامج ، نستطيع ان نناديها هكذا Call ن_عروض_الاراضي_العام.ss_Click . 2. تصدير النموذج بعد التصفية الى ملف وورد: انا عملت زر على النموذج الرئيسي "عروض - طباعة" ، ووضعت عليه هذا الكود: Private Sub ss_External_Click() 'Call ن_عروض_الاراضي_العام.ss_Click fltr = Replace(Me.ن_عروض_الاراضي_العام.Form.Filter, "[ن_عروض_الاراضي_العام].", "") fltr = Replace(fltr, "ن_عروض_الاراضي_العام.", "") DoCmd.OpenForm "ن_عروض_الاراضي_العام", acFormDS, , fltr, , acHidden DoCmd.OutputTo acOutputForm, "ن_عروض_الاراضي_العام", acFormatRTF, "c:\Temp\myDoc.rtf", True End Sub . اسمح لي ان اقترح عليك تغيير طريقة وضعك للنماذج الفرعية المتراكمة!! فاما ان تضعها عن طريق صفحات (وهو الاسهل) ولا يختلف كثيرا عن طريقة عملك ، ولكن سيكون لكل نموذج اسمه ، او تعمل كائن فارغ في النموذج الرئيسي (تعمل نموذج فرعي ، ثم تحذف اسم النموذج الفرعي من Source Object ، فيبقى كائن النموذج الفرعي فارغا) : . ثم عندما تريد ان تضع النموذج الفرعي ن_عروض_الاراضي_العام هناك ، تضع هذا الكود على الزر: Me.mySub.SourceObject = "ن_عروض_الاراضي_العام" . والميزة انه عندما تريد ان تنادي هذا النموذج الفرعي (او اي نموذج فرعي آخر) ، فلا تستعمل اسمه ، وانما تستعمل اسم mySub ، ويجعل النموذج الرئيسي يعمل بسرعة (لوجود نموذج فرعي واحد فقط فيه) ، وفي نفس الوقت نقل البيانات يكون اقل ، لأننا نتعامل مع نموذج فرعي واحد جعفر 694.مثال على البرنامج 1.accdb.zip
×
×
  • اضف...

Important Information