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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. اشرت انا سابقا ، الحل في هذه المشاركة : جعفر
  2. شكرا جزيلا اخوي ابو عبدالله ، مجهود تُشكر عليه 🙂 الكود يقوم بنسخ هذه البيانات الى الجدول Table3 . وهكذا الوقت الذي يستغرقه كل نوع من الاكواد : Time1 ==========> 3.16797 <= DoCmd.RunSQL Time2 ==========> 3.14453 <= CurrentDb.Execute Time3 ==========> 3.72656 <= CurrentDb.Execute "Query1" Time4 ==========> 9.07031 <= CurrentDb.OpenRecordset ================================ Time1 ==========> 3.11328 Time2 ==========> 3.13672 Time3 ==========> 3.07422 Time4 ==========> 6.05859 . وتم حذف اول محاولة ، حيث في المرة الاولى ، يحتاج الاكسس الى عمل Compile لجملة SQL التي سيستعملها في الاستعلام : . هكذا ممكن عمل اتصال مع قاعدة بيانات خارجية (لاحظ هذا استعلام الحاقي) : . ونقدر نستعملة كإستعلام (وهو الاسرع) ، او جملة SQL مع docmd.RunSQL او "currentdb.execute "qry_tbl_BB_Append 🙂 ويمكن استعمال Source Connect Str ، لإضافة متطلبات الربط ، وهذا احد المواقع اللي يعطينا جملة الربط : Access connection strings - ConnectionStrings.com جعفر
  3. اعدت رفع الملف في مشاركة اخوي مسفر 🙂 طبعا الرجال مدلّعني واسم الملف على اسمي له بونص 😁 جعفر
  4. وعليكم السلام 🙂 حيا الله اخوي ابو يعقوب ، واهلا وسهلا بك في المنتدى🙂 للاستفادة القصوى من المنتدى ، رجاء قراءة قوانين المنتدى : قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف _____________________________________________________ نعم ، فهذا عمل قاعدة البيانات 🙂 رجاء افتح موضوع جديد ، واكتب فيه ما توصلت اليه من العمل على قاعدة بياناتك ، وارفق قاعدة البيانات ، واكتب اسم موضوع يدل على طلبك ("ارجو المساعد" ليس لها معنى ، وهي مخالفة لقوانين المنتدى) ، وان شاء الله ستجد المساعدة من اخوانك الاعضاء 🙂 جعفر
  5. نعم هناك خلل في الصورة ، وليس في الكود 🙂 جعفر
  6. الاكسس يستعمل وحدة قياس في الكود تختلف عنه في وضع التصميم ، في الكود يستعمل وحدة قياس تويب Twip 1سم = 567 تويب 1بوصة = 1440 تويب . اخوي الدكتور حسين ، الظاهر بعدك ما خلصت من حلاوة العيد جعفر
  7. وعليكم السلام 🙂 على افتراض ان اسماء الحقول صحيحة في الكود ، يوجد خطأ واحد في كل معادلة : يجب إضافة مسافة بين الاشارة " وكلمة and ، في المعادلتين : . هكذا : 'حساب عدد ايام الجمعة ضمن الاجازة الرسمية بين التاريخين Fri_Days = DCount("*", "tblHoliDays", _ "WeekdayName(weekday([HoliDays]),true)= 'Fri'" & _ " and [HoliDays] between #" & begdate & "# and #" & enddate & "#") Debug.Print "Fri_Dats:--->" & Fri_Days 'حساب عدد ايام السبت ضمن الاجازة الرسمية بين التاريخين sat_Days = DCount("*", "tblHoliDays", _ "WeekdayName(weekday([HoliDays]),true)= 'Sat'" & _ " and [HoliDays] between #" & begdate & "# and #" & enddate & "#") Debug.Print "Fri_Dats:--->" & Fri_Days واذا ما حصلت على نتيجة ، فيمكن يجب ان نرى ما يراه البرنامج في صيغة التاريخ ، وعليه قد نحتاج الى استعمال الدالة fDateFormat : جعفر
  8. اصل السؤال ، والاستفسار عن الامر RunSQL فيه ، لا يعطينا انطباع على انه لا يوجد جداول مربوطة ، وعليه كان جوابي 🙂 جعفر
  9. هممم اخي حسين ، حسب قراءتي ، فالاسرع سيكون الاختيار الاول ، وذلك بسبب ان الاكسس يكون قد عمل Compile لجملة الـ SQL ، فالمرة الاولى في استعمال كود استعلام التحديث ، ستكون بطيئة (قبل الـ Compile) ، بينما جميع المرات التالية ستكون اسرع 🙂 وعلى كل حال ، فنريد متطوع يقوم بتجربة الطريقتين ، ونأخذ توقيت عمل كل طريقة ، مثلا 10 مرات ، ثم نأخذ المعدل 🙂 جعفر
  10. اسماء الحقول اصبحت C1 و C2 و C3 ، واعمل خلفيتهم باللون الذي تحب ، وعند حدث بعد التحديث ، سيتم اختيار المربع الذي يحمل نفي الرقم ، بنفس لون الخلفية: استعمل هذا الكود : Private Sub Select_it(ctl As Control) For i = 1 To 32 If Me("[" & i & "]") = Me(ctl.Name) Then Me("[" & i & "]").BackColor = Me(ctl.Name).BackColor End If Next i End Sub Private Sub C1_AfterUpdate() Call Select_it(C1) End Sub Private Sub C2_AfterUpdate() Call Select_it(C2) End Sub Private Sub C3_AfterUpdate() Call Select_it(C3) End Sub . جعفر 1402.1.Random Numbers.accdb.zip
  11. حياك الله 🙂 انا وضعت لك الكود جاهز ولا يحتاج تفكير في التطبيق ، بس اسم زر امر توليد الارقام ، اسمه cmd_Generate_Random ، وهذا كود الحدث ، والسلام 🙂 جعفر
  12. مازلت تتحفنا فنياً وادبياً اخوي خالد ، فجزاك الله خيرا 🙂 جعفر
  13. اشوفك تتسرّع في تعليقاتك !! ولو تغيّر التعليق الى سؤال ، فبتحصل على اجابات افضل 🙂 الهدف الاكبر من هذا الموضوع هو ، حماية البيانات : 1. اذا البيانات على السيرفر ، والاكسس متصل بجداوله في السيرفر ، فالرابط يكون مستمر بين الواجهة والجداول ، والشاطر يقدر يستعمل احد برامج "الشم" Sniffing والتوصل الى ما يشاء ، 2. بينما اتصالك بالكود للسيرفر وجلب البيانات ، ثم انقطاع الاتصال بالسيرفر ، يجعل الموضوع ذو امان اكثر 🙂 وللعلم ، فهناك العديد من الجهات التي تهتم بأمن البيانات ، تصر على ان تكون جميع كائناتها غير منضمه 🙂 جعفر
  14. شكرا جزيلا اخوي حسام انك نبهتنا لخطأ التكرار ، واللي صعب معرفته غير انك تجعل الارقام من 1 الى 32 🙂 هذا تعديل الكود حقي : Private Sub cmd_Generate_Random_Click() Dim i As Integer Dim j As Integer Dim f As Integer Dim e As Integer Dim t As Single t = Timer 'احفظ سجل النموذج If Me.Dirty Then Me.Dirty = False f = Me.[f-no] e = Me.[e-no] For i = 1 To 32: Me("[" & i & "]") = 0: Next i For i = 1 To 32 Try_Again: Dim MyValue Randomize Timer MyValue = Int((e * Rnd) + f) '1. No Duplicates For j = 1 To i If Val(Me("[" & j & "]")) = MyValue Then GoTo Try_Again Next j '2 Smaller than, Or Greater than If MyValue < f Or MyValue > e Then GoTo Try_Again Else Me("[" & i & "]") = MyValue End If Next i Debug.Print Timer - t End Sub . وتلاحظ اني حسبت الوقت اللي الكود يأخذه في عمل اللازم ، ويمكن مقارنة سرعة الكود هذا مع كود اخوي حسين واخوي حسام 🙂 جعفر
  15. وعليكم السلام 🙂 اكتب كلمة Randomize في مساعد الاكسس ، وستحصل على الجواب: . ولا تستخدم علامة الناقص في اسماء كائناتك (بل استعمل الشرطه السفليه _ ) ، لأنها في الكود تصبح : . فتضطر الى معالجته بوضع اسم الكائن بين [] : . ولا تستخدم الارقام في تسمية الحقول ، فالاسم لا يظهر في الكود VBE ، مثلا انا طلب الحقل الذي اسمه 1 ، ولكن الكود لا يراه : . ولاحظ ان اخي حسين لم يتعامل مع حقل النموذج مباشرة ، بل تعامل مع الجدول 🙂 وعليه ، وحتى نتعامل مع حقل النموذج ، يصبح الكود : Private Sub cmd_Generate_Random_Click() Dim i As Integer Dim f As Integer Dim e As Integer 'ÇÍÝÙ ÓÌá ÇáäãæÐÌ If Me.Dirty Then Me.Dirty = False f = Me.[f-no] e = Me.[e-no] For i = 1 To 32 Try_Again: Dim MyValue Randomize Timer MyValue = Int((e * Rnd) + f) If MyValue < f Or MyValue > e Then GoTo Try_Again Else Me("[" & i & "]") = MyValue End If Next i End Sub . جعفر
  16. السلام عليكم 🙂 الظاهر انك تتب طريقة خاصة في عمل فاتورة جديدة ، او انك وضعت الكود في حدث آخر !! لأن الكود الذي اعطيتك هو عينا نفس الكود الذي اعطاك الاخ خالد ، والاثنين يعطون تقرير برقم الفاتورة الموجودة في النموذج او النموذج الفرعي !! على العموم ، هذه صورة عن مكان الكود الذي وضعته انا : . وهذا تعديل بسيط لحفظ السجل قبل طباعة التقرير: Dim stDocName As String If Me.Dirty Then Me.Dirty = False stDocName = "re3" 'DoCmd.OpenReport stDocName, acNormal, , "[invo]=" & Me.invo DoCmd.OpenReport stDocName, acViewPreview, , "[invo]=" & Me.invo جعفر
  17. هذا الكود زر الطباعة الموجود عندك ، مع اضافة رقم الفاتورة في نهايته : Dim stDocName As String stDocName = "re3" DoCmd.OpenReport stDocName, acNormal, , "[invo]=" & Me.invo جعفر
  18. اقترح الطباعة تكون كالتالي: في المرة الاولى: عند الطباعة مرة اخرى للشيف او المطبخ : بهذا التنسيق ، وبهذا الترتيب ، فيعرف الشيف المطلوب 🙂 جعفر
  19. ما عندي تعليق على ملاحظتك. ولكن انظر الى هذه الملاحظة: فإذا وضعت الكود على حدث خطأ ، فالاكسس غير مذنب !! وارى الكثير يستعمل مثل هذا الكود ، والذي لن يعمل على هذا الحدث حتى لو حاولت فيه لبكرة الصبح : Private Sub iDate_AfterUpdate() cancel = true end if . فمناداة الحدث لا يوجد عندها متغير cancel ، والمتغير موجود في الحدث التالي ويعمل من اول مرة : Private Sub iDate_BeforeUpdate(Cancel As Integer) cancel = true end if جعفر
  20. تفضل 🙂 افتح التقرير rpt_Vertically_center_Fields الدالة التي تقوم بالعمل ، وعملت لها وحدة نمطية مستقلة ، حتى يمكننا الاستفادة منها لأكثر من تقرير: Public Sub VerticalAlignCenter(ByRef ctl As Control) ' 'From: https://www.vbforums.com/showthread.php?505561-VB-VBA-Set-TextBox-and-Label-text-to-Vertically-Align-Center&p=3675142&viewfull=1#post3675142 ' 'Sets the vertical alignment of a label or textbox to "Center" 'NOTE: 'MinimumMargin: the value of the smallest margin Access allows in twips. If you set the .TopMargin 'to "0", Access will actually place a gap equal to 1 point (or 20 twips) rather than actually 'placing the text at the very top border of the control. FURTHER NOTE: Access sucks. ' 'BorderWidth: half the value of .BorderWidth in twips. As you increase the border (Hairline, 1pt, 2pt, etc..) 'Access expands the border equally from the center. We're only concerned with the "inner" section of the border. ' 'TwipsPerPoint: global constant set to 20 On Error GoTo ErrorCode Dim MinimumMargin As Integer Dim BorderWidth As Integer Dim TwipsPerPoint TwipsPerPoint = 20 If Not ((TypeOf ctl Is TextBox) Or (TypeOf ctl Is Label)) Then Exit Sub 'Figure out how many lines it is Dim LenOfText, WidOfBox, NumberOfLines, HtOfText If TypeOf ctl Is TextBox Then LenOfText = ctl.Text Else: LenOfText = ctl.Caption End If 'how wide is this puppy? WidOfBox = ctl.Width LenOfText = (Len(LenOfText) * TwipsPerPoint * ctl.FontSize) / 2 NumberOfLines = Int(LenOfText / WidOfBox) + 1 HtOfText = NumberOfLines * TwipsPerPoint * ctl.FontSize MinimumMargin = 1 * TwipsPerPoint BorderWidth = (ctl.BorderWidth * TwipsPerPoint) / 2 ctl.TopMargin = ((ctl.Height - HtOfText) / 2) - MinimumMargin - BorderWidth ErrorCode: Exit Sub End Sub . ثم في التقرير ، انقر على فاصل قسم التفصيل Detail ، وفي حدث "عند الطباعة" (ولن يعمل يأي حدث آخر ، فهو آخر حدث قبل الطباعة ، بينما للاحداث الاخرى يكون فات الاوان لهذا العمل) ، ننادي الدالة اعلاه بإسم الكائن الذي نريد توسيطه : Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) VerticalAlignCenter Me.save VerticalAlignCenter Me.a1 End Sub . والنتيجة : . كما يوجد مثال عند ملك دوال الاكسس الثقيلة المتقاعد في : http://www.lebans.com http://www.lebans.com/DownloadFiles/A2KVerticalJustify.zip جعفر 1293.1.Report_Draw_BoxLine.accdb.zip
  21. السلام عليكم 🙂 الطريقة التي تأتي على بالي: كل طاولة لها رقم ، وهناك نموذج ادخال البيانات عند الكابتن ، ونموذج قراءة البيانات عند الشيف ، وفيه توقيت Timer ، بحيث كل 30 ثانية يحدث بياناته عن طريق Requery . فإذا عمل الكابتن طلب الطاولة ، وكانت 2 صاج دجاج ، فلما يفتح الشيف صفخة الطاولة (النموذج الذي به رقم الطاولة) ، سيجد انها 2 صاج دجاج ، ولما الكابتن يضيف 2 بركر ، هنا صفحة الطاولة عند الشيف ستتحدث في وقت اقصاه 30 ثانية (حيث توقيت نموذج الشيف لا علاقة لها بتوقيت ادخال بيانات الكابتن) ، وسيرى الشف الطلبين : 2 صاج دجاج و 2 بركر 🙂 جعفر
  22. وعليكم السلام 🙂 هذا معناه : ان يكون عندك في الجدول ، حقل تمت الطباعة من نوع نعم/لا ولنسمية Printed ، والسجلات التي يتم ارسالها للطباعة تكون قيمة Printed =0 ، وبعد الطباعة على طول ، تعمل استعلام تحديث لهذا الحقل في جميع السجلات ، بقيمة Printed =-1 🙂 جعفر
  23. نعم هذه طريقة الاكسس 🙂 جعفر
  24. وعليكم السلام 🙂 جرب هذا التعديل ، ورجاء تغيير المتغير XXX برقم صحيح : If [mo] = 1 Then Me.موعد1.Visible = Not (موعد1.Visible) Else Me.موعد1.Visible = False End If If [br] <= XXX Then Me.z.Visible = Not (z.Visible) Else Me.z.Visible = False End If جعفر
×
×
  • اضف...

Important Information