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

Foksh

الخبراء
  • Posts

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

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

  • Days Won

    117

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

  1. ، مع انك لو قرأت الكود الذي هو أصلاُ في مشروعك وليس مني لعرفت اين حل مشكلتك ,, على العموم الإضافة بسيطة جداً ، تفضل Me.nn1 = "A" & Me.nn add attachment.accdb
  2. تابع صديقي العزيز 20240229_203935.zip
  3. الفكرة حالياً قد تكون صغيرة ، ولكن اذا توسعت فيها بعدد الاسماء يا صديقي سيكون الأمر طويلاً , على العموم تنفيذ الفكرة تفضل مثال.accdb
  4. افتح موضوع جديد ، حتى لا يتم اغلاق الموضوع لمخالفة قواعد المنتدى
  5. في التعديل التالي قمت بتجربة الحفظ لنسختين لنفس الملف بمكانين مختلفين بدون شبكة ( لعدم وجود شبكة داخلية عندي ) ، في الكود تم انشاء متغير اسمه filepathLocal ، فقط استبدل في المسار الجزء التالي "D:\" الى مسار المجلد المستهدف على الشبكة بعنوانه الكامل add attachment.accdb
  6. يبدو أنك لم تلحظ الفرق في الكود السابق للزر صورة من سكنر على العموم تم نسخ الكود من الزر صورة من سكنر الى الزر سحب المرفق الاول من السكانر بعد التعديل عليه , تم تعديل المرفق السابق
  7. أخي الفاضل @jo_2010 الصورة في الكود لا تأخذ رقم عشوائي . بل هي تأخذ صيغة الوقت الحالي وتاريخ اليوم ( بدون فواصل ) , كما في الكود التالي في الدالة Format strFullPath = CurrentProject.Path & "\QR\" & Format(Now, "yyyymmdd_hhnnss") & ".jpg" وتستطيع استبدال هذا الجزء باي قيمة تريدها ؛ كمثال حفظ الصورة باسم المريض :- strFullPath = CurrentProject.Path & "\QR\" & Me!PName & ".jpg"
  8. نفضل صديقي ، الحل بطريقة أخرى . قاعدة بيانات_عدد السجلات.accdb
  9. يعني انت تحتاج يكون تخزين الملف بعد سحب سكانر له باسم A متبوعاً برقم الكتاب ؟ فتفضل add attachment.zip
  10. عيني عليك بارده من الحسد 🥰 ومنكم نتعلم وما زلنا معلمنا الفاضل @ابوخليل جزاك الله كل خير 🤝 انا كنت فاهم باتجاه آخر 😅
  11. جزاك الله كل خير يا صديقي .. معلومة مفيدة 😊
  12. قلتلك استراحة محارب ، خلني بس أوصل البيت وأصحصح استأنف 😎
  13. الفكرة وصلت ، لكن راسي صف على اليمين وأخذ استراحة محارب .. محتاج منك طلب بسيط ,, اتعب معي شوي وان شاء الله تنحل مشكلتك اعمل لي نموذج حسب فكرتك بحيث يكون عند المقارنة بين (رئيس مهندسين) و (مدير) تكون القيم موجودة فعلاً وليس تصوراً .. يعني A تساوي GradNo B تساوي Txt_h C تساوي Txt_e <<<<< صحيح ولا لأ . يعني كيف أجعل المقارنة في التطابق (رئيس مهندسين) و (مدير) بدون توافر شروط البحث
  14. هذه انتهينا منها المفروض ,, هذه النقطة التي لم استوعبها ، فما الحاجة للبحث داخل كل الحقول في السجل المحدد ؟؟؟؟؟؟؟؟؟؟؟ ام تريد ان تكون القيمة في B اذا كانت موجودة في أحد الحقول في السجل المحدد فيكون التطابق موجود وإذا لم تكن القيمة في أي من الحقول ضمن نفس السجل فتكون الحالة عدم تطابق ؟؟؟؟
  15. أستاذ @Ahmed_J ، خليني افهم حبة حبة لأن احياناً استيعابي يكون بطيء حبتين بعد الأكل .. هالحين انت محتاج من تختار من القائمة B يروح يعمل بحث في كل الحقول - حتى لو عددهم 50 - اللي سجلها رقمه يطابق GradeNo في القائمة A . انا عملت الـ GradeNo رقم 8 يساوي كاتب في الحقلين باعتبار وجود أكثر من حقل في الجدول . وعند اختيار رقم 8 من النموذج من A وتختار اي اختيار في B غير كاتب رح تكون النتيجة انه عدم تطابق في البيانات .. ومن تختار كاتب ما رح يظهر رسالة . الحين هذا اللي انا دخت وأنا أشرحه صحيح ولا لا سمح الله غلط . هذا الكود اللي خرجت فيه بالنهاية ، والمرفق أسفله :- Private Sub B_AfterUpdate() Dim db As DAO.Database Dim rs As DAO.Recordset Dim sql As String Dim found As Boolean Dim field As DAO.field found = False Set db = CurrentDb sql = "SELECT * FROM TP2 WHERE GradeNo = " & Me.A Set rs = db.OpenRecordset(sql) If Not rs.EOF Then found = True rs.MoveFirst For Each field In rs.Fields If field.Name <> "GradeNo" And field.Value <> Me.B Then found = False Exit For End If Next field End If rs.Close If found Then MsgBox "بيانات متطابقة", , "" Else 'If Not found Then MsgBox "بيانات غير متطابقة", , "" End If End Sub Test-1.accdb
  16. طيب ، خلينا نجرب تضييق النطاق في الحصول على اسماء الحقول Dim rs As DAO.Recordset Dim field As DAO.Field Set rs = CurrentDb.OpenRecordset("SELECT * FROM TP2 WHERE 1=0") For Each field In rs.Fields fieldName = field.Name fieldValue = Nz(DLookup(fieldName, "TP2", "GradeNO=" & Me.A), "") If Me.B <> fieldValue Then MsgBox "البيانات غير متطابقة" Undo Exit Sub End If Next field rs.Close Set rs = Nothing
  17. اسمح لي بمداخلة لولبية أستاذ @Ahmed_J ، طبعاً بعد إذن معلمي @ابوخليل يمكننا استخدام حلقة تكرارية تقوم بالتحقق من قيمة Me.B في كل سجل دون حاجتنا الى تحديد اسماء الحقول أو رؤوس الأعمدة ، كمثال يمكن أستخدام حلقة For Each كما في الكود التالي ,, Dim i As Integer Dim fieldName As Variant Dim fieldValue As Variant For Each field In CurrentDb.TableDefs("TP2").Fields fieldName = field.Name fieldValue = Nz(DLookup(fieldName, "TP2", "GradeNO=" & Me.A), "") If Me.B <> fieldValue Then MsgBox "البيانات غير متطابقة" , , "" Undo Exit Sub End If Next field قم بالتجربة حسب تصميمك وأبلغني بالنتيجة
  18. أخي الكريم ، كلاهما سيكون له نفس النتيجة حسب الكودين If Me.text1.Value = "" Then Me.text2 = 1 Else Me.text2 = 2 End If If IsNull(Me.text1) Then Me.text2 = 1 Else Me.text2 = 2 End If لا أعتقد أنك ستلحظ الفرق يا صديقي
  19. كنصيحة ، ابتعد عن الحقول المحسوبة داخل الجداول بالنسبة لطلباتك ، فتستطيع تنفيذ الجميع بانشاء حقل محسوب وتحقق شروطك ؛ باستثناء هذا الطلب الحقل الثاني يجب ان يكون اقل من الاول او يساويه
  20. اعتقد وجهة نظرك غير سديدة وغير صحيحة ، فالمطلوب ان يكون رقم الكتاب فريد وغير متكرر لا في صادر ولا في وارد ؛ وإلا فما الفائدة من ان يكون رقم الكتاب هو الرابط بين الكتب والأوليات ؟؟ مثل أن تبحث عن طالب في مدرسة لطلابها ارقام تتشابه والصف يتشابه والعمر يتشابه لكن معلم الصف يختلف !!!!!!!!!
  21. تفضل أخي الكريم .,, عدم تكرار .accdb
  22. أيضاً تابع هذا الموضوع قد يفيدك لأستاذنا @ابوخليل
  23. في النقطة الأولى في الفرق بين IsNull و "" ستكون النتيجة نفسها تقريباً ولن تلحظ الفرق بينهم . فعلى سبيل المثال:- IsNull Dim txt1 As Variant txt1 = Nothing If IsNull(txt1) Then MsgBox "القيمة فارغة" Else MsgBox "القيمة غير فارغة" End If "" Dim txt1 As String txt1 = "" If txt1 = "" Then MsgBox "القيمة فارغة" Else MsgBox "القيمة غير فارغة" End If طبعاً الفرق بين المتغيرين هو أن Variant نوع من المتغيرات التي يمكنها تخزين أي نوع من البيانات ، كالبيانات نصية ، أو الأرقام ، أو التواريخ ، أو أي نوع آخر من البيانات. أما String فهو نوع من المتغيرات التي يتم استخدامها لتخزين النصوص فقط كالتي تحتوي على سلاسل النصوص مثل "Hello World"، "1234"، "abc123". هذا من وجهة نظري ، وإن كان لأحد الإخوة توضيح أفضل ؛ فأقف جانبك للاستفادة والتعلم بشكل أوضح 🤗
  24. لعدم توافر جهاز كمبيوتر حالياً قم بتطبيق الآتي بعد إنشاء نموذج فارغ وإنشاء مربعي نص فارغين ( بدون مصدر بيانات ) . في مربع النص الأول ( افترض اسمه Txt1 ) وفي حدث بعد التحديث انشىء الكود التالي كتجربة :- msgbox me.txt1 & "القيمة في مربع النص هي :- " الآن اكتب اي كلمة تجريبية داخل Txt1 واضغط انتر أو تاب للخروج للمربع الثاني ، وسترى النتيجة. أما في حدث عند التغيير ، اتبع الخطوات السابقة ولكن الفرق هو اسم مربع النص الثاني ولنفرض Txt2 ، وهنا ستلاحظ انه عند كل حرف تكتبه او تحذفه ستظهر لك الرسالة كنتيجة التغيير في كل مرة يتم ذلك 🥰 اصنع الفكرة بيدك لتتوضح لك الفكرة 😊
×
×
  • اضف...

Important Information