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

Foksh

الخبراء
  • Posts

    2,794
  • تاريخ الانضمام

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

  • Days Won

    103

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

  1. بالنسبة لي ، توجهي نحو رمز الاستجابة السريعة الـ QR لقي اهتمامي وحل لمشاكلي جميعها وبشكل مجاني دون الحاجة للخطوطومشاكلها ، مع الدعم للنصوص العربية وبالشكل الذي اريده كمحتوى للـ QR .
  2. اهلا وسهلا بك مرة اخرى وشكراً على مشاركتك لنا افكارك
  3. يسعدني مرورك العطر .. ونرجو افادتنا بالتجربة ونتيجتها لغايات التطوير وتحسين الأداء وتلافي الأخطاء وإصلاحها
  4. أهلا مهندسنا الغالي .. جزاك الله خيراً على ما أسلفت ، هل الصورة أدناه تكفي !!! أخي جو أسعد الله مسائك ، هل قمت بتوفير المطلوب بشكل عام ، وهو :- وجود جدولين بينهم حقول متشابهة ، فمثلاً اذا اخترت جدول المستخدمين وجدول الطلاب ( فهل بينهم حقول متشابهة ؟؟؟ ) أكيد لا فكيف سيكون هناك مقارنة بين جدولين للإيجاد الفرق . في الصورة السابقة تطبيق على قاعدة بيانات عادية فيها جدولين ولكن جعلنا بينهم اختلاف في البيانات والسجلات وتم تنفيذ المطلوب بشكل كامل كما رأيت . فلا اعلم ما الجداول التي اخترتها ، ولا طبيعة وبنية الجداول والحقول فيهما .
  5. بارك الله فيك .. وأرجو أن تقبل مني النصيحة كأخ لي .. لا تعتمد على الذكاء الإصطناعي بشكل كبير حتى في الردود والإجابات . أضراره أكبر من منافعه التي قد تكون لك كبيرة ورائعة وتجعلك تشعر بالرضا عما تقوم بتقديمه .. إلا أنه في نهاية المطاف سيجعل لأفكارك وقدراتك حدود ضيقة تجعلك لا تستغني عنه حتى في أصغر التفاصيل . ونصيحتي ليست لك كشخص صدقني ، وإنما بشكل عام .
  6. من أسباب عدم نجاح العلاقة بين الجدولين في الصورة .. وجود تكرار في البيانات في الجدول الذي ترغب بجعله مفتاحًا أساسيًا (Primary Key) عند الربط بين جدولين ، يجب أن تكون البيانات في الحقل المرتبط فريدة ( بدون تكرار ) إذا كنت تريد إنشاء علاقة من نوع ( One-to-Many ) . إذا كان هناك تكرار في هذا الحقل ، ستظهر رسالة خطأ . وجود سجلات لا تتطابق بين الجدولين إذا كنت تحاول إنشاء علاقة حيث يجب أن تتطابق القيم بين الجدولين ، ستواجه مشكلة إذا كانت هناك سجلات في أحد الجدولين لا يوجد لها سجلات مقابلة في الجدول الآخر . أنواع بيانات غير متطابقة يجب أن يكون نوع البيانات في الحقول المرتبطة متطابقًا ، مثلًا: إذا كان أحد الحقول "رقم" فيجب أن يكون الحقل الآخر "رقم" أيضًا ، وإلا ستظهر رسالة خطأ . وجود بيانات غير صحيحة أو غير صالحة أحيانًا ، تكون البيانات في الحقول مرتبطة بالقيم الافتراضية أو الحقول المحذوفة ، مما يتسبب في مشكلة عند محاولة الربط . هذا بشكل عام قد يكون أحدها أو معظمها سبباً في عدم نجاح العلاقة بين الجدولين . هذا والله أعلم
  7. من نفس المشاركة ، اضغط على النقاط الثلاث اللي في يسار المشاركة ، واختار تعديل لو حبيت تعدل مشاركتك ( طبعاً هذا له وقت محدد لهذه الميزة ) 👍
  8. استأنس بمشاركة معلمنا القدير @ابوخليل من هنا 👍 . ومن هنا مشاركة المهندس @ابو جودي 💡 .
  9. السلام عليكم ورحمة الله وبركاته ، أخواني وأساتذتي ومعلمينا ( دون استثناء ) قمت بتنفيذ فكرة تعقب التغييرات بين الجداول والمبنية على فكرة الأستاذ @ابو البشر ( مشكوراً ) مع إجراء بعض التعديلات ، بحيث تم منح المستخدم الحرية في اختيار جدولين ومفتاح ربط أساسي و مشترك فيما بينهم بشكل بسيط وسهل ، ولا يحتاج الأمر لأي مكتبات أو دعم خارجي . ⭐ ما احتجنا له هو كومبوبوكس عدد 3 ، وزر واحد فقط وظائفهم كالآتي :- cmbTable1 : التعرف على أسماء الجداول في قاعدة البيانات ، وهنا سيكون الجدول الأول . cmbTable2 : التعرف على أسماء الجداول في قاعدة البيانات باستثناء الجدول الذي تم اختياره في cmbTable1 ؛ والهدف هو عمل مقارنة بين جدولين وليس نفس الجدول . cmbPrimaryField : التعرف على أسماء الحقول في الجدول الأول ، ثم يتم اختيار الحقل المشترك أو المفتاح الأساسي من طرف المستخدم . btnExecute : منفّـذ العملية . ⭐ الأحداث والأكواد لكل جزء و عنصر في البرنامج :- في حدث عند التحميل للنموذج ، تم وضع الكود التالي لجلب أسماء الجداول إلى الكومبوبوكس ( cmbTable1 و cmbTable2 ) ، وطبعاً سيتم استثناء جداول النظام والجدول DifferencesTable الذي سيتم إدراج التغييرات فيه ( والذي سيتم انشائه بشكل ديناميكي في قاعدة البيانات عند المستخدم عند عدم وجوده ) . أي أنه وللإستفادة من البرنامج ما عليك إلا نسخ النموذج فقط الى مشروعك . Private Sub Form_Load() Me.cmbTable2.Enabled = False Me.cmbPrimaryField.Enabled = False Dim tdf As DAO.TableDef Me.cmbTable1.RowSource = "" Me.cmbTable2.RowSource = "" For Each tdf In CurrentDb.TableDefs If Left(tdf.Name, 4) <> "MSys" And tdf.Name <> "DifferencesTable" Then Me.cmbTable1.AddItem tdf.Name 'Me.cmbTable2.AddItem tdf.Name End If Next tdf End Sub في حدث بعد التحديث للكومبوبوكس cmbTable1 ، سيتم إدراج أسماء الجداول المتبقية كما ذكرت سابقاً في الكومبوبوكس cmbTable2 باستثناء ما تم اختياره في الجدول cmbTable1 :- Private Sub cmbTable1_AfterUpdate() Dim db As DAO.Database Dim tdf As DAO.TableDef Dim fld As DAO.Field Me.cmbPrimaryField.RowSource = "" Set db = CurrentDb Set tdf = db.TableDefs(Me.cmbTable1.Value) For Each fld In tdf.Fields Me.cmbPrimaryField.AddItem fld.Name Next fld Me.cmbTable2.RowSource = "" For Each tdf In db.TableDefs If Left(tdf.Name, 4) <> "MSys" And tdf.Name <> "DifferencesTable" And tdf.Name <> Me.cmbTable1.Value Then Me.cmbTable2.AddItem tdf.Name End If Next tdf Me.cmbTable2.Enabled = True Set fld = Nothing Set tdf = Nothing Set db = Nothing End Sub في حدث عند النقر على الزر btnExecute ، سيتم تنفيذ الكود التالي :- Private Sub btnExecute_Click() Dim db As DAO.Database Dim rsOld As DAO.Recordset Dim rsNew As DAO.Recordset Dim rsDifferences As DAO.Recordset Dim fld As DAO.Field Dim recordFound As Boolean Dim commonFields As Collection Dim fieldName As Variant Dim primaryField As String Dim table1 As String Dim table2 As String If IsNull(Me.cmbTable1) Then MsgBox "قم باختيار الجدول الأول", vbCritical, "" Me.cmbTable1.SetFocus Exit Sub ElseIf IsNull(Me.cmbTable2) Then MsgBox "قم باختيار الجدول الثاني", vbCritical, "" Me.cmbTable2.SetFocus Exit Sub ElseIf IsNull(Me.cmbPrimaryField) Then MsgBox "قم باختيار الحقل الأساسي", vbCritical, "" Me.cmbPrimaryField.SetFocus Exit Sub Else table1 = Me.cmbTable1.Value table2 = Me.cmbTable2.Value primaryField = Me.cmbPrimaryField.Value If IsNull(table1) Or IsNull(table2) Or IsNull(primaryField) Then MsgBox "Please select both tables and the primary field." Exit Sub End If Set db = CurrentDb If Not TableExists("DifferencesTable") Then CreateDifferencesTable db End If Set rsOld = db.OpenRecordset(table1) Set rsNew = db.OpenRecordset(table2) Set rsDifferences = db.OpenRecordset("DifferencesTable", dbOpenDynaset) DoCmd.SetWarnings False DoCmd.RunSQL "DELETE FROM DifferencesTable;" DoCmd.SetWarnings True Set commonFields = New Collection For Each fld In rsOld.Fields On Error Resume Next If Not IsNull(rsNew.Fields(fld.Name).Name) Then If fld.Name <> primaryField Then commonFields.Add fld.Name, fld.Name End If End If On Error GoTo 0 Next fld Do While Not rsOld.EOF recordFound = False rsNew.MoveFirst Do While Not rsNew.EOF If rsOld(primaryField) = rsNew(primaryField) Then recordFound = True For Each fieldName In commonFields If Nz(rsOld(fieldName), "") <> Nz(rsNew(fieldName), "") Then rsDifferences.AddNew rsDifferences("ID") = rsOld(primaryField) rsDifferences("ChangeType") = "Modification" rsDifferences("FieldName") = fieldName rsDifferences("OldValue") = rsOld(fieldName) rsDifferences("NewValue") = rsNew(fieldName) rsDifferences.Update End If Next fieldName Exit Do End If rsNew.MoveNext Loop If Not recordFound Then rsDifferences.AddNew rsDifferences("ID") = rsOld(primaryField) rsDifferences("ChangeType") = "Deletion" rsDifferences("FieldName") = "عمليات الحذف أو الإضافة" rsDifferences("OldValue") = "عملية حذف" rsDifferences("NewValue") = Null rsDifferences.Update End If rsOld.MoveNext Loop rsNew.MoveFirst Do While Not rsNew.EOF recordFound = False rsOld.MoveFirst Do While Not rsOld.EOF If rsNew(primaryField) = rsOld(primaryField) Then recordFound = True Exit Do End If rsOld.MoveNext Loop If Not recordFound Then rsDifferences.AddNew rsDifferences("ID") = rsNew(primaryField) rsDifferences("ChangeType") = "Addition" rsDifferences("FieldName") = "عمليات الحذف أو الإضافة" rsDifferences("OldValue") = Null rsDifferences("NewValue") = "عملية إضافة" rsDifferences.Update End If rsNew.MoveNext Loop rsOld.Close rsNew.Close rsDifferences.Close Set rsOld = Nothing Set rsNew = Nothing Set rsDifferences = Nothing Set db = Nothing End If CreatePivotQuery table1, table2 MsgBox "تمت عملية المقارنة في الجدولين ، وسيتم فتح الاستعلام بالنتائج", vbInformation, "" DoCmd.OpenQuery "Foksh", acViewNormal End Sub الكود يقوم بتنفيذ عملية مقارنة بين بيانات الجدولين ( من خلال اختيار الجدول الأول والجدول الثاني كما ذكرت سابقاً ) في أي قاعدة بيانات للمستخدم . وفيما يلي شرح مبسط للخطوات الرئيسية التي ينفذها هذا الكود ( للفائدة ):- التحقق من القيم في الكومبوبوكسات الثلاثة يتم التحقق مما إذا كان المستخدم قد اختار الجداول الأساسية ( الجدول الأول و الجدول الثاني ) وحقل المفتاح الأساسي للمقارنة . فإذا كانت أي من هذه المدخلات مفقودة أو لم يتم اختياره ، يعرض الكود رسالة تحذير بوجوب اختيار الجدول أو المفتاح الأساسي وبالتالي يوقف العملية . تحضير البيانات يتم فتح السجلات من الجداول المختارة (الجدول الأول والجدول الثاني) وإنشاء سجل جديد في جدول DifferencesTable لتخزين الفروقات والتغيرات . مقارنة البيانات سيقوم الكود بمقارنة السجلات في الجدولين اللذين تم اختيارهم سابقاً . فإذا كانت السجلات متطابقة في كلا الجدولين ، يتم مقارنة الحقول المشتركة فقط - أي الحقول الموجودة و المتشابهة بالإسم في الجدولين (باستثناء الحقل الأساسي) لتحديد التغييرات . فإذا كانت السجلات مفقودة في أحد الجدولين ( أي تم الحذف أو الإضافة في أي من الجدولين ) ، يتم تحديد نوع التغيير كـ ( عملية حذف ) أو ( عملية إضافة ). إدخال النتائج وإضافتها للجدول DifferencesTable يتم إضافة البيانات الناتجة عن التغييرات ( مثل القيمة القديمة والجديدة ) في جدول DifferencesTable ، مع تسجيل نوع التغيير ( إضافة، حذف، أو تعديل ) . إنشاء استعلام PIVOT أو ما يعرف بالإستعلام Crosstab بعد الانتهاء من المقارنة في الخطوة السابقة ، يتم إنشاء استعلام من نوع Pivot أو Crosstab ( استعلام جدولي كما يسمى في آكسس الواجهة العربية ) ؛ وهو يستخدم لتحويل البيانات من شكل الصفوف إلى شكل الأعمدة ( إن صح التعبير ) ، مما يجعل هذه البيانات أكثر تنظيماً وأسهل في التحليل و القراءةً . والهدف منه هو عرض التغييرات بطريقة منظمة باستخدام الحقول المشتركة بين الجدولين . فتح الاستعلام في نهاية الكود ، يتم فتح الاستعلام الذي يعرض الفروقات والتغيرات بين الجدولين بشكل عادي . ⭐ وظائف أخرى يتم استدعائها لأنشاء الجدول DifferencesTable بعد التأكد من وجوده أو لا . وأخرى لإنشاء الإستعلام الذي يحتوي التغيرات التي تم تعقبها :- وظيفة التأكد من وجود الجدول أو لا :- Function TableExists(tableName As String) As Boolean Dim db As DAO.Database Dim tdf As DAO.TableDef TableExists = False Set db = CurrentDb For Each tdf In db.TableDefs If tdf.Name = tableName Then TableExists = True Exit For End If Next tdf End Function في حال عدم وجود الجدول DifferencesTable ، سيتم استدعاء هذا الـ Sub لإنشائه مع الحقول التي سنحتاجها لعرض البيانات المختلفة في الجدولين :- Sub CreateDifferencesTable(db As DAO.Database) Dim tdf As DAO.TableDef Set tdf = db.CreateTableDef("DifferencesTable") tdf.Fields.Append tdf.CreateField("ID", dbLong) tdf.Fields.Append tdf.CreateField("ChangeType", dbText, 50) tdf.Fields.Append tdf.CreateField("FieldName", dbText, 50) tdf.Fields.Append tdf.CreateField("OldValue", dbMemo) tdf.Fields.Append tdf.CreateField("NewValue", dbMemo) db.TableDefs.Append tdf End Sub بعد تتبع التغيرات والفروقات ، سيتم انشاء استعلام باسم Foksh ، لعرض التغيرات التي تم التعرف عليها :- Sub CreatePivotQuery(table1 As String, table2 As String) Dim queryDef As DAO.queryDef Dim sql As String sql = "TRANSFORM First('" & table1 & " ' & [OldValue] & ' - ' & '" & table2 & " ' & [newvalue]) AS dd " & _ "SELECT DifferencesTable.ID " & _ "FROM DifferencesTable " & _ "GROUP BY DifferencesTable.ID " & _ "PIVOT DifferencesTable.FieldName;" On Error Resume Next CurrentDb.QueryDefs.Delete "Foksh" On Error GoTo 0 Set queryDef = CurrentDb.CreateQueryDef("Foksh", sql) Set queryDef = Nothing End Sub وأخيراً وليس آخراً :- UnMatched.accdb وهذه صورة للبرنامج :-
  10. نيابة عن الأستاذ الفاضل @ابو البشر ، وبعد محاولة فهم طريقة عمل الكود في مشاركته الأصلية ، تفضل الكود التالي أخي @figo82eg . في حدث عند النقر للزر :- Private Sub أمر1_Click() Dim db As DAO.Database Dim rsOld As DAO.Recordset Dim rsNew As DAO.Recordset Dim rsDifferences As DAO.Recordset Dim fld As DAO.Field Dim recordFound As Boolean Dim commonFields As Collection Dim fieldName As Variant Set db = CurrentDb Set rsOld = db.OpenRecordset("BASIC_DATE") Set rsNew = db.OpenRecordset("Sap_Data") Set rsDifferences = db.OpenRecordset("DifferencesTable", dbOpenDynaset) DoCmd.SetWarnings False DoCmd.RunSQL "DELETE FROM DifferencesTable;" DoCmd.SetWarnings True Set commonFields = New Collection For Each fld In rsOld.Fields On Error Resume Next If Not IsNull(rsNew.Fields(fld.Name).Name) Then If fld.Name <> "CRN" Then commonFields.Add fld.Name, fld.Name End If End If On Error GoTo 0 Next fld Do While Not rsOld.EOF recordFound = False rsNew.MoveFirst Do While Not rsNew.EOF If rsOld("CRN") = rsNew("CRN") Then recordFound = True For Each fieldName In commonFields If Nz(rsOld(fieldName), "") <> Nz(rsNew(fieldName), "") Then rsDifferences.AddNew rsDifferences("ID") = rsOld("CRN") rsDifferences("ChangeType") = "Modification" rsDifferences("FieldName") = fieldName rsDifferences("OldValue") = rsOld(fieldName) rsDifferences("NewValue") = rsNew(fieldName) rsDifferences.Update End If Next fieldName Exit Do End If rsNew.MoveNext Loop If Not recordFound Then rsDifferences.AddNew rsDifferences("ID") = rsOld("CRN") rsDifferences("ChangeType") = "Deletion" rsDifferences("FieldName") = "" rsDifferences("OldValue") = "Record Deleted" rsDifferences("NewValue") = "" rsDifferences.Update End If rsOld.MoveNext Loop rsNew.MoveFirst Do While Not rsNew.EOF recordFound = False rsOld.MoveFirst Do While Not rsOld.EOF If rsNew("CRN") = rsOld("CRN") Then recordFound = True Exit Do End If rsOld.MoveNext Loop If Not recordFound Then rsDifferences.AddNew rsDifferences("ID") = rsNew("CRN") rsDifferences("ChangeType") = "Addition" rsDifferences("FieldName") = "" rsDifferences("OldValue") = "" rsDifferences("NewValue") = "Record Added" rsDifferences.Update End If rsNew.MoveNext Loop rsOld.Close rsNew.Close rsDifferences.Close Set rsOld = Nothing Set rsNew = Nothing Set rsDifferences = Nothing Set db = Nothing MsgBox "تمت مقارنة الجداول وتم تخزين جميع التغييرات في DifferencesTable." DoCmd.OpenQuery "abo_1", acViewNormal End Sub الملف بعد التعديل : مقارنة بيانات.accdb
  11. أخي سامر ، دائماً ما نوجه الأخوة الذين يصادفهم مشاكل ألى ضرورة بناء الجداول بشكل سليم وصحيح ، وفي حالة مشروعك لا يسعني إلا تقديم المساعدة في الجزء الأول فقط . التعديل الذي رأيته صحيحاً بالنسبة لي ما يلي :- مصدر بيانات الكومبوبوكس المحول منه = رقم المخزن1 = سليم مع إضافة كود لتحديث الكومبوبوكس المحول اليه ( التوضيح لاحقاً ) مصدر بيانات الكومبوبوكس المحول اليه = رقم المخزن المحول اليه = مع إضافة شرط لإستعلام مصدر بياناته بحيث تم إضافة شرط في الحقل رقم المخزن كالآتي :- <>[Forms]![نموذج1]![المحول منه] بحيث يتم عرض المخازن التي ليست في المخزن المحول منه . الملف بعد التعديل Transfer (1).accdb وأضف على ما سلف ، هذا استعلام يعطيك اجمالي الكمية الواردة والمنصرفة لكل صنف حسب المخزن ، وطبعاً الشروط تستطيع إدارتها كما هي حاجة مشروعك ، قم بإنشاء استعلام جديد وألصق الكود التالي فيه ، واختر المخزن 1 أو 2 SELECT [حركة صنف].[رقم الصنف], Sum([حركة صنف].[الكمية الواردة]) AS إجمالي_الواردة, Sum([حركة صنف].[الكمية المنصرفة]) AS إجمالي_المنصرفة, الاصناف.[اسم الصنف] FROM الاصناف INNER JOIN [حركة صنف] ON الاصناف.[كود الصنف] = [حركة صنف].[رقم الصنف] WHERE ((([حركة صنف].[رقم المخزن2])=[Forms]![نموذج1]![المحول منه])) GROUP BY [حركة صنف].[رقم الصنف], الاصناف.[اسم الصنف];
  12. لا يظهر في التقرير ما ذكرته
  13. هكذا ؟؟ base_TN.accdb
  14. وعليكم السلام ورحمة الله وبركاته أخي @سامر محمود .. إضافةً لما تقدم به أستاذنا ومعلمنا ووالدنا الحبيب @ابوخليل ، اعتقد ان بنية الجداول لديك قد تكون الى حد ما غير سليمة أو غير مكتملة ,, وعليه فإن لي اقتراح بتنفيذ فكرة معلمي الحبيب بأن يكون لديك جدول واحد فقط للحركات ويضم عمليات البيع والشراء وحركة الأصناف ... إلخ كاملة في هذا الجدول . وللسير في تنفيذ ذلك قمت بالتعديل التالي ( رغم انني غير مقتنع بأن تكون أسماء الحقول باللغة العربية ) قمت بإنشاء جدول "الحركات" ويضم جميع الحركات السابق ذكرها ، مع ربط العلاقات بالشكل الذي رأيت أنه منطقي . الق نظرة على هذا التعديلات في المرفق التالي :- Transfer.accdb
  15. ظننت الأمر قد لا يحتاج إلى شرح . على العموم الفكرة بسيطة جداً وهي أن نتجه لأن يكون عدد التنبيهات في مربع نص ، ونستخدم التنسيق الشرطي كما في المثال المرفق التالي بحيث يصبح لون خلفية مربع النص أحمر إذا كان هناك عدد تنبيهات ، وأخضر إذا لم يكن هناك تنبيهات . base_TN.accdb
  16. جزاك الله خيراً أخي الكريم على مجهودك هدية مقبولة منك
  17. وعليكم السلام ورحمة الله وبركاته .. الأمر ان شاء الله يسير أخي الكريم @moho58 . بدايةً لتطبيق فكرتك يجب أن نضع شرط إضافي في استعلام مصدر سجلات النموذج frm_agenda_suive في الحقل oui_non = False ليتم إظهار السجلات الغير منجزة فقط . ثانياً بما انك تريد عرض عدد السجلات في اللليبل تسمية154 في النموذج wajiha ، هنا لا بد من جعل الاستدعاء لجلب العدد في حدث عند التحميل بحيث يصبح بالشكل التالي :- Private Sub Form_Load() Me.تسمية154.Caption = DCount("*", "tab_agenda_suive", "oui_non = False") End Sub وإذا عزمت على تحويله الى مربع نص غير منضم ، فاجعل قيمة مصدر بياناته بهذا الشكل :- =DCount("*", "tab_agenda_suive", "oui_non = False") بعد تعديل المشاركة هذه ( سهوت عن إضافة فكرة عدد الأيام المتبقية للإنجاز ) قمت أولاً بإنشاء استعلام جديد ، وأضفت فيه حقول الجدول كما في السابق ولكن مع إضافة حقل جديد ، وأضفته كمصدر سجلات النموذج بدلاً من استخدام الجدول كمصدر سجلات بشكل مباشر :- عدد الأيام المتبقية: DateDiff("d",Date(),tab_agenda_suive.date_fait) لحساب عدد الأيام المتبقية من تاريخ اليوم حتى تاريخ الإنجاز المتوقع . ثالثاً وأخيراً في زر الجرس اجعل الحدث عند النقر لفتح النموذج frm_agenda_suive مثالك بعد التعديل : base_TN.accdb
  18. مشكور ، والله يعطيك العافية على مجهودك.. اتفق معك تماما في المثال 2 ، ولا أخالفك الرأي في باقي الأمثلة أو التقليل من أهمية موضوعك لا سمح الله ، لكن في الريجستري يجب ان تكون ضليعاً في التعامل معه وبحذر - كما قلت - ولكن كموضوع تم طرحه ليست الفكرة ان نقوم بإنشاء أكواد فقط ، بل دعمها بأفكار تنفيذية حتى يثبت الموضوع جدارته في ما هو قادر على فعله . كمثال وليس الحصر ، هل تستطيع من خلال الكود التعرف على البرامج المثبتة على الكمبيوتر وجلب مسار تثبيت كل برنامج والإصدار له والمساحة التي استخدمها ( مساحة مجلد البرنامج ) ... إلخ ❗وجميع هذه النقاط أفضل طريق لها هو الريجستري 😉
  19. الله يعطيك العافية على مجهودك اخي الكريم @Ahmos . عندي نقطة اذا سمحت بتوضيحها لي وهي ؛ ما الهدف من الفكرة والذي سيحققه الكود من الريجستري !!!!!! ارجو التوضيح بشكل مبسط 😇
  20. وعليكم السلام ورحمة الله وبركاته.. ما يجب التحقق منه عدة نقاط ، أذكر منها :- 1. تحقق من لغة الـ Unicode في الويندوز . 2. تنسيقات الوقت والتاريخ في الويندوز . 3. نسخة الأوفيس وإصدارها . 4. بعد النقطة 3 اذا كان الملف مفتوح المصدر قم بضغط وإصلاح القاعدة على نفس الجهاز . 5. الأصل و قبل هذا كله ، التأكد من سلامة قاعدة البيانات والتنسيقات لهذه العناصر ( مربعات النص ) ومصادر بياناتها في الجداول . 💡 هذا من وجهة نظري والله أعلم.
  21. العفو يا صديقي ، إذا انتهت مشكلتك ووجدت الحل ، قم بإغلاق الموضوع باختيار افضل اجابة 🙏
  22. اخي الكريم ، اذا كان هدفك هو فتح النموذج بشرط السجل المحدد :- DoCmd.OpenForm "calculated_frm", , , "CustomerID = " & Me!CustomerID او ، قم بالتوضيح كونك قمت بتعديل طلبك في المشاركة الأولى
  23. أهلا بك أخونا Hema24 ، نرجو ان تجد ما تحتاجه من معلومة في عالمنا المتواضع هنا . بداية عليك ان تلتزم ببعض القوانين هنا ليسهل على ما يساعدك ايجاد الحل المناسب لك بحيث :- ارفاق ملف بسيط يساعد في فهم المطلوب الذي تريده . حاول الابتعاد عن المسميات العربية والتيتتضمن مسافات في اسماء الحقول والجداول والنماذج ... الخ , وكذلك ان لا تجعل أسماء الحقول والعناصر تبدأ بأرقام ، ولا تستخدم اسماء محوزة لآكسيس مثل (Name , Date , From , To .... إلخ ) . الشرح الوافي والكافي والواضح للمطلوب مستقبلاً كي تجعل الأمر سهلاً وعسيراً على من يقدم المساعدة لك . ايضاً اهتم بالعنوان ليكون ذا دلالة على المطلوب كعنوان . الآن فيما يخص طلبك :- على افتراض ان اسم النموذج : Form1 اسم مربع النص الذي تريد نقل قيمته والموجود في النموذج : TextBox1 اسم النموذج الثاني : Form2 اسم مربع النص الذي خصائصه غير ممكن ومخفى : TextBox2 الآن لنفترض انه من خلال الزر Command2 تريد فتح النموذج الثاني Form2 ، وعليه فإن كود الزر سيكون كما يلي :- DoCmd.OpenForm "Form2", acNormal Forms!Form2!TextBox2 = Me.TextBox1 طبعاً خصائص مربع النص غير ممكن و مخفي لا علاقة لها بالحل ، وهذا مرفق بسيط لتتوضح الصورة لديك :- Test.accdb
×
×
  • اضف...

Important Information