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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. مافي مانع ، ولكنك لن تحتاج لها اذا كان ادخال البيانات عن طريق النموذج ، واختيار القيم فيها 🙂 وفي النموذج تعمل كود للتأكد ان الحقل غير فارغ. جعفر
  2. اخي احمد انت بدأت بمخالفة قوانين المنتدى ، بوضع اكثر من سؤال عن نفس الموضوع ، ولم تتواصل في الموضوع السابق !! رجاء المتابعة هناك اريد المساعدة فى استرداد ملفات قاعدة بيانات اكسس - قسم الأكسيس Access - أوفيسنا (officena.net) يُغلق جعفر
  3. ممكن ، مافي مانع ، المهم انه ليس في الجدول ، في الجدول tbl_C ، تقدر تعمل LVL2 لمجموعة الاثنين و LVL3 لمجموعة الثلاثة ، يمكنك استعمال اياً من الاستعلامين ، وهنا يأتي دور التوضيح للمستخدم ، ممكن ان يكون فيه وصف المادة مثلا ، خصوصا اذا كانت الاختيارات تحتاج الى توضيح اكثر ، او انك تكتب فيها ما يساعدك على الاختيار الصحيح 🙂 جعفر
  4. وعليكم السلام 🙂 واهلا وسهلا بك في المنتدى 🙂 رجاء قراءة قوانين المنتدى قبل وضع مشاركات ، حتى تستفيد الاستفادة القصوى من المنتدى ومن وقتك 🙂 انزل البرنامج الذي في المرفق : جعفر
  5. وعليكم السلام 🙂 هناك مجموعة ممنوعات يجب على المبرمج التقيد بها ، واول نقطة في قائمة الممنوعات هي السماح بالمستخدم بادخال البيانات في الجدول مباشرة. البرنامج يحتاج الى مجموعة خطوط حماية ، بحيث لما البيانات توصل للجدول ، يكون المبرمج قد قام بتصفيتها في النموذج او الاستعلام بواسطة الكود او المعايير ، او حتى التحكم في اذا اكثر من شخص ادخل المعلومة في نفس اللحظة : جعفر
  6. لا تأثير 🙂 1. صحيح انك حاليا لا تحتاج اليه ، ولكن قد تحتاج اليه في المستقبل ، 2. لا توجد علاقة بين كم مرة هذا الحقل موجود في الجداول ، مثلا: معلومات الحقل LVL تكتبها مرة واحدة في الجدول tbl_C ، ثم تستعملها لأكثر من جدول. لا تنسى انت فقط تقرأ/تختار من هذا الجدول ، ولكنك تحفظ المعلومة التي تم اختيارها في بقية الجداول ، واذا بعد تجربتك لازلت تحتاج الى توضيح ، ارفق مثال فيه نفس الحقل مكرر في اكثر من جدول 🙂 3. مافي اي مشكلة 🙂 جعفر
  7. وعليكم السلام 🙂 اتبع هذه الخطوات . . . . . . نعمل جدول tbl_Grades وفيه الحقول المطلوبة من ملف الجدول الذي استوردناه من الاكسل . والان نعمل استعلام الحاقي ، لنعبء به البيانات المطلوبة الى الجدول tbl_Grades ، ويجب ملاحظة الصورة اعلاه ، حيث نرى تسميات الجدولين . لنحصل على البيانات فقط ، يجب عمل معيار لأحد الحقول (الحقل الاسهل لي كان حقل obs) ، ونضع امر بإستبعاد السجلات التي لا نريد ان نلحقها في جدول tbl_Grades . والنتيجة نظيفة وجاهزة للإلحاق . . والنتيجة النهائية . جعفر import_from_Excel.zip
  8. السلام عليكم 🙂 عند عمل اي برنامج ، يجب ان تحسب حساب اصعب الظروف لتعديل البرنامج ، لذلك ، ترى الاقتراح بأن يكون برنامجك مقسوم واجهة وجداول ، وعدم استخدام خاصية Lookup في الجدول ، وطبعا هناك اشياء اخرى ، حيث انه: لا يُسمح للمستخدم ادخال البيانات مباشرة في الجدول ، تحت اي ظرف كان ، عادة يكون البرنامج مستخدم من مجموعة مستخدمين في شبكة واحدة ، او من مستخدمين في مواقع ومدن/دول مختلفة ، ليس من السهولة الوصول اليهم لعمل التعديل ، لذا هذه النصائح هي لتسهيل عمل التعديل وارساله للمستخدم ، وبتنصيب البرنامج او وضع البرنامج في مكانه الصحيح ، نجعل البرنامج يعمل بالتعديلات الجديدة وبأقل تدخل من المستخدم ، فإذا كان البرنامج مقسوم واجهة وجداول ، فيمكننا التعديل على الواجهة ، وارسالها للمستخدم ، فيقوم البرنامج بربط نفسه مع الجداول بطريقة تلقائية (طبعا برمجيا نقوم بهذه العملية) ، ويعمل البرنامج بالتعديل ، ولكن السؤال ، كيف ممكن ان نعمل تعديل على الجداول؟ نعم برمجيا ممكن ان نعمل كود في الواجهة لتعديل الجداول ، ولكن هناك خطر كبير على البيانات لسبب او آخر ، ولا تنسى ان قيمة البرنامج في بياناته ، ولعمل التعديل ، يجب ان تكون الجداول مغلقة ، وان الكهرباء لن تنقطع خلال هذا التعديل ، وان لا يأتي حفيدك ويضرب بيده على لوحة المفاتيح ويلخبط الدنيا ، ووووو ، لهذا السبب ، نبتعد عن تعديل الجداول (وهناك من المبرمجين من يضع بعض الحقول الاضافية في الجداول ، ليس لها عمل ، واذا دعت الحاجة لحقل جديد ، فيستخدم احد هذه الحقول المجهزة مسبقا) ، ونجعل التعديل في الواجهة فقط. اما عمل Lookup في الجداول ، فبالاضافة الى صعوبة تغيير مكوناته (لا تقول ما بيحتاج الى تعديل ، كان غيرك اشطر منك ، ووقع في الفخ) ، فالصعوبة الاخرى هي لما تحتاج الي مساعدة في تعديل هذا البرنامج من مبرمج آخر ، فيضطر المبرمج لعمل مجموعة روابط بين الجداول ليصل الى المطلوب (ولازلت اعاني من احد البرنامج المرفوعة في المنتدى لعمل تعديل عليها). هنا يأتي المبتدئ ليقول ، طيب اذا فيه جميع هذه المشاكل ، ليش اكسس اعطانا هذه الخاصية ، والجواب انها مثل بعض الخواص الاخرى التي قد نستخدمها في ظروف خاصة جدا ومحكمة ، مثل الحقل المحسوب وحقل المرفقات. الطريقة الصحيحة لتعوضنا عن Lookup الجداول ، هي وضع هذه القيم في جدول آخر ، ثم بالاستعلام نربط الجدولين لنحصل على اسم القيمة بدل عن رقمها ، ويمكننا عمل جدول منفصل لكل نوع من انواع البيانات وعمل العلاقات بين الجداول(وهي الطريقة المتعارف عليها ، وهي الطريقة التي انت قمت بعملها) ، وهناك طريقة اخرى ، وهي دمج جميع هذه البيانات في جدول واحد (وبدون علاقات بين الجداول) ، وانا اقترح عليك هذه الطريقة. هكذا يكون الجدول . ولما نريد بيانات Type1 ، نعمل الاستعلام ، سواء استعلام بحد ذاته وله اسم ، او استعلام في اعدادات مصدر الصف ، حقل مربع التحرير والسرد ComboBox أو مربع القوائم ListBox . فنحصل على (وطبعا يمكنك اخفاء حقل الاسم لأنه غير لازم) . وهنا في النموذج/التقرير ، نستعمل حقل مربع التحرير والسرد 🙂 جعفر 1359.MusndWZwayid.accdb.zip
  9. استعلام لهاي . واستعلام لهاي . والنتيجة
  10. وعليكم السلام 🙂 سهلة ، في الاستعلام ، اذا الحقول اللي تريد تقارنهم A و B ، المعادلة تصبح : R: iif([A] = [B] , "OK" , "Not OK") ولتلافي الحقول الفارغة R: iif(nz([A],"|") = nz([B],"|") , "OK" , "Not OK") وعلشان الحبايب ، وعلشان تشوف كيف ان الحروف العربية قلبت الكود R: iif(nz([A],"|") = nz([B],"|") , "كله تمام يا معلم" , "لا لا ، الموضوع يحتاج تدخل من المعلم الكبير علشان يشوف لنا المشكله دي") وبعدين استخدم المعيار لتصفية "Not OK" 🙂 جعفر
  11. لهذا السبب ، الطريقة الافضل لك ، هي عمل سؤال جديد ، حتى يستطيع الاعضاء المعاصرون من الرد على سؤالك ، وبسرعة 🙂 جعفر
  12. اخي اسلام 🙂 هذا الموضوع من 12 سنه ، فلا تتوقع رد من اصحابه !! هذا الرابط سيفيدك : اجعل برنامجك يعمل على النواتين 32بت و 64بت - قسم الأكسيس Access - أوفيسنا (officena.net) جعفر
  13. الحمدلله 🙂 غير صحيح ، والصحيح ان الارقام يتم التعامل معها بطريقة اسرع في قواعد البيانات 🙂 اما سبب قلب الرموز ، فهي بسبب اللغة العربية ، ولكن لا تهتم بهذا التغيير ، لأن الكمبيوتر يقرأها بالطريقة الصحيحة ، كما في العمود الذي على اليمين : . والدليل ان الكود يقارن بين الحلقين ، ويأتي بالنتيجة الصحيحة 🙂 جعفر
  14. رجاء تجرب النتيجة الان 🙂 اصبحت الدالة هكذا: Function Add_RMZ() On Error GoTo err_Add_RMZ Dim rstT As DAO.Recordset Dim rstR As DAO.Recordset Dim rstX As DAO.Recordset Set rstT = CurrentDb.OpenRecordset("Select * From TAB") Set rstR = CurrentDb.OpenRecordset("Select * From TAB_RMZ") Set rstX = CurrentDb.OpenRecordset("Select * From TAB_RMZ_X") rstT.MoveFirst Do Until rstT.EOF rstR.MoveFirst Do Until rstR.EOF 'Debug.Print 'Debug.Print rstR!RMZ, rstT!NASS 'Debug.Print "-----------------" If InStr(rstT!NASS, rstR!RMZ & " ") > 0 Or InStr(rstT!NASS, rstR!RMZ & vbCrLf) > 0 Then 'Found it 'But is it already in TAB_MRZ_X rstX.FindFirst "[MNO]=" & rstT!MNO & " And [RMZno]=" & rstR!RMZno If rstX.NoMatch Then rstX.AddNew rstX!MNO = rstT!MNO rstX!RMZno = rstR!RMZno rstX.Update End If 'rstX.NoMatch End If 'InStr rstR.MoveNext Loop 'rstR rstT.MoveNext Loop 'rstT Exit_Add_RMZ: rstT.Close: Set rstT = Nothing rstR.Close: Set rstR = Nothing rstX.Close: Set rstX = Nothing MsgBox "Done" Exit Function err_Add_RMZ: If Err.Number = 3021 Then Else MsgBox Err.Number & vbCrLf & Err.Description End If Resume Exit_Add_RMZ End Function . جعفر 1361.RMZ02.accdb.zip
  15. استعملت هذه الدالة: Function Add_RMZ() On Error GoTo err_Add_RMZ Dim rstT As DAO.Recordset Dim rstR As DAO.Recordset Dim rstX As DAO.Recordset Set rstT = CurrentDb.OpenRecordset("Select * From TAB") Set rstR = CurrentDb.OpenRecordset("Select * From TAB_RMZ") Set rstX = CurrentDb.OpenRecordset("Select * From TAB_RMZ_X") rstR.MoveFirst rstT.MoveFirst Do Until rstR.EOF Start_Here: 'Debug.Print 'Debug.Print rstR!RMZ, rstT!NASS 'Debug.Print "-----------------" If InStr(rstT!NASS, rstR!RMZ) > 0 Then 'Found it 'But is it already in TAB_MRZ_X rstX.FindFirst "[MNO]=" & rstT!MNO & " And [RMZno]=" & rstR!RMZno If rstX.NoMatch Then rstX.AddNew rstX!MNO = rstT!MNO rstX!RMZno = rstR!RMZno rstX.Update End If End If If rstR.EOF = False And rstT.EOF = False Then rstR.MoveNext ElseIf rstT.EOF Then Exit Do End If Loop If rstR.EOF = True And rstT.EOF = False Then rstR.MoveFirst rstT.MoveNext GoTo Start_Here End If Exit_Add_RMZ: rstT.Close: Set rstT = Nothing rstR.Close: Set rstR = Nothing rstX.Close: Set rstX = Nothing MsgBox "Done" Exit Function err_Add_RMZ: If Err.Number = 3021 Then Else MsgBox Err.Number & vbCrLf & Err.Description End If Resume Exit_Add_RMZ End Function . واعرف فيها ملاحظات 😁 جعفر 1361.RMZ02.accdb.zip
  16. انا فهمي بطيء بعض الاوقات 😁 رجاء اعطني مثالين اثنين ، علشان اقدر اقتدي بهم 🙂 جعفر
  17. على العموم ، هذا عملك وانت ادرى به 🙂 وشو المطلوب الآن ، هل نفس الطلب حسب السؤال ، او الحل الغريب (اللي محتاجين تفاصيله ، ومثال عليه) 🙂 جعفر
  18. وعليكم السلام 🙂 السؤال ، ما فائدة هذا العمل ؟ جعفر
  19. وهنا يأتي الابداع ، كل مبرمج يتفنن في عمله 🙂 للتجربة ، قمت بإستخدام الكود من الرابط ، ونتيجة الجدول كانت غير صحيحة/كاملة : . لذا ، فهذا الميدان يا حميدان ، تستطيع الاستفادة من ذاك الكود وتطوعه لحاجتك ، او بالتحليل تفهم ملف النص ، وتشارك في كود يعمل 🙂 جعفر
  20. وانا سأوضح قصد اخوي ابو ابراهيم ، ولكن بالنظر في الملف بطريقة اخرى ، ليست الشفرة ، وانما استيراد البيانات الى جدول مؤقت ، وباستعلامات إلحاقية 🙂 - عملت برنامج اكسس جديد ، ثم استوردت من ملف النص IAS_Out_Cs_Detail.txt ، ثم نتابع طريقة الاكسس التلقائية لإستيراد الملف الى جدول جديد tbl_tmp ، وبدون تنظيف ، - عملت نسخ لجميع بيانات الجدول والصقتها في صفحة اكسل ، حتى يكون التحليل سهل : الحقول الصفراء والبرتقالية والمربع الاحمر ، هي معلومة واحدة ، اي ان جميع هذه الحقول لسجل واحد (رجاء المتابعة لشرح هذا) ، الحقول الصفراء متكررة مرتين ، فمثل ما قال اخوي ابو ابراهيم ، ممكن جعلها في جدول مستقل ، وفي الكود اشار اليه (If row Like) ("مركز*"Then ) ، الحقول البرتقالية كذلك ممكن جعلها في جدول مستقل (ElseIf row Like) ("الحساب*" Then) ، ونلاحظ بأن الحقول ابتداءً من field16 لسنا بحاجة اليها ، لأنها موجودة في المربع الاحمر ، وهذا ما اشار اليه اخوي ابو ابراهيم لما قال: "يوجد في هذا الملف بيانات خارجة عن الصف" ، والبيانات في المربع الاحمر هي للجدول الثالث ، وهذا الجدول يجب ان يحتوي على "رقم سجل" للجدول الاول ، و "رقم سجل" للجدول الثاني : . وبهذه الطريقة ، نعمل استعلام الحاقي لبيانات كل جدول ، واستعمال المعايير المناسبة لتنظيف البيانات قبل ادخالها للجدول 🙂 طريقة العمل تكون : 1. الاكسس يعمل اول جدول تلقائيا ، ونطلب منه ان لا يستورد الحقول التي لا حاجة لنا بها ، ثم في نهاية نطلب منه حفظ طريقة الاستيراد : . 2. نعمل استعلام الحاقي لكل جدول (قد نحتاج الى 3 استعلامات او اكثر) ، وتنظيف البيانات بإستخدام المعايير المناسبة ، 3. ثم عمل كود ليقوم بعمل 1 (طبها الاستيراد سيكون من نفس اسم الملف ولن يتغير ، فلابد لنا من عمل طريقة لهذه النقطة) و 2 🙂 وطبعا كود اخوي ابو ابراهيم جاهز وانظف واسهل للفهم 🙂 جعفر
  21. وعليكم السلام 🙂 بما انك اخترت ان تكون الصورة خلفية للنموذج (وليست كائن مستقل) ، فالصورة سيتغير مكانها بحجم الشاشة اذا استعملت Center (اي انها ستكون في منتصف الشاشة دائما) : . لذا وجب عليك استعمال Top Left بحيث مكانها لا يتغير ، ومن البداية ، العب في الصورة ، واضف المساحات الفارغة التي تحتاج اليها من فوق ومن اليسار ، وعلى اساسها سيكون الزر دائما ثابت 🙂 جعفر
  22. وعليكم السلام 🙂 تحتاج ان تعمل مجلد آمن : جعفر
  23. انت ارفقت 3 ملفات ، بالاضافة الى ملفك الاصل ، فيصبحوا 4 ملفات ، فهل هذا مجموع الملفات ، او ان هناك ملفات اخرى قد تخرج في المستقبل ؟ طلبك في انشاء جدول خاص (وبعدين استعلامات ، ونماذج ، وتقارير لكل جدول) لكل ملف لا يتماشى مع نظام قواعد البيانات ، فالطريقة الصحيحة هي استخدام نفس الجداول الموجودة ، ولكن بإضافة حقل يميز كل نوع من انواع الملفات . جعفر
×
×
  • اضف...

Important Information