بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
9975 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
406
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو jjafferr
-
وعليكم السلام 🙂 اتبع هذه الخطوات . . . . . . نعمل جدول tbl_Grades وفيه الحقول المطلوبة من ملف الجدول الذي استوردناه من الاكسل . والان نعمل استعلام الحاقي ، لنعبء به البيانات المطلوبة الى الجدول tbl_Grades ، ويجب ملاحظة الصورة اعلاه ، حيث نرى تسميات الجدولين . لنحصل على البيانات فقط ، يجب عمل معيار لأحد الحقول (الحقل الاسهل لي كان حقل obs) ، ونضع امر بإستبعاد السجلات التي لا نريد ان نلحقها في جدول tbl_Grades . والنتيجة نظيفة وجاهزة للإلحاق . . والنتيجة النهائية . جعفر import_from_Excel.zip
-
السلام عليكم 🙂 عند عمل اي برنامج ، يجب ان تحسب حساب اصعب الظروف لتعديل البرنامج ، لذلك ، ترى الاقتراح بأن يكون برنامجك مقسوم واجهة وجداول ، وعدم استخدام خاصية Lookup في الجدول ، وطبعا هناك اشياء اخرى ، حيث انه: لا يُسمح للمستخدم ادخال البيانات مباشرة في الجدول ، تحت اي ظرف كان ، عادة يكون البرنامج مستخدم من مجموعة مستخدمين في شبكة واحدة ، او من مستخدمين في مواقع ومدن/دول مختلفة ، ليس من السهولة الوصول اليهم لعمل التعديل ، لذا هذه النصائح هي لتسهيل عمل التعديل وارساله للمستخدم ، وبتنصيب البرنامج او وضع البرنامج في مكانه الصحيح ، نجعل البرنامج يعمل بالتعديلات الجديدة وبأقل تدخل من المستخدم ، فإذا كان البرنامج مقسوم واجهة وجداول ، فيمكننا التعديل على الواجهة ، وارسالها للمستخدم ، فيقوم البرنامج بربط نفسه مع الجداول بطريقة تلقائية (طبعا برمجيا نقوم بهذه العملية) ، ويعمل البرنامج بالتعديل ، ولكن السؤال ، كيف ممكن ان نعمل تعديل على الجداول؟ نعم برمجيا ممكن ان نعمل كود في الواجهة لتعديل الجداول ، ولكن هناك خطر كبير على البيانات لسبب او آخر ، ولا تنسى ان قيمة البرنامج في بياناته ، ولعمل التعديل ، يجب ان تكون الجداول مغلقة ، وان الكهرباء لن تنقطع خلال هذا التعديل ، وان لا يأتي حفيدك ويضرب بيده على لوحة المفاتيح ويلخبط الدنيا ، ووووو ، لهذا السبب ، نبتعد عن تعديل الجداول (وهناك من المبرمجين من يضع بعض الحقول الاضافية في الجداول ، ليس لها عمل ، واذا دعت الحاجة لحقل جديد ، فيستخدم احد هذه الحقول المجهزة مسبقا) ، ونجعل التعديل في الواجهة فقط. اما عمل Lookup في الجداول ، فبالاضافة الى صعوبة تغيير مكوناته (لا تقول ما بيحتاج الى تعديل ، كان غيرك اشطر منك ، ووقع في الفخ) ، فالصعوبة الاخرى هي لما تحتاج الي مساعدة في تعديل هذا البرنامج من مبرمج آخر ، فيضطر المبرمج لعمل مجموعة روابط بين الجداول ليصل الى المطلوب (ولازلت اعاني من احد البرنامج المرفوعة في المنتدى لعمل تعديل عليها). هنا يأتي المبتدئ ليقول ، طيب اذا فيه جميع هذه المشاكل ، ليش اكسس اعطانا هذه الخاصية ، والجواب انها مثل بعض الخواص الاخرى التي قد نستخدمها في ظروف خاصة جدا ومحكمة ، مثل الحقل المحسوب وحقل المرفقات. الطريقة الصحيحة لتعوضنا عن Lookup الجداول ، هي وضع هذه القيم في جدول آخر ، ثم بالاستعلام نربط الجدولين لنحصل على اسم القيمة بدل عن رقمها ، ويمكننا عمل جدول منفصل لكل نوع من انواع البيانات وعمل العلاقات بين الجداول(وهي الطريقة المتعارف عليها ، وهي الطريقة التي انت قمت بعملها) ، وهناك طريقة اخرى ، وهي دمج جميع هذه البيانات في جدول واحد (وبدون علاقات بين الجداول) ، وانا اقترح عليك هذه الطريقة. هكذا يكون الجدول . ولما نريد بيانات Type1 ، نعمل الاستعلام ، سواء استعلام بحد ذاته وله اسم ، او استعلام في اعدادات مصدر الصف ، حقل مربع التحرير والسرد ComboBox أو مربع القوائم ListBox . فنحصل على (وطبعا يمكنك اخفاء حقل الاسم لأنه غير لازم) . وهنا في النموذج/التقرير ، نستعمل حقل مربع التحرير والسرد 🙂 جعفر 1359.MusndWZwayid.accdb.zip
-
-
وعليكم السلام 🙂 سهلة ، في الاستعلام ، اذا الحقول اللي تريد تقارنهم 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" 🙂 جعفر
-
كود لاستعراض المجلدات و الحصول على مسار المجلد
jjafferr replied to ابراهيم - ابو ريان's topic in قسم الأكسيس Access
لهذا السبب ، الطريقة الافضل لك ، هي عمل سؤال جديد ، حتى يستطيع الاعضاء المعاصرون من الرد على سؤالك ، وبسرعة 🙂 جعفر -
كود لاستعراض المجلدات و الحصول على مسار المجلد
jjafferr replied to ابراهيم - ابو ريان's topic in قسم الأكسيس Access
اخي اسلام 🙂 هذا الموضوع من 12 سنه ، فلا تتوقع رد من اصحابه !! هذا الرابط سيفيدك : اجعل برنامجك يعمل على النواتين 32بت و 64بت - قسم الأكسيس Access - أوفيسنا (officena.net) جعفر -
الحمدلله 🙂 غير صحيح ، والصحيح ان الارقام يتم التعامل معها بطريقة اسرع في قواعد البيانات 🙂 اما سبب قلب الرموز ، فهي بسبب اللغة العربية ، ولكن لا تهتم بهذا التغيير ، لأن الكمبيوتر يقرأها بالطريقة الصحيحة ، كما في العمود الذي على اليمين : . والدليل ان الكود يقارن بين الحلقين ، ويأتي بالنتيجة الصحيحة 🙂 جعفر
-
رجاء تجرب النتيجة الان 🙂 اصبحت الدالة هكذا: 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
-
استعملت هذه الدالة: 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
-
انا فهمي بطيء بعض الاوقات 😁 رجاء اعطني مثالين اثنين ، علشان اقدر اقتدي بهم 🙂 جعفر
-
على العموم ، هذا عملك وانت ادرى به 🙂 وشو المطلوب الآن ، هل نفس الطلب حسب السؤال ، او الحل الغريب (اللي محتاجين تفاصيله ، ومثال عليه) 🙂 جعفر
-
وعليكم السلام 🙂 السؤال ، ما فائدة هذا العمل ؟ جعفر
-
وهنا يأتي الابداع ، كل مبرمج يتفنن في عمله 🙂 للتجربة ، قمت بإستخدام الكود من الرابط ، ونتيجة الجدول كانت غير صحيحة/كاملة : . لذا ، فهذا الميدان يا حميدان ، تستطيع الاستفادة من ذاك الكود وتطوعه لحاجتك ، او بالتحليل تفهم ملف النص ، وتشارك في كود يعمل 🙂 جعفر
-
وانا سأوضح قصد اخوي ابو ابراهيم ، ولكن بالنظر في الملف بطريقة اخرى ، ليست الشفرة ، وانما استيراد البيانات الى جدول مؤقت ، وباستعلامات إلحاقية 🙂 - عملت برنامج اكسس جديد ، ثم استوردت من ملف النص IAS_Out_Cs_Detail.txt ، ثم نتابع طريقة الاكسس التلقائية لإستيراد الملف الى جدول جديد tbl_tmp ، وبدون تنظيف ، - عملت نسخ لجميع بيانات الجدول والصقتها في صفحة اكسل ، حتى يكون التحليل سهل : الحقول الصفراء والبرتقالية والمربع الاحمر ، هي معلومة واحدة ، اي ان جميع هذه الحقول لسجل واحد (رجاء المتابعة لشرح هذا) ، الحقول الصفراء متكررة مرتين ، فمثل ما قال اخوي ابو ابراهيم ، ممكن جعلها في جدول مستقل ، وفي الكود اشار اليه (If row Like) ("مركز*"Then ) ، الحقول البرتقالية كذلك ممكن جعلها في جدول مستقل (ElseIf row Like) ("الحساب*" Then) ، ونلاحظ بأن الحقول ابتداءً من field16 لسنا بحاجة اليها ، لأنها موجودة في المربع الاحمر ، وهذا ما اشار اليه اخوي ابو ابراهيم لما قال: "يوجد في هذا الملف بيانات خارجة عن الصف" ، والبيانات في المربع الاحمر هي للجدول الثالث ، وهذا الجدول يجب ان يحتوي على "رقم سجل" للجدول الاول ، و "رقم سجل" للجدول الثاني : . وبهذه الطريقة ، نعمل استعلام الحاقي لبيانات كل جدول ، واستعمال المعايير المناسبة لتنظيف البيانات قبل ادخالها للجدول 🙂 طريقة العمل تكون : 1. الاكسس يعمل اول جدول تلقائيا ، ونطلب منه ان لا يستورد الحقول التي لا حاجة لنا بها ، ثم في نهاية نطلب منه حفظ طريقة الاستيراد : . 2. نعمل استعلام الحاقي لكل جدول (قد نحتاج الى 3 استعلامات او اكثر) ، وتنظيف البيانات بإستخدام المعايير المناسبة ، 3. ثم عمل كود ليقوم بعمل 1 (طبها الاستيراد سيكون من نفس اسم الملف ولن يتغير ، فلابد لنا من عمل طريقة لهذه النقطة) و 2 🙂 وطبعا كود اخوي ابو ابراهيم جاهز وانظف واسهل للفهم 🙂 جعفر
-
المساعدة تنسيق زر داخل النمودج مع الصورة
jjafferr replied to ازهر عبد العزيز's topic in قسم الأكسيس Access
وعليكم السلام 🙂 بما انك اخترت ان تكون الصورة خلفية للنموذج (وليست كائن مستقل) ، فالصورة سيتغير مكانها بحجم الشاشة اذا استعملت Center (اي انها ستكون في منتصف الشاشة دائما) : . لذا وجب عليك استعمال Top Left بحيث مكانها لا يتغير ، ومن البداية ، العب في الصورة ، واضف المساحات الفارغة التي تحتاج اليها من فوق ومن اليسار ، وعلى اساسها سيكون الزر دائما ثابت 🙂 جعفر- 1 reply
-
- 1
-
-
عند فتح البرنامج تظهر رسالة إشعار الأمان (معدل)
jjafferr replied to أبو. سعود's topic in قسم الأكسيس Access
وعليكم السلام 🙂 تحتاج ان تعمل مجلد آمن : جعفر -
انت ارفقت 3 ملفات ، بالاضافة الى ملفك الاصل ، فيصبحوا 4 ملفات ، فهل هذا مجموع الملفات ، او ان هناك ملفات اخرى قد تخرج في المستقبل ؟ طلبك في انشاء جدول خاص (وبعدين استعلامات ، ونماذج ، وتقارير لكل جدول) لكل ملف لا يتماشى مع نظام قواعد البيانات ، فالطريقة الصحيحة هي استخدام نفس الجداول الموجودة ، ولكن بإضافة حقل يميز كل نوع من انواع الملفات . جعفر
-
الظاهر هذه رسالة من اعدادات امان الوندوز ، فانا لا تظهر لي هذه الرسالة لما افتح الملف من : الكمبيوتر المحلي ، من الشبكة ، من الانترنت !! جرب هذه الطريقة ActiveX WebBrowser القديمة ، وطريقتك موجودة ولكنها مخفية ، ويمكنك حذفها لاحقا. جعفر 1360.1.نسخ الملفات.accdb.zip
-
آمين يا رب العالمين 🙂
-
هذا كل اللي عملته: Option Compare Database Dim web As Object ' Private Sub Form_Current() If Len(Me.txtPath & "") = 0 Then web.Navigate "about:blank" Else web.Navigate Me.txtPath End If End Sub Private Sub Form_Open(Cancel As Integer) Set web = Me.WebBrowser28.Object End Sub جعفر 1360.نسخ الملفات.accdb.zip
-
بما ان المرفق واضح ، ولكي تستفيد وتعرف مكان الخطأ في كودك ، رجاء ارفاق ما عملته 🙂 جعفر
-
طلب مساعدة بخصوص طباعة من يوزر فوورم
jjafferr replied to Prince Mo3taz's topic in منتدى الاكسيل Excel
عفوا الاخ هاني قد تستغرب من قدرة الاساتذة في الرد على الكثير من المواضيع ، وبدون مرفق ، واذا احتاجوا اليه ، فسيطلبونه 🙂 جعفر -
وعليكم السلام 🙂 الجواب هنا جعفر
-
هذا كل اللي تحتاج اليه : dim strQuery as string strQuery="Sale_Daily" DoCmd.OpenQuery strQuery جعفر