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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    406

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

  1. هل استعلام ثم تستعمل Recordset يستعمل الاستعلام ؟ اذا كان هناك كود / طريقة معينة دائما تحصل بها على الخطأ ، فجرب هذا الكود وشوف اذا تحصل به على خطأ : Me.EnzarKbl = Me.EnzarKbl جعفر
  2. السلام عليكم 🙂 رسالة Write Conflict: الرسالة هذه معناها ، انه في النموذج في أكثر من جهة تدخل البيانات منذ فتحه ، والبرنامج محتار ، هل يأخذ بيانات الادخال من النموذج مباشرة ، او من البيانات اللى جاته من الاستعلام (او قد تأتيه من الجدول ، اذا عملت تحديث للبيانات للجدول ، وتنعكس هذه البيانات على النموذج) ، وبالاخص عند تغيير البيانات عن طريق Recordset . والرابط التالي فيه كود ، ولكن تابع الكود وسترى اني كنت محتاج اجدد/احدّث معلومات النموذج ، ولكن صادفتني هذه الرساله ، فاضطررت ان استعمل كود وطريقة ثانية لحل الموضوع: http://www.officena.net/ib/topic/65548-المساعدة-في-جمع-الدقائق-حسب-الشهر-للموظف/#comment-426706 جعفر
  3. السلام عليكم 🙂 تعديل اخير سيساعدك في معرفة : 1. اي يوم من ايام الاسبوع هذا التاريخ ، 2. عند الاختيار من الشفت في النموذج الفرعي اعلاه ، تلقائيا يتغير لون الحقل في التقرير الاسفل ، الى اللون الاحمر الفاتح ، حتى تميز وتركز على هذا الحقل 🙂 . جعفر 1281.5.FRm_Refresh.accdb.zip
  4. السلام عليكم 🙂 كنت ناوي افرد موضوع خاص لهذا الموضوع ، ولكنك ما شاء الله اخوي ابو ابراهيم ابدعت فيه ، فخليني اساهم هنا 🙂 بالاضافة طريقة اخوي ابو ابراهيم ، اليك طريقه انت متعود عليها : 1. هذا مسار قاعدة بيانات الجداول (هذه خطوة مؤقته) ( D:\Documents\Downloads\LINKED DATA\DB1.ACCDB ) : . 2. نعمل استعلام عادي في برنامج الواجهة ، وبدون اختيار اي جداول ، ثم نضع في Source Databasse ، اسم ومسار قاعدة بيانات الجداول (انظر اعلاه) (بدلا عن كلمة Current) : . 3. انقر على زر Show Tables (رقم 2) ، فسترى جداول قاعدة بيانات الجداول : . 4. ونعمل الاستعلام بطريقة عادية ، ونحفظه (كذلك مؤقتا على نعمل النموذج فقط) : . 5. اعمل النموذج المطلوب ، بحيث يكون الاستعلام اعلاه مصدر بياناته: . 6. ثم نحول الاستعلام الى وضع SQL . 7. ونحصل على الجملة التالية : . 8. ثم نضع هذه الجملة في السطر الذي وضعه اخوي ابو ابراهيم ، في حدث التحميل للنموذج (الجملة كما هي من الاستعلام وبتعديل بسيط) : . 9. نحذف الاستعلام مصدر البيانات ، ونحذف اسم الاستعلام من Record Source (مصدر بيانات) النموذج . 10. وكتعديل اخير حتى يشير الى وجدود قاعدة بيانات الجداول في نفس مجلد برنامج الواجهة (حتى يعمل البرنامج على كل جهاز وبأي مجلد) : . جعفر LINKED DATA_2.zip
  5. النظام عندي: الوندوز والاوفيس انجليزي ، و جربت كودك ، بالفاصلة والفاصلة المنقوطة ، والكيبورد باللغة الانجليزية ، والنتيجة كانت صحيحة في كل الحالتين ، ونحصل على قائمة بعدة اسطر بأسماء الكائنات 🙂 cmd_close,cmd_Requery,cmd_Add_New,cmd_Add_New_Between_Dates,cmd_Copy_Between_days cmd_close,cmd_Requery;cmd_Add_New;cmd_Add_New_Between_Dates:cmd_Copy_Between_days اما استعمال الفاصل والفاصلة المنقوطة ، والكيبورد باللغة العربية ، فالنتيجة كانت غير صحيحة في كل الحالتين ، ونحصل على قائمة الكائنات في سطر واحد مثل ماهو ادناه : cmd_close،cmd_Requery،cmd_Add_New،cmd_Add_New_Between_Dates،cmd_Copy_Between_days cmd_close؛cmd_Requery؛cmd_Add_New؛cmd_Add_New_Between_Dates؛cmd_Copy_Between_days . ولكن لا عرف النتيجة عند تجربة هذا الكود في وندوز عربي واوفيس عربي !! جعفر
  6. اخي حسام ، انا كنت استخدم هذه الطريقة ، الى ان صادفت مشكلة تشغيل البرنامج بين اكسس تنصيب انجليزي ، وآخر تنصيب عربي ، وظهرت القائمة كلها كسطر واحد !! لذلك انصحك ان تستخدم طريقة الاستاذ صالح ، والتي تعمل على جميع الانظمة: Me.combo1.AddItem (fc.Name) جعفر
  7. السلام عليكم 🙂 ولكي يكتمل الدرس ، وبدل ان نحفظ ونستخدم ارقام لا نعرفها ، اليك قائمة اسماء جميع الكائنات (وبالمسميات اللي نعرفها ، مضافا لها حرفي ac)، من مساعد الاكسس : . وعليه يصبح الكود : Dim frm As Form Dim fc As Control Set frm = Me For Each fc In frm.Controls If fc.ControlType = acCommandButton Then Me.combo1.AddItem (fc.Name) End If Next fc Set frm = Nothing جعفر
  8. حياك الله 🙂 وتماشيا مع قوانين المنتدى: رجاء فتح موضوع جديد ، وتضع فيه المطلوب ، وبوضوح ، وبأمثلة ، جتى يستطيع الاعضاء ان يعطوك الاجابة المطلوبة ان شاء الله 🙂 جعفر
  9. السلام عليكم 🙂 تفضل 🙂 . واستعمل الاستعلام qry_Group_Shifts_by_Dates كمصدر بيانات ، وتقدر تعمل به التقرير او النموذج الذي تشاء. جعفر 1281.4.FRm_Refresh.accdb.zip
  10. وكذلك استطعت ان اجعله بسرعة عادية 🙂 استعمل الاستعلام qry_Group_Shifts_by_Dates كمصدر بيانات ، وتقدر تعمل التقرير او النموذج الذي تشاء. اريد اعرف طريقة توزيع الموظفين شهريا : هل توزع يوم بعد يوم ، وبدون ان ترجع الى احد الايام السابقة ، او تحتاج ان تنقر على اليوم/الشفت في النموذج الفرعي ، ويُظهر لك هذا اليوم في النموذج الرئيسي ، واللي منه تقدر تبدل البيانات ؟ او تنقر على الاسم نقر مزدوج ، وتريده يجعل النموذج الرئيسي واقف على اختيار هذا الاسم ، حتى يتم تعديله مباشرة وبدون البحث عنه وهل هذا التعديل هو من اساسيات البرنامج ، حتى اقدر اتعامل معاه بطريقة تختلف كليا ، فأعمل له جدول مؤقت ، ويكون التحميل جدا سريع (ليس وقت فتح النموذج ، وانما بعد فتحه) !! جعفر
  11. هلا ومرحبا بأخوي حلبي ، وشكرا على جميل كلماتك 🙂 اخي امين ، خليني اشرح لك ليش تحصل على النتائج اللي في مرفقك ، واخبرك كيف الطريقة الصحيحة : في الحقل 1 ، انت طلبت يجمع لك جميع حقول الاستعلام Q_1 ، بشرط حقل اختباري ، وما في اي شرط ، فحسب لك كل السجلات = 8 ، 2.3.4. نفس رقم 1 ، ولكن الان وضعت شرط ، يا اختباري = العميل ، ويا العميل = اختباري ، ومن نتائج الصورة المرفقة نرى ان اختباري ≠ العميل ، لذا فالنتيجة = صفر. . الشيء الآخر ، في معيار الدالة DCount يجب عليك وضع قيم ثابته وغير متغيرة حتى يكون نتائجك صحيحة ، ولكن لما يكون معيارك في السجل في الاستعلام ، فيكون متغير بتغير قيمته في السجل ، وهذا يعطي نتائج خطأ ايضا ، اذا رأيت استعلاماتي اعلاه ، بتشوف اني عملت كل مجموعة في استعلام خاص ، وهذه لا تتغير لما استعملها في استعلام آخر . وكذلك العلاقة بين المجموعات اعلاه والاستعلام العام ، فهذي العلاقة عبارة عن ربط معيار الحقول : . يعتبر الاستعلام العمود الفقري لجميع انواع قواعد البيانات ، وكلما تعلمت منه اكثر ، كلما اصبحت قاعدة بياناتك افضل واسرع ، وقلت حاجتك الى الكود 🙂 جعفر
  12. السلام عليكم 🙂 لوسمحت تعطيني الخطوات حتى اوصل لمكان الخطأ ، ثم تخبرني شو الخطأ !! انزلت المرفق وفتحت الاستعلام الذي ذكرته انت ، ولكن طلب مني بيانات ما اعرفها !! جعفر
  13. تفضل 🙂 زر لليوم اللي انت فيه ، و زر للأيام اللي تدخلها بين "التاريخ من" الى "التاريخ الى" . . على فكرة ، عدد الموظفين لكل سطر في النموذج الفرعي ، مثل تاريخ 19 اكتوبر ، الشفت الاول ، عندنا : السطر الاول: احالحمد, السعد, السطر الثاني: كاظم, مح الحمد نقدر نتحكم في العدد لكل سطر (طبعا اذا كان السطر طويل ، فطبعا بقية السطر تلقائيا ينتقل للسطر التالي) ، مما يجعل سجلات النموذج الفرعي تطول وتقصر على حسب الاسطر اللي بها 🙂 التحكم من الاستعلام qry_Group_Shifts_by_Dates ، من الرقم اللي يؤشر عليه السهم ، والبرمجة هكذا : الرقم 1 : يعطيك اسم واحد لكل سطر ، الرقم 2 : يعطيك اسمين لكل سطر ، الرقم 3 او اكثر : يعطيك الاسماء بالعدد المكتوب لكل سطر ، الرقم 0 : يعطيك كل الاسماء في سطر واحد (وحتى تقدر ان تحذف الرقم والفاصلة اللي قبله) ، هكذا : S2: Group_Shifts(2,[tbl_Shifts].[nDate]) . والحمدلله قدرت اخلي تحميل النموذج الفرعي اسرع بنسبة 30% (عد لا تسألني كيف حسبتها 🙂 ) جعفر 1281.2.FRm_Refresh.accdb.zip
  14. اذن في هذه الحالة نكون خلصنا من العمل بالمرفق السابق ، صح؟ جعفر
  15. هو بالفعل معقد 🙂 النسخة الماضية كانت فكرة ، والآن التطبيق : 1281.1.FRm_Refresh.accdb.zip . وتم تطبيق رقم 2 🙂 الياقي الآن تاريخ ام القرى 🙂 جعفر
  16. خليني اشوف اللي عملته ، علشان اقدر اعلق عليه 🙂 ومن الخطأ وضع دوال DCount و اخواتها في استعلام ، لأنها تجعل الاستعلام جدا بطيء ، إلا طبعا في حالات جدا خاصة 🙂 جعفر
  17. السلام عليكم 🙂 اولا خليني ادافع عن نفسي واخبرك سبب التأخير 🙂 الجدول الاول مستحيل تكون نتائجة مثل ما هو موضح في الجدول الثاني ، لأن الفرع ليس نفسه في كل السجلات ، بينما الجمع في الجدول الثاني كان على اعتبار ان جميع الفروع هي نفسها (شوف اسم الفروع اللي عليها السهم ، فهي مختلفة) 🙂 وهذا اخذ مني بقية الشعر اللي على راسي ، من كثر ما حكيت رأسي بالمعادلات والنتائج الخطأ 😁 . والان الى الحل: 1. عملت استعلام مجاميع لكل مجموعة ،المجموعة الاولى للتاريخ ، والثانية للشهر ، بينما الاستعلام الثالث هو لحقول الجدول : . والنتيجة . وعملنا استعلام اخير لجمع هذه الاستعلامات الثلاث: . والنتيجة . جعفر 1285.DCOUNT.mdb.zip
  18. السلام عليكم 🙂 . ايش رايك في هذا النموذج ، بس النموذج الفرعي يأخذ وقت عند فتج النموذج !! . جعفر 1281.1.FRm_Refresh.accdb.zip
  19. السلام عليكم 🙂 قمت بدمج دالة اخوي ابوخليل الى برنامجك 🙂 Private Sub Command44_Click() Dim reportName As String Dim fileName As String Dim criteria As String reportName = "r_buy" fileName = GetDesktop & "\" & "r_buy" & ".pdf" criteria = "masterid='" & masterid & "'" DoCmd.OpenReport reportName, acViewPreview, , criteria, acHidden DoCmd.OutputTo acOutputReport, reportName, acFormatPDF, fileName DoCmd.Close acReport, reportName, acSaveNo End Sub Function GetDesktop() As String Dim oWSHShell As Object Set oWSHShell = CreateObject("WScript.Shell") GetDesktop = oWSHShell.SpecialFolders("Desktop") Set oWSHShell = Nothing End Function . جعفر
  20. وعليكم السلام 🙂 ما فهمت 😒 ممكن مثال ببيانات من برنامجك 🙂 جعفر
  21. وعليكم السلام 🙂 الافضل لك ان تترك الاصفار في الجدول ، لأن قيمة الحقل في الجدول اذا كانت Null فيتطلب عمل بعض الخطوات للتعامل مع هذه القيمة ، واما اذا اردت في التقرير ان تُدرج "فراغ"/Null بدل الصفر ، فيمكنك استعمال هذا الكود ، سواء في الاستعلام مصدر بيانات التقرير ، او في التقرير نفسه : A = iif([M02]= 0 , "" , [M02]) جعفر
  22. التجربة اللي عملتها هي: ضبطت برنامج واحد واستخدمت 0.25 ثانيه للإنتظار ، ثم عملت منه 4 نسخ j1 و j2 و j3 و j4 ، ونضعهم مع البرنامج الاصل 1282.1.InvoiceSale_6_FE.accdb في نفس المجلد: . عملت دالتين في هذه الوحدة النمطية في البرنامج الاصل 1282.1.InvoiceSale_6_FE.accdb ، وجعلت اسماء المتغيرات في رأس الوحدة النمطية ، حتى تكون متوفرة للبرنامج كاملا ، حتى اغلاقه : Option Compare Database Option Explicit Dim oAccess1 As Access.Application Dim oAccess2 As Access.Application Dim oAccess3 As Access.Application Dim oAccess4 As Access.Application Dim db1 As String: Dim db2 As String Dim db3 As String: Dim db4 As String ' Public Function Open_Other_DBs() db1 = Application.CurrentProject.Path & "\j1.accdb" db2 = Application.CurrentProject.Path & "\j1.accdb" db3 = Application.CurrentProject.Path & "\j3.accdb" db4 = Application.CurrentProject.Path & "\j4.accdb" ' Dim oAccess As Object Set oAccess1 = CreateObject("Access.Application") 'Create a new Access instance With oAccess1 .OpenCurrentDatabase db1 'Open the specified db .Visible = True 'Ensure it is visible to the end-user .UserControl = True .DoCmd.OpenForm "InvoiceHT_F" 'Open a form? End With Set oAccess2 = CreateObject("Access.Application") 'Create a new Access instance With oAccess2 .OpenCurrentDatabase db1 'Open the specified db .Visible = True 'Ensure it is visible to the end-user .UserControl = True .DoCmd.OpenForm "InvoiceHT_F" 'Open a form? End With Set oAccess3 = CreateObject("Access.Application") 'Create a new Access instance With oAccess3 .OpenCurrentDatabase db1 'Open the specified db .Visible = True 'Ensure it is visible to the end-user .UserControl = True .DoCmd.OpenForm "InvoiceHT_F" 'Open a form? End With Set oAccess4 = CreateObject("Access.Application") 'Create a new Access instance With oAccess4 .OpenCurrentDatabase db1 'Open the specified db .Visible = True 'Ensure it is visible to the end-user .UserControl = True .DoCmd.OpenForm "InvoiceHT_F" 'Open a form? End With End Function Public Function Click_Other_DBs() oAccess1.Forms![InvoiceHT_F].New_Click oAccess2.Forms![InvoiceHT_F].New_Click oAccess3.Forms![InvoiceHT_F].New_Click oAccess4.Forms![InvoiceHT_F].New_Click End Function . وناديتهم كالتالي: . الدالة Open_Other_DBs مرة واحدة تفتح البرامج الاربعة ، هكذا : . . وبما ان المتغيرات موجودة في رأس الوحدة النمطية ، فيمكننا التحكم بالبرامج الاربعة مفتوحة ، يعني عندنا 4 مستخدمين ، الآن نستخدم الدالة Click_Other_DBs ، والتي تنقر على زر "جديد" للبرامج الاربعه في نفس الجزء من الثانية ، يعني المستخدمين الاربعة يدخلون سجل جديد في نفس الجزء من الثانية ، يعني مافي مزاح في الموضوع 😁 ولما اشوف الايقونه ترمش ، اعطي الامر مرة اخرى للدالة Click_Other_DBs ، وهكذا ، والحمدلله النتائج صحيحة 🙂 واكون فاتح الجداول ، واشوف ان الارقام الحمدلله مافيها تكرار ، ولا تعطي البرامج الاربعة اي خطأ عن وجود تكرار 🙂 جعفر 1281.1.zip
×
×
  • اضف...

Important Information