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

نجوم المشاركات

  1. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      19

    • Posts

      9,814


  2. ابو البشر

    ابو البشر

    الخبراء


    • نقاط

      7

    • Posts

      654


  3. Amr Ashraf

    Amr Ashraf

    الخبراء


    • نقاط

      7

    • Posts

      946


  4. Hamdi Edlbi-khalf

    Hamdi Edlbi-khalf

    الخبراء


    • نقاط

      6

    • Posts

      993


Popular Content

Showing content with the highest reputation on 30 ينا, 2022 in all areas

  1. السلام عليكم 🙂 مايكروسوفت عملت اضافة لجداول الاكسس 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 . جعفر tbl_info_DataMacro.xml.zip
    4 points
  2. السلام عليكم 🙂 وما في كائنات مخفية 🙂 والنتيجة النهائية ، لاحظوا الحقل الاخير على اليمين Change_Delete_Insert ، فهو يخبرنا اذا قمنا بعملة تعديل او حذف او اضافة : . جعفر Access Tables Magic.accdb.zip
    3 points
  3. اذا كنت تريد "جعل النموذج المستمر دائما وأبدا يقف أو يعمل SetFocus على سجل جديد" في النموذج الرئيسي ، اذن استعمل الكود في النموذج الرئيسي ، وإلا فيمكنك استخدامه في النموذج الفرعي . او استخدام كود اخونا ازهر في النموذج الرئيسي ، اذا اردت السجل الجديد والمؤشر يقف في النوذج الفرعي 🙂 واذا دوخك كلامي ، فاعمل تجربة في النوذج الرئيسي ، واذا ما نفع ، فاعمله في الفرعي 🙂 جعفر
    3 points
  4. كنت أتمنى أن تبدأ مشاركة جديدة حتى أتمكن من مساعدك! هذا مثال آمل أن تتمكن من معرفة آلية عمله وإذا احتجت إلى مزيد من المعلومات أرجو فتح مشاركة جديدة HTML Table.accdb
    2 points
  5. بناء على شرح اخي جعفر تفضل هذه المعادلة الصقها في Module جديد Public Function ConvDate(TbalName As String, CoulmName As String) On Error Resume Next Dim db As DAO.Database Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset(TbalName) If Not rs.BOF And Not rs.EOF Then rs.MoveFirst While (Not rs.EOF) Debug.Print Format(DateAdd("s", rs.Fields(CoulmName), #1/1/1970 3:00:00 AM#), "yyyy-mm-dd") rs.MoveNext Wend End If rs.Close Set rs = Nothing End Function و للاستخدام كالتالي Call ConvDate("TbalName", "CoulmName") مرفق Module Module.zip
    2 points
  6. استاذ @ابو البشر انا عملت نفس الكود لكنني لم انتبه الى (زر التمكين) شكرا لك
    2 points
  7. تفضل <<<<<<<<<<<<<< za-AKSAT-Pro-LAST- (1) (1).mdb
    2 points
  8. معنى ذلك انك لم تعرف الطريقة .... هي عملية تنسيق شرطي ..... حاول عملها ... واذا لم تستطع ... حاضرين .... ابشر ...
    2 points
  9. 2 points
  10. 2 points
  11. السلام عليكم ورحمة الله وبركاته أخي الكريم أرجو وضع المعادلة التالية في الخلية G7 من ورقة حضور وانصراف من ملفك وستكون النتيجة مرضية إن شاء الله تعالى. =IF(AND($B7<>"";$D7<>"";$E7<>"";$F7<>"");IF(F7>0;VLOOKUP($B7;'بيانات الموظفين'!$B$7:$T$49;7;0);"");"") والسلام عليكم
    2 points
  12. السلام عليكم 🙂 هذه الطريقة من نوادر و درر الاكسس التي يعرفها القلة ، وخصوصا انها مخبأة في الجداول ، وحسب فهمنا القديم للجداول انها لا تُبرمج !! في الواقع هناك الكثير من الاستعمالات التي ممكن ان نستفيدها من هذه البرمجة ، وخصوصا بإستخدامها لمناداة دوال ، والتي يمكنها بقية الاوامر دون التقيد بأوامر 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 جعفر
    2 points
  13. السلام عليكم ورحمة الله استخدم الكود التالى ملحوظة هامة : الكود يعمل على ارقام الجلوس و ليس الاسماء لان اسماء الصور بارقام الجلوس Sub InsetPics() Dim ws As Worksheet Dim Pth As String, SName As String Dim Pic As Object, C As Range, Rng As Range Set ws = Sheets("شهاده محدده ترم2") Application.ScreenUpdating = False For Each Pic In ws.Pictures Pic.Delete Next Pth = ActiveWorkbook.Path On Error Resume Next For i = 3 To 19 Step 16 Set C = ws.Range("M" & i) Set Rng = ws.Range("N" & i - 1) SName = Pth & "\photo\" & C & ".jpg" Set Pic = ActiveSheet.Pictures.Insert(SName) If Not IsEmpty(Pic) Then With Pic .Top = Rng.Top .Left = Rng.Left .Width = Rng.Width .Height = Rng.RowHeight .Name = C.Value End With End If Next Application.ScreenUpdating = True End Sub
    2 points
  14. السلام عليكم .. الاخوة الافاضل الموضوع حول فكرة سريعة لحماية البرنامج عند توزيعه وضمان توافقه مع جهاز العميل قد لا يعرفها الكثيرين , كما نعلم ان افضل طريقة لحماية البرنامج عن طريق تحويله الى ACCDE بالطبع لا يوجد حماية مثالية ولكنها الافضل حالياً , ولكن لكى تعمل نسخة ACCDE على جهاز العميل يجب ان تكون نواة اصدار الاوفيس الخاص به مثل الجهاز الذى قام بتحويل القاعدة الاساسية فإذا كان جهاز المصمم X64 يجب ان يكون جهاز العميل كذلك , الفكرة حول تخطى هذه العقبة . أولا اذا كان برنامج يحتوى على وحدات نمطية Modules يجب ان تتبع طريقة استاذنا @jjafferr فى جعل اكوادك تعمل على النواتين X64 & X86 من هنا : ننتقل للخطوة التالية وهى كيف نتأكد ان البرنامج سيعمل عند العميل ( يجب ان تكون نواة اصدار الاوفيس الخاص به مثل الجهاز الذى قام بتحويل القاعدة الاساسية فإذا كان جهاز المصمم X64 يجب ان يكون جهاز العميل كذلك , الفكرة حول تخطى هذه العقبة ) سنستفيد من جهاز العميل نفسه لتحويل القاعدة الى ACCDE وبالتالى ما سيتم اعطاؤه للعميل هى النسخة الAccdb وسيتم تحويلها على جهازه عن طريق قاعدة اخرى "Converter.Accdb" بها كود تحويل وهو كما يلى : Function Amr() Dim sourcedb, targetdb, nametargetdb As String Dim SDest, SFile, SFName As String SDest = CurrentProject.Path SFile = "MyProgram.Accdb" SFName = SDest & "\" & SFile sourcedb = SFName targetdb = SDest & "\" & "Ready.accde" nametargetdb = SDest & "\" & "Amr.accde" Dim accessApplication As Access.Application Set accessApplication = New Access.Application With accessApplication .SysCmd 603, sourcedb, targetdb End With Kill sourcedb Name targetdb As nametargetdb FollowHyperlink nametargetdb DoCmd.Quit End Function سنستفيد من برنامج Winrar لتحزيم البرنامج وتحويله الى EXE (ابحث فى المنتدى ستجد الكثير من المواضيع المتعلقة) وفى اعدادات التحزيم سنحدد القاعدة Converter.Accdb لتفتح بعد الانتهاء من فك الضغط وبالتالى عند الانتهاء من فك الضغط ستفتح القاعدة التى بها كود التحويل لتحويل برنامجك الى Accde , وفى الفورم الرئيسى لبرنامجك ضع هذا الكود لحذف قاعدة التحويل لمحو اثار الجريمة 😂 Public Function KillConverter() Dim SDest, SFile, SDlt As String SDest = CurrentProject.Path SFile = "Converter.Accdb" SDlt = SDest & "\" & SFile If Len(Dir$(SDlt)) > 0 Then Kill SDlt End Function استدعيها عن حدث فتح النموذج الرئيسى On Open KillConverter وبكده حولنا القاعدة الاساسية الى ACCDE ومسحنا قاعدة التحويل , قد يسأل البعض ماذا لو قام العميل بفك الضغط بدلا من تثبيت البرنامج 😅 فى هذه الحالة سيحصل على النسخة ACCDB وتفشل الخطة , فى هذه الحالة يمكن اضافة هذا الكود الى النموذج الرئيسى فى برنامجك Private Sub Form_Open(Cancel As Integer) Dim appPath, AppName, AppExt As String appPath = Application.CurrentDb.Name AppName = Application.CurrentProject.Name AppExt = Mid(AppName, InStrRev(AppName, ".") + 1) If AppExt = "Accdb" Then MsgBox ("لم يكتمل التثبيت , جارى الخروج"), vbCritical DoCmd.Quit Else DoCmd.OpenForm "Main" DoCmd.Close acForm, "FrmStart" End If End Sub وظيفة الكود هو التحقق من امتداد البرنامج ولن يعمل اذا كان ACCDB وبهذا ضمنت انه يمشى بالخطوات المحددة . ملاحظات عامة : يجب ان تكون قاعدة التحويل فى Trusted Location حتى تعمل بدون مشاكل وهذا هو الشئ الوحيد الذى سنطلبه من العميل وهو اضافة مسار ما الى الاماكن الموثوقة وليكن D:\. مرفق البرنامج المراد تحويله + أداة التحويل لتوضيح الفكرة اكثر. دمتم بخير MyProgram.accdb Converter.accdb
    1 point
  15. جربت ؟ اروح انام ؟ 😅 بكرة بإذن الله اشوف ردك 😑
    1 point
  16. شرفتنا بمرورك استاذنا الفاضل .. وجزاكم الله خير على المعلومة
    1 point
  17. لم أشاهد المثال لكن توقعت أن المشكلة كون قاعدة البيانات فارغة. جزاكم الله كل خير على ما تقدمونه وأحسن إليكم
    1 point
  18. النموذج غير منضم اساسا استاذنا الفاضل وبالتالى مفيش سجلات يتنقل فيها 😅 السطر اللى انا كتبته ده من الاستعجال هوا اساسا ملوش استخدام لأنه بيعتمد على استعلام الحاق للسجلات بالاضافة الى انه فى حدث عند فتح النموذج وبيانات النموذج بتظهر فقط عند اختيار عميل فى البحث .. فهمت قصدى ؟ تشرفت بمرورك
    1 point
  19. السلام عليكم النموذج الذي تعمل به فارغ ينبغي إضافة سطر مثل هذا لحل المشكلة: if nz(dcount("*","your tabel name"),0) = 0 then else docmd.gotorecord ,,,acnewrec end if
    1 point
  20. شغال عندى مفيهوش مشكلة .. مع ذلك جرب كده .. مش مهمة الخطوة دى فى الكود ملهاش استخدام اصلا Renting Prog - Amr Ashraf v2.0.accdb
    1 point
  21. من الأشياء المتعلقة بهذا الموضوع (تتبع التغيرات).. في الإصدار 2007 البيانات من نوع ( ملاحظات Memo) وما بعده من الإصدارات (النصوص الطويلة Long Text) يوجد خاصية ضمن خواص هذا النوع من البيانات اسمها (Append Only)، عند ضبطها على (On) تقوم بتكديس البيانات السابقة للحقل في الخلفية بالتاريخ والوقت ولإعادة طلب البيانات نستخدم التابع Application.ColumnHistory، يأخذ هذا التابع ثلاثة عوامل: العامل الأول اسم الجدول، والثاني اسم الحقل، والثالث معيار التصفية ويعيد هذا التابع التاريخ والوقت والبيانات المتغيرة للحقل XHistory = Application.ColumnHistory("Products", "List Price", "id=1") [Version: 30/01/2022 09:55:41 ] 20 [Version: 30/01/2022 10:07:44 ] 30 يمكن معالجة البيانات باستخدام الإجراء التالي للحصول على بيانات نظيفة Sub XColHist() Dim RE As New RegExp Dim R, M As Match Dim XHistory As String, P As String '-- Refer to Microsoft Docum for more info XHistory = Application.ColumnHistory("Products", "List Price", "id=1") '-- Data History before processing Debug.Print XHistory Debug.Print '-- Data History after processed by RegExp P = P & "(\d{1,2}/\d{1,2}/\d{2,4})\s" ' date of change P = P & "(\d{1,2}:\d{1,2}:\d{1,2})\s\]\s" ' time of change P = P & "([A-Z0-9]+)" ' value of change '--Refer to regexp docum for more info RE.Pattern = P RE.IgnoreCase = True RE.Global = True '-- For Each M In RE.Execute(XHistory) For Each R In M.SubMatches Debug.Print R; Tab; Next Debug.Print Next End Sub Data History before processing [Version: 30/01/2022 09:55:41 ] 20 [Version: 30/01/2022 10:07:44 ] 30 Data History after processed by RegExp 30/01/2022 09:55:41 20 30/01/2022 10:07:44 30 لمزيد من المعلومات أرجو زيارة الرابط التالي Docs.Microsoft.ColumnHistory AppendOnly.accdb
    1 point
  22. تفضل 🙂 ولكن يجب ان تختار الجدول الصحيح في الاستعلام ، ثم يجب ان تغير اسم الحقل من Date_in الى اسم الحقل الحقيقي ، يجب تبديله في المعادلة 🙂 اخي حسين ، يجب اضافة الوقت كذلك في معادلتك ، ليس اليوم فقط 🙂 جعفر 1459.unix_tTime_Stamp.accdb.zip
    1 point
  23. مشاركه مع اخوانى واساتذتى جزاهم الله خيرا حاجه ع قد حالى ان شاء الله تكون ما تريد وفى انتظار طريقه @د.كاف يار الاخيره للتعلم ايضا مع اخوانى بالتوفيق 1807770602_.accdb
    1 point
  24. هذا هو المقصد ... انت تعرف .... بارك الله فيك ...
    1 point
  25. السلام عليكم رداً على السؤال التالي: سؤال عن كود البحث في جدولين قمت بعمل محاولة بناء على ما تبين لي من مقصد السائل، وبناء على ملاحظة الأستاذ @د.كاف يار عن كون الفكرة مبتكرة، أعيد رفع المرفقات مع شرح مختزل للفكرة عارٍ من الصور، مع إضافة طريقة أخرى. الفكرة قد تحتاج إلى تهذيب بحكم أنها كانت استجابة عفوية للسائل، أضعها بين أيديكم الغالية، عسى أن يُستفاد منها: أللهم صلِ على سيدنا محمد وعلى آله وصحبه وسلم. تنقسم الطريقة إلى جزئين رئيسيين، الأول منهما ثابت والثاني اقترحت طريقتين له: الجزء الأول: عمل استعلام توحيد بين الجدول الرئيسي والفرعي، يكون فيه من الجدول الفرعي Figlio : 1- الحقل الذي نرغب بالبحث ضمنه. 2- حقل المتسلسل. 3- حقل الربط. ومن الجدول الرئيسي Padre: 1- الحقل الذي نرغب بالبحث ضمنه 2- حقل المتسلسل 3- حقل محسوب قيمته صفر (نستحصل عليها بضرب حقل المتسلسل بالقيمة صفر). بالنسبة لي، قد اخترت أن يكون في نموذج البحث مربع قائمة -على مبدأ (البحث عن الكل) في الإكسل- يكون مصدره الاستعلام الذي سميته في الأنموذج المرفق (SearchQ)، وربطته بفلاتر تُستدعى بناء على معيار حقل البحث (طريقة العرض يمكن تغييرها والتفنن بها وهذه الجزئية ليست موضوع المنشور)، بعد ذلك يتم الانتقال من نموذج البحث إلى نموذج الإدخال (بقسمين الرئيسي والفرعي) بتمرير قيمة حقل الربط وحقل المتسلسل. إلى مربعين غير مرتبطين في نموذج البحث ومن ثم إلى نموذج هدف البحث. (ويمكن ذلك باستخدام المتغيرات). ملحوظة: يوجد في النموذج الفرعي حقل خفي مصدره المتسلسل في الجدول الفرعي. الجزئية الثانية: كيفية تحديد الحقل والسجل الذي يتضمن الهدف! هنا لدينا طريقتان: الأولى: بنقل التركيز إلى الحقل المطلوب : Dim Padre As Integer ' متغير باسم (الأب) لحفظ قيمة معرف السجل في الجدول الرئيسي Dim Figli As Integer ' متغير باسم (الابناء) لحفظ قيمة معر السجل في الجدول الفرعي Padre = Me.id ' حقل خفي في نموذج البحث Figli = Me.ID2 ' حقل خفي في نموذج البحث If Me.ID2 = 0 Then ' هذا الشرط لجعل الكود يتحقق بالانتقال ووقوف في النموذج الرئيسي أو الانتقال ومتابعة البحث في النموذج الفرعي DoCmd.OpenForm "form1" ' إعادة فتح النموذج الهدف لنقل التركيز إليه DoCmd.GoToRecord acDataForm, "Form1", acGoTo, Padre ' فتح النموذج على السجل المنشود DoCmd.GoToControl "[اسم رب العائلة]" ' التركيز على حقل فيه Else DoCmd.OpenForm "form1" DoCmd.GoToRecord acDataForm, "Form1", acGoTo, Padre 'Me.id DoCmd.GoToControl "SubForm" ' نقل التركيز إلى النموذج الفرعي DoCmd.GoToControl "[الاسم]" ' نقل التركيز إلى حقل في النموذج الفرعي ' هذا الجزء لنقل التركيز في النموذج الفرعي إلى السجل المطلوب Dim rstt As dao.recordset Dim rstrng As String rstrng = "[id0]=" & Figli 'Forms!search!Figli Set rstt = Forms!form1!Subform.Form.RecordsetClone rstt.FindFirst rstrng Forms!form1!Subform.Form.Bookmark = rstt.Bookmark Set rstt = Nothing End If الثانية: باستخدام التنسيق الشرطي وهي الطريقة الأفضل برأيي. ويزاد فيها وجود معادلة للتنسيق الشرطي لحقل الهدف في النموذج الرئيسي وأخرى لحقل الهدف في النموذج الفرعي ، ووجود حقلين خفيين في النموذج الرئيسي يأخذان قيمتها من المتغيرين (الأب) و(الأبناء)، ستكون قيمتهما هي محددات معادلتي التنسيق الشرطي. ' سيبدو الكود بهذه الطريقة Dim Padre As Integer Dim Figli As Integer Padre = Me.id Figli = Me.ID2 Forms!form1!CondScnd.Value = Figli ' هنا نجعل حقل المعيار للتنسيق الشرطي يأخذ قيمته من المتغيرات المبين معناها في الكود السابق Forms!form1!CondFrst.Value = Padre DoCmd.GoToRecord acDataForm, "Form1", acGoTo, Padre Forms!form1.Refresh ' مع اختصار المراحل ' وتوفير ضرورة إعادة التركيز إلى نموذج البحث مع كل انتقال إلى الهدف أرجو ممن يعرج على الموضوع التفضل بوضع ملاحظاته أو اقتراحاته أو إضافته. والحمد لله رب العالمين أخيراً المثال من وضع السائل في الرابط المذكور أعلاه (مشكوراً مأجوراً إن شاء الله تعالى) Search in Main form and Sub Form Simultaneously Search_MaiForm_SubFormConditionl.accdb Search_MainF=SubFormSetFocus.accdb
    1 point
  26. تسلم استاذ @Khalf لانني رايت النموذج الخاص بي في مثالكم قلت يمكن؟؟؟ اجد طلبي انا اعتذر منك تحياتي
    1 point
  27. مرحباً الموضوع مختلف عن طلبكم، فالغاية من الموضوع عرض طريقة قد تكون نافعة لتحقيق بحث في النموذجين الرئيسي والفرعي معاً، وليس من الضروري أن تلبي متطلبات الجميع. وتستطيع أخي الكريم متابعة طلبك في سؤالك السابق مما يسمح للأعضاء الأكارم بفهم أكبر لما تبحثون عنه، بوضعه في سياقه.
    1 point
  28. الحمد لله الذي بنعمته تتم الصالحات والسلام عليكم
    1 point
  29. مرحباً أخي @abouelhassan لا أستطيع وصف الحل فالمشكلة غير واضحة، ولا أعلم المكتبة المطلوبة أما عن الإضافة بصورة عامة فمن
    1 point
  30. اشكرك استاذي الكريم الكود يتوقف عند كلمة conect بعد فتح باسورد الجوال بيزاك كيف يمكن أن أضيف مكتبة لمى يعمل استاذنامع الشكر والتقدير
    1 point
  31. السلام عليكم من الوارد أن الكود متوافق مع نواة دون أخرى 64 بت أو 32 بت
    1 point
  32. الvba محتاج يتفتح وتعمل compile تانى عن تجربة.. طبعا عارف لو مفتوح هيجيبلك رسالة تفصيلية بالخطأ ويدخلك على السطر اللى فيه مشكلة لكنه محمى وبالتالى مش عارف يظهرلك السطر المعيب. واحيان كتير مش هتلاقى مشكلة فقط اعمل compile وهيشتغل عادى بعد كده.
    1 point
  33. ابحث عن موقع مشابه أو أي مثال آخر لنحاول مساعدتك من خلاله
    1 point
  34. وفي حال كان النموذج الفرعي غير مرتبط بالنموذج الرئيسي يمكن استحدام الكود التالي DoCmd.GoToControl "اسم النودج الفرعي" DoCmd.GoToRecord , "", acNewRec
    1 point
  35. بارك الله فيك استاذ @jjafferr اخينا @palesten يحتاج الدعم لمعرفة المزيد وهو بيستاهل *10
    1 point
  36. السلام عليكم ورحمة الله وبركاته اعتدنا نحن الاعضاء المبتدئين والجديد ان تكون مشاركاتنا في الغالب استعانة وطلب مساعدة ، ولكن حاليا انا العبد الفقير لله طلبي هو من الله عز وجل ان يجزي كل القائمين على هذا المنتدى ويبارك لهم في دينهم ودنياهم لما يقدموا وبيذلوا من جهد لمساعدة الآخرين. بوركت جهودكمز جزاكم الله كل الخير كل باسمه مع حفظ الالقاب
    1 point
  37. السلام عليكم 🙂 من قرأتي عن قاعدة البيانات 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 وانما استخدمت مسميات اخرى للتوضيح) . والنتيجة . . جعفر
    1 point
  38. حياك الله 🙂 السؤال التالي: على اي اساس تطبع هذه القائمة في هذا اليوم بالذات ، ما هو السبب او المعيار ؟ القصد ، انه ممكن عن طريق احد الحقول او حقل جديد ممكن نجعل جميع الاسماء يتم طباعتها مرة واحد بدل ان تبحث عن الاسم ثم تطبعه ، مثلا: اذا كان عندنا تاريخ الميلاد كاملا بالسنة والشهر واليوم ، فتستطيع ان تخبر الكمبيوتر بطباعة الاسماء في تاريخ الميلاد او قبله باسبوع مثلا ، او الذين وصل عمرهم الى العمر الفلاني هذا اليوم ، او ... ولو اضفنا حقل تاريخ انتهاء الهوية ، فكذلك ممكن طباعة القائمة التي ستنتهي هوياتهم بعد شهر مثلا ... جعفر
    1 point
  39. يبدو ان النقاش قد احتدم اثناء غيابي ولا اعلم شكرا علي التنبيه علي هذه الثغرة ان شاء الله نبحث عن حيلة لتجاوزها نعم هذا هو وانما هو محض اجتهاد علي قدر المستطاع لحفظ الحقوق الفكرية والمادية أحيانا أعتقد ان هذا ما قامت به الأخت بالضبط انها فتحت الفولدر وأخذت نسخة من محتوياته اثناء عملية التسطيب فهذا الرقم السري الذي أظهرته هو موجود داخل الاسكربت - ولا اعتقد علي حد علمي ان هنالك برامج يمكنها معرفة الرقم السري للاكسس بهذه الدقة خاصة اذا كان رقما معقدا بهذا الشكل شاكر لك هذه المعلومة لم اعلم عن وجود هذا البرنامج الا منكم جزاك الله خيرا والآن يمكنني ان أقول انقلب السحر علي الساحر لم يعد المضوع خاص بالحماية بل بفك تلك الحماية بعد كل ماقيل ما بت اثق بهذا
    1 point
  40. جرب هذه المعادلة في الاستعلام: d: Format(DateAdd("s",[Date_in],#01-01-1970#),"yyyy-mm-dd hh:nn:ss ampm") بس غيّر اسم الحقل من Date_in الى الاسم الحقيقي 🙂 جعفر
    1 point
  41. تقريبا وصلنا لنتيجة ، ولكن محتاج الى التالي لوسمحت 🙂 اريد ان اعرف التالي: اريدك تدخل معلومة جديدة في الجدول ، تأخذ الوقت الذي يعطيك (كما في الصورة اعلاه) ، واريد ان تكتب التاريخ والوقت بالثانية (هاي تأخذها من ساعتك او ساعة الكمبيوتر ، ومو مهم ان الثواني تكون بالضبط 100%) ، اريد معرفة منطقة السيرفر (الجهاز الذي عليه قاعدة البيانات) : . . وياريت تُدخل مجموعة سجلات فيها اوقات مختلفة 🙂 جعفر
    1 point
  42. شكرا جزيلا اخوي عمرو 🙂 استخدم كلام الدكتور حسنين @SEMO.Pa3x واخي الاستاذ خالد @kha9009lid (أسأل الله سبحانه وتعالى ان نشوفهم في المنتدى عاجلا غير آجل) انه لا يوجد شيء اسمه حماية مطلقة في جميع البرامج (طبعا ممكن تكون هناك حالات خاصة) وليس في الاكسس فقط . فمثلا ، كثر تداول التحدث انه يمكن تحويل الاكسس صيغة accde الى مصدر مفتوح accdb ، ولكني لم اجد سوى موقع واحد في الانترنت لأحد محترفي الاكسس ، ومكتوب في صفحته انه الجهة الوحيدة التي تستطيع القيام بذلك على مستوى العالم: The only service worldwide وهذه الخدمة بمقابل ولا يوجد برنامج يمكن نشتريه لهذا الغرض او نجد له كراك ، والموقع يطلب منك الكثير من التوثيقات للتأكد انه برنامجك ، ثم يقوم لإسترجاع برنامجك. بمعنى آخر ، ان الاكسس بأمان اكثر من اي برنامج آخر ، فلا تستطيع تحويله من accde او accdb ، لأن بقية البرنامج ، توجد في الانترنت برامج تفكها 😁 وحتى البرنامج الذي تفضلت به وارفقت نسخة منه ، فلم اكن اعلم عنه ، لأنه لم يكن يهمني ، فلم اكن افكك برامج setup 🙂 نعم ، نجتهد قدر المستطاع لحمايته ، والطريقة التي تفضلتم بها ، احدها 🙂 في الواقع هذا الموضوع اصبح اجمل كثيرا بهذه المشاركات ، شكرا لكم جميعا 🙂 جعفر
    1 point
  43. عن طريق هذا البرنامج مثلا : https://github.com/Bioruebe/UniExtract2#download والنتيجة فى المرفقات وأثناء التثبيت يظهر ايضا الفولدر ويمكن أخذ كوبى من محتوياته بس فى النهاية كمستخدم عادى او كعميل لن تستطيع الوصول لهذه النتيجة الا لو كان عندك خلفية عن هذه الامور. SetupExtracted.rar
    1 point
  44. يبدو انك لم تغير هذه الجملة Type Here a strong password بهذا السطر من الاسكربت dbs.NewPassword "", "Type Here a strong password" يجب ان تضع كلمة المرور الجديدة بدلا عنها
    1 point
  45. وعليكم السلام ورحمة الله وبركاته 🙂 ما هو نوع الحقل في جدول MySQL ؟ هل هو تاريخ، مثل: 26-01-2022 او تاريخ ووقت، مثل: 26-01-22 8:55:07 PM او وقت، مثل: 8:55:07 PM جعفر
    1 point
  46. تم عمل المطلوب في اول عشر صور قم بنسخ الكود في يقية الصور تفضل Encodingمعدل2.xlsm
    1 point
  47. برنامج2.xlsm تفضل استاذ هشام ولكم كل التحية بعد اذنك رفعت الشيت لعل أحد يجيب على كيفية عمل قائمة منسدلة بالتاريخ والتقويم تقبل تحياتى
    1 point
  48. الأخ ابراهيم , أنا و أنت و اي شخص آخر , عندما يقوم بنفسه بتصميم برنامج , فانه يعرف بماذا يفكر و مالذي يريده لكن ليس بالضرورة أن الآخرون يعرفون مالذي نريده و مالذي نفكر به برنامجك لاشك أنه متعوب عليه و يعطيك العافية لكن يجب أن تعرف أنك أنت الوحيد الذي تعرف ماذا تريد و لكي تطلب المساعدة عليك أن تشرك الآخرين بتفكيرك منذ أن بدأت بالفكرة الآولى على سبيل المثال أنت تقول : هل تريد مجرد اظهار الجدول أو النموذج المطلوب فقط و تقوم بتعبئة بياناته يدويا ؟ أم أنك تريد أن يقوم النموذج بعمل تلك المعادلات لك ؟ في هذه الحالة عليك أن تقوم بتوضيح كل شيء بداية من تصميم الجداول مرورا بالاستعلامات و انتهاء بالنماذج و الأكواد كلما أسهبت في التوضيح كلما حصلت على المزيد من المساعدة و نرجو الابتعاد عن العبارات الاستفزازية كالتي ذكرتها في المتون السابقة , لأن الجميع هنا يعملون من باب التطوع و ليس الالتزام فكل يعمل حسب المتوفر له من الوقت و الجهد و على حساب عمله و راحته و أسرته فان وجدت اجابة فاحمد الله , و ان لم تجد فلا يكلف الله نفسا الا وسعها و المنتديات كثيرة و عديدة العربية منها و الأجنبية
    1 point
  49. الاخ / الاستاذ يحياوي : لقد قمت بتجميع بعض من الاكواد التي ارفقتها حضرتك واضفت اليها بعض من الاكواد التي تعلمتها من اساتذة هذا المنتدى الرائد ضمن ملف واحد ( والحقيقة لا اعرف ان كنت قد وفقت في هذا التجميع والشرح ) ولكن الغاية ان يطلع عليها ويستفيد منها الاخوة الاعضاء المبتدئين في الاكواد امثالي اشكرك اخي يحياوي على الفكرة ... وارجوا بداء الرأي ان كان الملف المرفق يستطيع الاخوة الاستفادة منه وفقك الله والسلام ياسر الحافظ اكواد متفرقة.rar
    1 point
×
×
  • اضف...

Important Information