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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. السلام عليكم 🙂 المسألة سهله ، في جدول/نموذج اختيار الالوان ، يجب اختيار اسم الكتاب عند اختيار الالوان ، وبالتالي نكون حصلنا على الحسنيين وحلينا موضوع جميع الكتب 🙂 وما شاءالله طريقتك اخي حمدي في استدعاء الالوان يحتاج لها التغيير البسيط للبحث عن حقل الكتاب (الجديد) 🙂 جعفر
  2. نعم ما يظهر التكرار ، ولكن وحسب الصور من الفيديو ، واضح ان الكود يُنشئ سجلات جديدة ويتم حذفها !! اعمل مثل ما اخبرتك بالنسبة للجدول: جعفر
  3. النواة الواحدة لا تعرف شيء عن النواة الاخرى ، ولكن لطالما اشتغل الكود بدون اخطاء ، فهذا معناه اترك السطر باللون الاحمر لحاله 🙂 انا لاحظت نموذج اختيار الالوان ، وطريقة حفظ رقم اللون في الجدول (الاهم انك لم تحفظه عن طريق RGB ، وإلا لن تستطيع الاستفادة منه مباشرة في الكود ، دون تفكيك الالوان) ، ومناداته من هناك ، وطريقة الاكواد وعمل الوحدة النمطية كان ذكي 🙂 في الواقع عمل نظيف 🙂 وكذلك لاحظت وجود بعض الوحدات التي تحتاج تنظيف وازالة 😁 جعفر
  4. الحمدلله 🙂 عندي ملاحظة على الفيديو الذي الرسلته: هذه الصور توضح الى انك تعمل سجلات جديدة ، ولكن بطريقة ما يتم حذفها (قد يكون بسبب فهرسة وعدم تكرار لحقل الباركود في الجدول) ، مثل : . و . ثم . ولترى اذا ما ذكرته صحيح ، في الجدول الذي فيه بيانات هذا النموذج الفرعي ، شوف حقل "الترقيم التلقائي" (واذا ما عندك ، اعمل واحد) ، ثم شوف التسلسل ، فهل ترى ارقام غير موجودة في التسلسل ، اذا نعم ، فالسبب كما اخبرتك اعلاه. ولا ارى سبب وجود الامر On Error Resume Next في الحدثين ، قبل التحديث وبعد التحديث ، فإذا اردت معرفة ان العملية مافيها مشاكل ، فمؤقتا اوقف عمل السطرين وشوف اذا فيه خطأ ، وشو سطر ورسالة الخطأ. جعفر
  5. طريقة ColumnHistory فعالة وجديرة بالاهتمام لإختزالها الكثير من الخطوات (وحتى مافي داعي نراقب هذا الحقل من جدول آخر 🙂 ) ، اخي الاستاذ ابو إبراهيم ، شكرا على الشرح والتوضيح ، فإمكانياتك على الشرح بأمثلة جدا مميزة 🙂 جعفر
  6. لم اغير في الشفرة ، بل اضفت طريقتي للحصول على بيانات نظيفة كما في المربع الاحمر (ونتائجه) ، وتأكدت ان المكتبات كلها موجودة ، وعملت 3 تعديلات على الحقل ، الكود كان يقف على السطر الذي عليه السهم ، ثم الى سطر End Function دون الدخول في حلقة For الاولى . طبعا كلامنا ليس على الموضوع الذي تفضلت به ، ولكن كلامنا عن نتائج RegExp . جعفر
  7. جميل ، شكرا اخوي ابوابراهيم ، لم اكن اعرف هذه الخاصية🙂 والكود الذي ارفقته ، لم تظهر نتائج RegExp !! جعفر
  8. تفضل 🙂 ولكن يجب ان تختار الجدول الصحيح في الاستعلام ، ثم يجب ان تغير اسم الحقل من Date_in الى اسم الحقل الحقيقي ، يجب تبديله في المعادلة 🙂 اخي حسين ، يجب اضافة الوقت كذلك في معادلتك ، ليس اليوم فقط 🙂 جعفر 1459.unix_tTime_Stamp.accdb.zip
  9. اذا كنت تريد "جعل النموذج المستمر دائما وأبدا يقف أو يعمل SetFocus على سجل جديد" في النموذج الرئيسي ، اذن استعمل الكود في النموذج الرئيسي ، وإلا فيمكنك استخدامه في النموذج الفرعي . او استخدام كود اخونا ازهر في النموذج الرئيسي ، اذا اردت السجل الجديد والمؤشر يقف في النوذج الفرعي 🙂 واذا دوخك كلامي ، فاعمل تجربة في النوذج الرئيسي ، واذا ما نفع ، فاعمله في الفرعي 🙂 جعفر
  10. استاذي الفاضل ، لنا الشرف في التعامل معك 🙂 جعفر
  11. السلام عليكم 🙂 هذه الطريقة من نوادر و درر الاكسس التي يعرفها القلة ، وخصوصا انها مخبأة في الجداول ، وحسب فهمنا القديم للجداول انها لا تُبرمج !! في الواقع هناك الكثير من الاستعمالات التي ممكن ان نستفيدها من هذه البرمجة ، وخصوصا بإستخدامها لمناداة دوال ، والتي يمكنها بقية الاوامر دون التقيد بأوامر DataMacro القليلة 🙂 اخوي ابوخليل ، كان لازم تربط بين اسم الموضوع "سِحر ..." ، وبجنسية أخونا موسى العماني 😄 ولكن هذه النقطة ما فاتت اخوي ابوجودي: تم الاجابة على هذا السؤال في النقطة 5 من مشاركتي اعلاه ، وهذه طريقة عملهم (طبعا من برنامج الواجهة) : Call FormAudit("Salaries", 0, 0, fOSUsername(), fOSMachineName(), "Browse", "", "") --------------- وهذه الدالة اعلاه Public Function FormAudit(FormName, PageName, RecordID, ChangeBy, ChangedOn, Change_Delete_Insert, Full_Name, Employee_ID) 'ChangeID ChangeDate TableName Fieldname RecordID OldValue NewValue ChangeBy ChangedOn Change_Delete_Insert Full_Name Employee_ID Dim db As DAO.Database Dim mySQL As String Dim Path As String Call BE_or_FE Path = Replace(BE_Path, "Personnel_Images", "") & "ABC_BE.accdb" Set db = OpenDatabase(Path) mySQL = "INSERT INTO tbl_x_AuditTrail ( TableName, Fieldname, RecordID, ChangeBy, ChangedOn, Change_Delete_Insert, Full_Name, Employee_ID ) IN '" & Path & "'" mySQL = mySQL & " SELECT '" & FormName & "','" & PageName & "','" & RecordID & "','" & ChangeBy & "','" & ChangedOn & "','" & Change_Delete_Insert & "','" & Full_Name & "'," & Nz(Employee_ID, 0) 'Debug.Print mySQL db.Execute mySQL ', dbFailOnError Set db = Nothing End Function --------------- وهاتان الدالتان لإسم المستخدم واسم الكمبيوتر الذي كان يستخدمه Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Private Declare PtrSafe Function apiGetComputerName Lib "kernel32" Alias _ "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long Function fOSUsername() As String ' Returns the network login name 'if the user logged in with his FE password, use it If Len(user_n & "") <> 0 Then fOSUsername = user_n Exit Function End If Dim lngLen As Long, lngX As Long Dim strUserName As String strUserName = String$(254, 0) lngLen = 255 lngX = apiGetUserName(strUserName, lngLen) If (lngX > 0) Then fOSUsername = Left$(strUserName, lngLen - 1) Else fOSUsername = vbNullString End If End Function ' This code was originally written by Dev Ashish. ' It is not to be altered or distributed, ' except as part of an application. ' You are free to use it in any application, ' provided the copyright notice is left unchanged. ' ' Code Courtesy of Dev Ashish Function fOSMachineName() As String 'Returns the computername Dim lngLen As Long, lngX As Long Dim strCompName As String lngLen = 16 strCompName = String$(lngLen, 0) lngX = apiGetComputerName(strCompName, lngLen) If lngX <> 0 Then fOSMachineName = Left$(strCompName, lngLen) Else fOSMachineName = "" End If End Function جعفر
  12. في الواقع تقريبا كنت برفع يدي استسلم ، بدون مرفق 🙂 ولكن الفيديو اوضح الخطأ في الكود ، وهو اني لم انتبه للسجل الجديد الفارغ ، فاليك التعديل if me.newrecord=false then if me.Barcode<>me.BarCode.text then docmd.gotorecord,, acnewrec me.Barcode.setfocus exit sub end if end if جعفر
  13. السلام عليكم 🙂 مايكروسوفت عملت اضافة لجداول الاكسس 2010 (وتم ابقاء هذه الميزة للنسخ التالية) ، عملت الاحداث التالية لكل حقل (حقول النص والتاريخ والرقم (ويشمل الرقم التلقائي و العملة) فقط) وهذه الاحداث (هناك تسمى Trigger) كانت ميزة في جداول SQL Server : للسجلات : حدث بعد ادخال السجل ، حدث بعد حذف السجل ، حدث قبل حذف السجل ، للحقول : حدث بعد تحديث الحقل ، حدث قبل تحديث الحقل ويمكن عمل هذه الاحداث والجدول في وضع التصميم: . او الجدول في وضع . لغة كتابة الاحداث ليست VBA وانما الماكرو المضمن ، والذي يمكنه ان ينادي دالة في وحدة نمطية هكذا (هنا ننادي الدالة fMsgbox) : . هناك طريقتين لكتابة الماكرو المضمن ، ونتيجة الكتابة النهائية هي كما نراها في الصورة التالية : - الطريقة اليدوية (وعيبها انها بطيئة ، وخصوصا اذا عندك حقول كثيرة في الجدول ، وعندك جداول كثيرة ، وعندك برامج كثيرة) 1. اذا لم يستطع الماكرو المضمن تنفيذ احد الاوامر ، فإنه يعمل جدول للاخطاء التي صادفها ، اسمه USysApplicationLog ، وتراه هنا: . او ولأنه جدول نظام ، فيكون مخفي ، الى ان تطلب من الاكسس ان يُظهر جميع جداول النظام ، فترى الجدول . لذا ومن واقع تجربة ، انصح بكتابة هذا السطر الاول (لتلافي اي اخطاء ، مما يؤدي لتوقف عمل الماكرو) ، 2. نكتب السطر كما هو ، بعد تغيير اسم الحقل الفريد/المميز في بياناته والمفرس بلا تكرار (انصح بأن يكون عندك حقل فريد ومميز في بياناته ، وانا دائما استعمل في برامجي حقل الترقيم التلقائي ، والذي نستفيد منه هنا استفادة قصوى ، فهو الدليل على محتويات السجل) ، 3. نظيف سجل جديد في الجدول الأخر ، 4. نبدأ بتعبئة الحقول بالامر SetField ، ثم اسم الحقل ، ثم قيمة الحقل ، ونستمر لعدد الحقول التي نريد اضافة بياناتها للجدول الآخر ، . - طريقة برمجية عن طريق عمل ملف XML نضع فيه الاوامر اعلاه ، ثم نستورده لقاعدة البيانات ، والملف عبارة عن ملف نصي ولكن بصيغة XML ، يجمع فيه جميع الاحداث (مرفق نسخة من الملف لقاعدة البيانات التي تم ارفاقها في مشاركتي الاولى) واليكم الجزء للحدث الذي في الصورة الاعلى . وثم نستخدم الكود التالي لإستيراد هذا الملف: من نفس برنامج الاكسس application.LoadFromText acTableDataMacro, "Table_Name", "D:\xml_File.xml" من برنامج اكسس خارجي 'Insert/Load this DataMacro in the Table Events Dim accApp As Object Set accApp = CreateObject("Access.Application") accApp.OpenCurrentDatabase Me.str_DB_Name 'D:\temp\myDB.accdb accApp.LoadFromText acTableDataMacro, Me.lst_Tables, xml_File accApp.CloseCurrentDatabase accApp.Quit Set accApp = Nothing . والطريقة التي عرفت بها الكود اعلاه ، هي: اعمل كود في احد هذه الاحداث او في جميعها ، وليكن بضعة اسطر حتى لا نضيع في الاكواد ، واحفظ الجدول ، ثم استخدم هذا الكود لتصدير DataMacro الذي عملناه لهذا الجدول ، هكذا : application.SaveAsText acTableDataMacro, "Table_Name", "D:\xml_File.xml" . نصائح: اختار الحقول المهمة ، ولا تستعمل جميع الحقول ، الجدول tbl_x_AuditTrail سيزداد حجمه بسرعة ، ولكن كثرة الجداول وكثرة عدد المستخدمين لا يُبطئ العمل ، في الجدول tbl_x_AuditTrail هناك حقل ChangeBy وهو اسم المستخدم عند دخوله الكمبيوتر ، وحقل ChangedOn وهو اسم الكمبيوتر الذي تم التعديل منه ، هاتان الدالتان تكونان في برنامج الواجهة ، طبعا يمكن استبدالها باسم المستخد حسب الصلاحيات ، وIP الكمبيوتر اذا كان لإسم الكمبيوتر اهمية ، الجدول tbl_x_AuditTrail لا تسمح لأحد ان يراه ، لأنه يمكن حذف وتغيير بياناه ، فيصبح عديم الفائدة ، وبما ان برنامجنا كان ذو بيانات حساسة ، فكنا نراقب من يتصفح البيانات كذلك ، بمناداة دالة عند حدث "الحالي" للنموذج ، ونستعمل "Browse" في حقل عن Change_Delete_Insert . ------------------------------------------ 2024-10-30 قاعدة بيانات وبها نموذج لعمل الجميع اعلاه برمجيا جعفر tbl_info_DataMacro.xml.zip
  14. يستاهل ونص (بس الظاهر انت اعطيته 10x ، يعني اكثر مني) 🙂 الحمدلله ، الجميع في النتدى للمساعدة 🙂 جعفر
  15. هممم طلبت منك ذاك لان موضوعك الثاني كان مخالف وتم اغلاقه ، فرايت ان اسهل طريقة لك هو الرجوع هنا 🙂 معلش ، اسمح لي على اللخبطة اللي عملتها لك 🙂 جعفر
  16. السلام عليكم 🙂 من قرأتي عن قاعدة البيانات MySQL ، فإن التاريخ مع الوقت يتم تخزينهم: نوع التاريخ هو unix_time ، وهنا شرح له بطريقة مبسطة وبما حي : https://unixtime.org/ بالثواني ، على شكل رقم كامل ، على وقت GreenWich ، يعني وقت بريطانيا UTC ، لهذا السبب يجب عليك ان تضيف فارق الوقت "التوقيت العالمي" للمكان اللي انت فيه ، ومثل ما تفضلت في السعودية هو +3 الثواني تبدأ من التاريخ يبدا من 1-1-1970 يعني التاريخ 1643490000 هو حسب المعادلة اعلاه 2022-01-29 09:00:00 PM بينما يجب اضافة +3 ساعات فارق الوقت بين منطقتكم وبريطانيا ، فتصبح المعادلة كالتالي (والوقت يصبح 2022-01-30 12:00:00 AM) : d: Format(DateAdd("s",[Date_in],#01-01-1970 3:00:00#),"yyyy-mm-dd hh:nn:ss ampm") . المعادلة (بإستثناء اول حرفين على اليسار :d) ، يمكن استعمالها في اي مكان في قاعدة البيانات ، والطريقة اللي اعطيتك هي انك تعمل استعلام ، وتستخدم الجدول كمصدر بيانات للاستعلام ، ثم تضع الكود (في الكود لم استعمل :d وانما استخدمت مسميات اخرى للتوضيح) . والنتيجة . . جعفر
  17. اخي الفاضل 🙂 بما ان هذا الموضوع تتمة للموضوع . فرجاء وضع مشاركتك هناك. جعفر
  18. السلام عليكم 🙂 وما في كائنات مخفية 🙂 والنتيجة النهائية ، لاحظوا الحقل الاخير على اليمين Change_Delete_Insert ، فهو يخبرنا اذا قمنا بعملة تعديل او حذف او اضافة : . جعفر Access Tables Magic.accdb.zip
  19. حياك الله 🙂 السؤال التالي: على اي اساس تطبع هذه القائمة في هذا اليوم بالذات ، ما هو السبب او المعيار ؟ القصد ، انه ممكن عن طريق احد الحقول او حقل جديد ممكن نجعل جميع الاسماء يتم طباعتها مرة واحد بدل ان تبحث عن الاسم ثم تطبعه ، مثلا: اذا كان عندنا تاريخ الميلاد كاملا بالسنة والشهر واليوم ، فتستطيع ان تخبر الكمبيوتر بطباعة الاسماء في تاريخ الميلاد او قبله باسبوع مثلا ، او الذين وصل عمرهم الى العمر الفلاني هذا اليوم ، او ... ولو اضفنا حقل تاريخ انتهاء الهوية ، فكذلك ممكن طباعة القائمة التي ستنتهي هوياتهم بعد شهر مثلا ... جعفر
  20. وعليكم السلام ورحمة الله وبركاته 🙂 في حدث فتح النموذج ، او حدث عند التحميل ، ضع هذا الكود: docmd.gotorecord,, acnewrec جعفر
  21. السؤال هو ، الشركات المحترفة كيف تتعامل الرقم السري ، اذا كان موجود في برنامج التنصيب ؟ جعفر
  22. السلام عليكم اخوي مهند 🙂 قبل ان ترسل الملف ، اريدك ترسل لي الكود خلف حقل الباركود وبعد ان تكون قد ادخلت الكود الذي في مشاركتي السابقة (الذي قلت انه لم يتغير شيء)، وجميع الاحداث اللي لها علاقة بهذا الحقل ، الشيء الذي جاء على بالي ، انه بعد ادخال الباركود ، كان يجب ان ينتقل المؤشر الى الحقل التالي ، بينما في وضعك فإنه لم ينتقل ، فهذا معناه انه هناك كود يمنعه من ذلك ، لذا اريد اشوف الكود 🙂 جعفر
  23. تفضل ، الاكسس يعمل كل شيء وبدون تدخل الوورد 🙂 هذا النموذج ، يمكنك ادخال البيانات ، والطباعة او معاينة التقرير . وهذا التقرير تراه بزر "معاينة التقرير" ويمكنك طباعته ، او تطبعه مباشرة من زر "طباعة التقرير" ، من النموذج . جعفر 1461.accdb.zip
  24. اذن لم يبقى إلا ان اشوف هذه الجزئية من برنامجك ، وتقدر يا انك ترفقه هنا ، واذا كنت ما تريد وضعه هنا ، تقدر تحمله في اجد مواقع التحميل ، ثم ترسل الرابط برسالة خاصة لي 🙂 جعفر
×
×
  • اضف...

Important Information