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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. الفائدة الاعم والتي من اجلها تم عمل المنتديات ، هي كما قالها الاستاذ محمد : اما فائدة الدخول متخفي ، فمثلا لما اكون على سفر وادخل المنتدى ، لغرض البحث عن شيء معين ، ولا اريد ان يتتبع الاعضاء وقت دخولي ذلك الوقت ، فأدخل متخفي جعفر
  2. شكرا جزيلا دكتور محمد 🙂 جعفر
  3. وعليكم السلام 🙂 البحث في اي حقل ؟ وهل البحث للكلمة كاملة او اي جزء منها ؟ الحدث اللي عملته انت ، حدث "عند التغيير" سيسبب لك بطء شديد اذا وضعت قاعدة البيانات على الشبكة ، لذا انصحك بوضع البحث على زر البحث 🙂 جعفر
  4. وبدون لمس البرنامج ، وبعد استيراد البيانات الى الجدول meetingAttendanceList ، نعمل استعلام ليكون مصدر بيانات للتقرير ، في هذا الاستعلام نفكك الحقل TimesStamp الى حقل تاريخ D1 وحقل وقت T1 (يعني حقول تاريخ وليس حقول نص) ، وبعدها يمكنك عمل ما تشاء في جمعهما 🙂 . . جعفر 1279.ImportExcel.accdb.zip
  5. وعليكم السلام 🙂 هذا لأن الاستعلام مصدر بيانات النموذج الفرعي ، لا يوجد فيه معيار التصفية ، فالظاهر انك حذفته بالخطأ 🙂 . جعفر
  6. السلام عليكم 🙂 في الواقع ، هذا السؤال من الاسئلة التي تُثار بين الحينه والاخرى ، واليك السبب في عدم امكانية الحصول على قيمة ذيل الصفحة ، في رأس الصفحة : التقرير عندك فيه 3 اقسام : . خلينا نشوف قيم التاريخ لصفحة: . والآن خلينا نشوف التاريخ ، بالطريقة اللي اقسام التقرير تشوفه ، بإستخدام حدث التنسيق لكل قسم: Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) Debug.Print "Header= " & Me.Edate End Sub Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Debug.Print " Detail= " & Me.Edate End Sub Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer) Debug.Print "Footer= " & Me.Edate Debug.Print End Sub . والنتيجة لصفحتين : Header= 18-Oct-20 Detail= 18-Oct-20 Detail= 19-Oct-20 Detail= 20-Oct-20 Detail= 21-Oct-20 Detail= 22-Oct-20 Detail= 23-Oct-20 Detail= 24-Oct-20 Detail= 25-Oct-20 Detail= 26-Oct-20 Detail= 27-Oct-20 Detail= 28-Oct-20 Detail= 29-Oct-20 Detail= 30-Oct-20 Detail= 31-Oct-20 Detail= 01-Nov-20 Detail= 02-Nov-20 Detail= 03-Nov-20 Detail= 04-Nov-20 Detail= 05-Nov-20 Detail= 06-Nov-20 Detail= 07-Nov-20 Detail= 08-Nov-20 Footer= 07-Nov-20 Header= 08-Nov-20 Detail= 08-Nov-20 Detail= 09-Nov-20 Detail= 10-Nov-20 Detail= 11-Nov-20 Detail= 12-Nov-20 Detail= 13-Nov-20 Detail= 14-Nov-20 Detail= 15-Nov-20 Detail= 14-Jan-21 Detail= 15-Jan-21 Detail= 16-Jan-21 Detail= 17-Jan-21 Detail= 18-Jan-21 Detail= 19-Jan-21 Detail= 20-Jan-21 Detail= 21-Jan-21 Detail= 22-Jan-21 Detail= 23-Jan-21 Detail= 24-Jan-21 Detail= 25-Jan-21 Detail= 26-Jan-21 Detail= 27-Jan-21 Footer= 26-Jan-21 . من هنا نلاحظ ان رأس الصفحة يرى اول سجل ، بينما ذيل الصفحة يرى آخر سجل ، والتقرير يطبع / يُظهر رأس الصفحة قبل ان تكون البيانات وصلت الى ذيل الصفحة (يعني ذيل الصفحة لا يحتوي على اي قيمة حينها ، لما رأس الصفحة يحصل على القيمة) ، لهذا سبب ما نحصل على التاريخين معا في رأس الصفحة !! ------------------------------------------------------------------------------------------------------- الآن وبعد ان عرفنا طريقة عمل التقرير ، خلينا نستفيد منه في عمل المطلوب : خلينا نفتح التقرير بطريقة مخفية ، نأخذ قيمة سجل رأس صفحة التقرير وذيل صفحة التقرير لكل صفحة ، نحفظهم في مصفوفة Array ، ثم نفتح التقرير بالطريقة العادية ونأخذ بيانات رأس وذيل التقرير من المصفوفة ، ونضعهم في التقرير ، في رأس الصفحة 🙂 1. عمل نموذج لحصر البيانات بين قيمتين (مع اننا لسنا بحاجة الى هذه الخطوة ، ولكن لأن جدولك في سجلات بدون قيم تواريخ ، فهذا يعمل خلل في الكود) ، ونعمل استعلام يصفي بيانات الجدول حسب تواريخ النموذج ، ويكون هذا الاستعلام مصدر بيانات التقرير: . 2. النقر على زر فتح التقرير في النموذج ، يحتوي على هذا الكود : والذي يعمل مصفوفة لـ 100 صفحة في التقرير (اذا تقريرك يحتوي على صفحات اكثر ، فقط اجعل هذا الرقم اكبر ، ما يضر اذا تركته = 200 او اكثر) 'accept adding dates Add_Dates = True 'initilize the arrays with a larg number of pages ReDim Fd(100) 'first E_date ReDim Ld(100) 'last E_date 'open the Report in Hidden mode, to put the E_dates in an array DoCmd.OpenReport "rpt_chfit", acViewPreview, , , acHidden 'close the Hidden Report DoCmd.Close acReport, "rpt_chfit" 'stop adding dates Add_Dates = False 'now open the Report in the normal way DoCmd.OpenReport "rpt_chfit", acViewPreview . وهناك وحدة نمطية تحتفظ بقيم المصفوفة ، حتى تكون متوفرة لجميع كائنات البرنامج: Option Compare Database Option Explicit Public Add_Dates As Boolean Public Fd() As Date 'first E_date Public Ld() As Date 'last E_date . والتقرير فيه هذا الكود: Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) If Add_Dates = True Then 'add the array items, based on the Report page number Fd(Me.Page) = Me.F_Edate Else 'show the results Me.myF_Edate = Fd(Me.Page) Me.myL_Edate = Ld(Me.Page) End If End Sub Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer) If Add_Dates = True Then 'add the array items Ld(Me.Page) = Me.L_Edate End If End Sub Private Sub Report_Close() If Add_Dates = False Then 'Empty the array ReDim Fd(0) 'first E_date ReDim Ld(0) 'last E_date End If End Sub . فإذا قيمة Add_Dates = True في النموذج ، فيعمل التقرير المخفي لعمل المصفوفة ، بينما عندما تتغير قيمة Add_Dates ، فيقوم التقرير بإظهار قيم المصفوفة في التقرير الغير مخفي ، وعند اغلاق التقرير ، نقوم بحذف بيانات المصفوفة 🙂 لذلك ، وللحصول على النتائج الصحيحة ، يجب تشغيل التقرير من النموذج ، حتى يقوم الكود بما يجب 🙂 . . جعفر 1277.addDateHideRport.accdb.zip
  7. تفضل طريقة تحويل جملة الاستعلام SQL من الكود الى استعلام ، ومن ثم من الاستعلام الى الكود مرة اخرى : 1. ادخل في نموذج login حتى يكون لدينا اسم المستخدم في المتغير TempVars!mm في ذاكرة الكمبيوتر (وتظل هذه القيمة في ذاكرة الكمبيوتر الى اغلاق برنامج الاكسس) ، ولنختار المستخدم محمد مثلا (ومافي داعي للنقر على زر "دخول") : . 2. نفتح النموذج form2 ، ونذهب الى حدث النقر على الزر "ادفع" حتى نرى الكود : DoCmd.RunSQL "INSERT INTO المبيعات ( [كود الصنف], [اسم الصنف], المورد, [سعر البيع], اللون, المقاس, التاريخ, [نظام الدفع] ) SELECT فرعى.[كود الصنف], فرعى.[اسم الصنف], فرعى.المورد, فرعى.[سعر البيع], فرعى.اللون, فرعى.المقاس, Date() AS D, ""نقدي"" AS s FROM فرعى;" . نريد ان نعمل تغيير في جملة SQL هذه ، ونضيف "اسم المستخدم" فيها ، والموجدو في المتغير TempVars!mm ، أ. نعطي جملة SQL الى متغير ، ولنسميه mySQL ، ثم في اسفل نافذة الكود VBE ، في نافذة Immediate (ولفتح هذه النافذة Ctrl+G) ، نرى جملة الـ SQL كما يراها البرنامج : dim mySQL as string mySQL= "INSERT INTO المبيعات ( [كود الصنف], [اسم الصنف], المورد, [سعر البيع], اللون, المقاس, التاريخ, [نظام الدفع] ) SELECT فرعى.[كود الصنف], فرعى.[اسم الصنف], فرعى.المورد, فرعى.[سعر البيع], فرعى.اللون, فرعى.المقاس, Date() AS D, ""نقدي"" AS s FROM فرعى;" debug.print mySQL DoCmd.RunSQL mySQL . ب. انقر على الزر "ادفع" ، فنرى جملة SQL في النافذة : . ج. ننسخ هذه الجملة (بما ان الجملة فيها كلمات عربية ، فيجب ان تكون لغة لوحة المفاتيح بالعربية ، حتى نرى الكلمات العربية بالطريقة الصحيحة ، وإلا فهذه الكلمات ستتحول الى حروف اغريقية!!) اذا تم نسخ الجملة التي فيها كلمات عربية ، ولوحة المفاتيح بالانجليزي: . فعند لصقها في الاستعلام (او حتى في المنتدى) ، ستكون هكذا: . لذا يتوجب تغيير لوحة المفاتيح الى العربية . د. نفتح استعلام جديد ، ونطلب منه فتح نافذة الاستعلام في وضع SQL . . هـ. ثم نلصق جملة SQL التي نسخناها من نافذة VBE Immediate ، الى هذا الاستعلام: . ثم نعرض الاستعلام بوضع التصميم ، حتى يسهل علينا فهم جملة SQL : . فيصبح الاستعلام هكذا: . و. وبتغيير كلمة "نقدي" الى 'نقدي' (لأننا في الاستعلام نستخدم الخط الواحد ' وليس خطين " للنص) ، واضفنا حقل "اسم المستخدم" . ز. والآن نحول الاستعلام الى جملة SQL ، وننسخه الى الكود في VBE (ولو اني دائما افضل استعمال الاستعلام بدل الكود ، ولكن الامر راجع اليك) : . . ح. ونضعه في الكود : 'mySQL = "INSERT INTO المبيعات ( [كود الصنف], [اسم الصنف], المورد, [سعر البيع], اللون, المقاس, التاريخ, [نظام الدفع] ) SELECT فرعى.[كود الصنف], فرعى.[اسم الصنف], فرعى.المورد, فرعى.[سعر البيع], فرعى.اللون, فرعى.المقاس, Date() AS D, ""نقدي"" AS s FROM فرعى;" mySQL = "INSERT INTO المبيعات ( [كود الصنف], [اسم الصنف], المورد, [سعر البيع], اللون, المقاس, التاريخ, [نظام الدفع], [اسم المستخدم] )" mySQL = mySQL & " SELECT فرعى.[كود الصنف], فرعى.[اسم الصنف], فرعى.المورد, فرعى.[سعر البيع], فرعى.اللون, فرعى.المقاس, Date() AS D, 'نقدي' AS s, '" & [TempVars]![mm] & "' AS T" mySQL = mySQL & " FROM فرعى;" Debug.Print mySQL DoCmd.RunSQL mySQL . مع ملاحظة تغيير المتغير الى نص ، حتى يأخذ قيمته مباشرة من TempVars!mm : . . والآن نستخدم النموذج form2 ونجرب الزر: . والنتيجة : . جعفر 1275.المحل نسخة تجريبية.accdb.zip
  8. السلام عليكم 🙂 هذا المنتدى للتبادل العلمي ، حتى يستفيد منه الجميع ، وليس صاحب الموضوع / السؤال فقط 🙂 فيا ريت ان نضع الاجابة بالتفصيل في الرد (سواء الخطوات او الكود او صور من شاشة البرنامج) ، ولا نتوقف عند ارفاق المرفق الذي به الرد / الجواب ، والسبب هو ، حتى يستطيع الجميع رؤية الرد ومعرفته مباشرة ، دون اللجوء الى انزال المرفق وفهمه 🙂 نعم ، هذا عبء إضافي ، ولكن نتائجه ستكون مثمرة ان شاء الله 🙂 وتذكروا ، هذا مجرد طلب ورجاء ، وليس اجباري 🙂 شكرا جزيلا 🙂 جعفر
  9. وعليكم السلام 🙂 بما انك ادخلت قيمة واحدة في tempVars ، فللحصول عليها ، يمكنك ان تستعمل msgbox TempVars![mm] او msgbox TempVars.Item(0) جعفر
  10. وعليكم السلام 🙂 عادة نستخدم الاستعلام لعمل مجاميع ، وبالتالي تكون المعلومة جاهزة وبدون تكرار في التقرير ، او نستخدم مجاميع التقرير (في اسفل التقرير) . جعفر
  11. لم استطع معرفة مكان هذا التغيير ، والاخ @husamwahab يسأل عنه ، فياريت تدلنا عليه خطوة بخطوة جعفر
  12. السلام عليكم 🙂 ومثل ما قال الاخ Kanory ، وببعض التعديل على الكود ليتناسب مع اسماء الحقول 🙂 جعفر 1274.t_fdate.mdb.zip
  13. السلام عليكم 🙂 وهذا شغل اخوي ابا جودي ، بس يأخذ اكثر من ملف دفعة واحدة (يعني تقدر تختار مجموعة ملفات ، ثم تضيف مجموعة اخرى الى القائمة ، دفعة واحدة) 🙂 تقدر بالفأرة تختار اكثر من ملف ، او عند طريق الضغط على الزر shift او ctrl اثناء النقر على اسماء الملفات 🙂 جعفر ImportExcel.accdb
  14. اختي الفاضلة ، انتي التي حكمتي على عدد سجلات البحث ، كما اوضحت لك في مشاركتي السابقة ، بسبب وكذلك كما اشرت لك ، اذا اردتي البحث في جميع البيانات : . . تفضلي ، هكذا يكون الاستعلام ، مثلا : . وعليه اصبح النموذج (جعلته كنموذج فرعي) (وكذلك عملت مثال كنموذج رئيسي) : . ويظل الكود كما هو ، مع تغيير اسماء الكائنات ليتناسب مع الاسماء الجديدة: Private Sub cmd_Find_in_SubForm_Click() 'نقل التركيز على النموذج الفرعي Me.sfrm_Both.SetFocus 'اختيار الحقل الذي نريد ان نجري عليه البحث DoCmd.GoToControl "no" 'التحكم في اعدادات نافذة البحث DoCmd.FindRecord 0, acEntire, False, acSearchAll, False, acCurrent, True 'نافذة البحث حسب الاعدادات اعلاه DoCmd.RunCommand acCmdFind End Sub . جعفر 1273.sarah.accdb.zip
  15. البحث يمكن ان يكون فقط في السجلات التي تم تصفيتها وابرازها في النموذج/النموذج الفرعي ، يعني البحث يكون على البيانات الظاهرة امامنا ، وسبب ظهور هذا الكم من البيانات هو العلاقة بين النموذج الرئيسي والفرعي عن طريق الحقل id . بينما لو تم حذف هذه العلاقة (طبعا هذه افتراضية) ، فسنرى جميع السجلات ، وعليه يكون البحث لجميع هذه السجلات 🙂 . بمعنى آخر ، اي عدد من البيانات يكون في النوذج الفرعي ، يمكن البحث فيه 🙂 جعفر
  16. وعليكم السلام 🙂 قمت بتغيير اسم زر الامر (2) الى cmd_Find_in_SubForm ، فيصبح الكود على حدث النقر على هذا الزر: Private Sub cmd_Find_in_SubForm_Click() 'نقل التركيز على النموذج الفرعي Me.sub_tb_f.SetFocus 'اختيار الحقل الذي نريد ان نجري عليه البحث DoCmd.GoToControl "no" 'نافذة البحث حسب الاعدادات اعلاه DoCmd.RunCommand acCmdFind End Sub . ولكن للتحكم بإعدادات نافذة البحث : . فنستطيع عن طريق الكود التالي: . والتفاصيل : . وبالإعدادات التالية: نحصل على التافذة التالية، وسبب ظهور الرقم 76 هو انه اول رقم يحصل عليه في البحث: . وعند جمع كود التحكم في نافذة البحث ، مع كود البحث ، يكون الكود هكذا : Private Sub cmd_Find_in_SubForm_Click() 'نقل التركيز على النموذج الفرعي Me.sub_tb_f.SetFocus 'اختيار الحقل الذي نريد ان نجري عليه البحث DoCmd.GoToControl "no" 'التحكم في اعدادات نافذة البحث DoCmd.FindRecord 0, acEntire, False, acSearchAll, False, acAll, True 'نافذة البحث حسب الاعدادات اعلاه DoCmd.RunCommand acCmdFind End Sub جعفر
  17. اخي أبو عبدالله ، هذه الرسالة معناها ان البرنامج معطوب ، ولا اعتقد انه يمكن عمل اي شيء له !! اي نسخة من الاكسس تستخدم؟ وما قصدك انه انه يقوم بالخطوات وبدون نتيجة ، واي نتيجة تتوقع؟ جعفر
  18. السلام عليكم ورحمة الله وبركاته 🙂 حياك الله اخوي صالح ضمن فريق العمل ، خطوة مباركة ان شاء الله 🙂 جعفر
  19. السلام عليكم 🙂 هذه ملاحظة الاخ خلف !! استاذ محمد ، تفضل واعمل التغيير المناسب 🙂 انا على سفر بكرة ان شاء الله ، فما عندي وقت اعمل تعديلات !! بس ارفقت في مشاركتي الاولى ، النسخة 2.02 من الملف pdftk واللي يقبل Unicode على حسب ماهو مكتوب في الموقع 🙂 جعفر
  20. يعني برنامجك الآن يرسل باللغة العربية ، صح؟ هذا معناه ان مكتبات حفظ البيانات في الحافظة Clipboard التالية (قد لا يكون كلها) ، لا يعتمد اللغة العربية (او لا تعتمد Unicode ) : Declare Function clt_OpenClipboard Lib "user32" Alias "OpenClipboard" (ByVal hwnd As Long) As Long Declare Function clt_GetClipboardData Lib "user32" Alias "GetClipboardData" (ByVal wFormat As Long) As Long Declare Function clt_GlobalAlloc Lib "kernel32" Alias "GlobalAlloc" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long Declare Function clt_GlobalLock Lib "kernel32" Alias "GlobalLock" (ByVal hMem As Long) As Long Declare Function clt_lstrCpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long Declare Function clt_GlobalUnlock Lib "kernel32" Alias "GlobalUnlock" (ByVal hMem As Long) As Long Declare Function clt_CloseClipboard Lib "user32" Alias "CloseClipboard" () As Long Declare Function clt_SetClipboardData Lib "user32" Alias "SetClipboardData" (ByVal wFormat As Long, ByVal hMem As Long) As Long Declare Function clt_EmptyClipBoard Lib "user32" Alias "EmptyClipboard" () As Long جعفر
  21. قواعد المشاركة فى الموقع اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة و بصفة خاصة نؤكدعلى ما يلي 1- يمنع منعا باتا نشر أية مواد تخالف حقوق الملكية الفكرية و يرجى الابلاغ عن المشاركات المخالفة من خلال زر تقرير اسفل المشاركة 2-يجب استخدام خاصيةالبحث قبل طرح السؤال توفيرا للوقت و الجهد. 3-ضرورة كتابة عنوان واضح للموضوع يدل على محتواه ويعطي وصفاً مختصرا للسؤال. 4-ممنوع منعا باتاً كتابة عناوين سينمائية مثل عاجل ، نداء الي فلان ، الي الخبراء ، طلب مساعدة ، أريد حلا..... 5-يمكن استعجال الرد باستخدام تعبير -للرفع- و غير مسموح بالالحاح او اللوم فجميع الاعضاء يشاركون تطوعا طبقا لسعة وقتهم. ومخالفة ذلك تعرض الموضوع للحذف رجاء فتح موضوع جديد ، مراعيا فيها قوانين المنتدى. يُغلق جعفر
  22. موضوع لا علاقة له بمنتدى الاكسس ، وقد تم حذف موضوعك السابق ، ولكنك اعدت عمل الموضوع برابط آخر. جعفر
  23. طيب جربه الآن ، بعد ان اعدت لغة الكيبورد الى اللغة الانجليزية : Private Sub أمر15_Click() On Error Resume Next DoCmd.GoToRecord , , acFirst For i = 1 To Me.kan + 1 Langauge ELanguage.Ar Dim fOK As Boolean Dim strTemp As String Forms!whatsapp.SetFocus strTemp = Me.txtMessage 'fOK = SetClipboardData_clt(strTemp) 'copy name to clipboard Me.txtMessage.SetFocus Me.txtMessage.SelStart = 0 Me.txtMessage.SelLength = Len(Me.txtMessage) DoCmd.RunCommand acCmdCopy '========================================================================================================= Langauge ELanguage.en Application.FollowHyperlink "https://wa.me/" & txtNumbers auseTime = 40 start = Timer Do While Timer < start + auseTime DoEvents Loop Call SendKeys("~", True) Call SendKeys("{Enter}", True) Call SendKeys("^v", True) Call SendKeys("{Enter}", True) '=========================================================================================================== DoCmd.GoToRecord , , acNext Next MsgBox "انتهت الارقام" End Sub . هي مجرد تجربة لحل مشكلة اللغة العربية ، لأنه صادفتني نفس المشكلة في احد برامجي ، واتضح ان المشكلة كانت في مكتبات الوندوز القديمة اللي ما تفهم لغات Unicode 🙂 جعفر
×
×
  • اضف...

Important Information