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

jjafferr

أوفيسنا
  • Posts

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

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

  • Days Won

    404

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

  1. تفضل المرفق 🙂 1041.Database1.accdb.zip
  2. اخي حسنين 🙂 بدل ان تكتب If isnull(Me.Pname) = false or Me.Pname = "" Then يمكنك استبدالهما بهذا السطر If Len(Me.Pname & "") = 0 Then جعفر
  3. وانا الآن قمت بنسخ الكود ، وكله تمام !! يعني المؤشر لا ينتقل لحقل آخر ، اذا كان الحقل فارغ (طبعا اذا كتبت نقطة او مسافة ، فلا يُعتبر الحقل فارغ ، وهنا يجب ان تغير اعدادات الحقل حتى يلتزم بالبيانات اللي في القائمة فقط). جعفر
  4. وعليكم السلام 🙂 في الحدث "قبل التحديث" للحقل pname تأكد من وجود قيمة ، هكذا مثلا: if len(me.pname & "")=0 then 'لا توجد قيمة في الحقل ، اذن لابد من اشعار المستخدم msgbox "الحقل فارغ، رجاء ادخال قيمة فيه" cancel=true exit sub end if جعفر
  5. وعليكم السلام 🙂 الحل في هذه الاختيارات: جعفر
  6. السلام عليكم 🙂 وندوز 10 ، ويا ريت تسمع اسمك يا دكتور حلبي ، حتجنن لما تسمع الست تقوله 🙂 جعفر
  7. 2- استعلام Crosstab يقدر ان يقوم مقام الجدول ، واذا فهمت قصدك صح في قولك: لا يتم تحديثه بشكل تلقائي ، فقصدك اسماء الاعمدة تزيد وتنقص حسب البيانات الموجودة ، مما يعطيك اخطاء في التقرير ، لذا انصحك قراءة هذا الرابط لأن فيه الحل (حقول ثابته ، كما في الجدول) : كلامي عن Column Heading ، واذا عندك معيار في الاستعلام ، فيجب النظر في Parameters كذلك : . . . 1- ولو اني لا انصح بالقيام بعمل جدول مؤقت (لأنه يزيد من حجم قاعدة البيانات , لا ترجع قاعدة البيانات الى حجمها الطبيعي إلا بعد الضغط والاصلاح) ، ولكن اذا كان كلا ولابد ، فرجاء ارفق الجدول النهائي بجميع اسماء الجهات ، 3- ما كان قصدي ربط بين الاكسس والاكسل ، وانما مجرد تصدير ملف من الاكسس الى مجلد ، ومنه يقرأه الاكسل 🙂 وبغض النظر اي طريق اردت ان تأخذ ، فمحتاجين بيانات اكثر ، وخصوصا عدد الجهات يكون صحيح 🙂 جعفر
  8. وعليكم السلام ورحمة الله وبركاته 🙂 عملت تغيير في اسماء الحقول في النموذج ، حتى تشير الى نوع الحقل المطلوب العمل عليه ، والنتيجة: . . وهذا هو الكود في حدث فتح التقرير Private Sub Report_Open(Cancel As Integer) 'keep orignal widths in a temp place 'num If Len(Me.num.Tag & "") = 0 Then Me.num.Tag = Me.num.Width End If 'name If Len(Me![name].Tag & "") = 0 Then Me![name].Tag = Me![name].Width End If 'tel If Len(Me.tel.Tag & "") = 0 Then Me.tel.Tag = Me.tel.Width End If 'now take the required fields from Form1 'num If Forms!Form1!chk_num = -1 Then Me.num.Width = Me.num.Tag Me.num.Visible = True Else Me.num.Width = 0 Me.num.Visible = False End If 'name If Forms!Form1!chk_name = -1 Then Me![name].Width = Me![name].Tag Me![name].Visible = True Else Me![name].Width = 0 Me![name].Visible = False End If 'tel If Forms!Form1!chk_tel = -1 Then Me.tel.Width = Me.tel.Tag Me.tel.Visible = True Else Me.tel.Width = 0 Me.tel.Visible = False End If End Sub جعفر 1039.Database1.accdb.zip
  9. اخي الفاضل ، رجاء اخراج ملف الاكسس من برنامج الضغط الى سطح المكتب ، ثم افتحه مباشرة 🙂
  10. تفضل ، هذا اللي قدرت ان اصلحه من مرفقك ، والرابط اللي اعطيتك لم يستطع عمل الاصلاح ، فاستعملت احد برامج الاصلاح ، واما النماذج والتقارير ، فتقدر تستوردهم من احد برامجك السابقة 🙂 جعفر 1038.ACCOUNT - Fixed.accdb.zip
  11. وعليكم السلام 🙂 عذرا بوحسين ، انا فقط اشتغلت على النموذج Form1 ، فيجب عليك عمل تغيير على الكود في النموذج الآخر ليتماشى مع متغيرات النموذج الآخر 🙂 جعفر
  12. يعني انزلت المرفق اللي انا عدلت عليه ، وما اشتغل ؟ شو الخطأ اللي يطلع لك؟ هل لما تشغل البرنامج ، يطلع لك شريط اصفر في اعلى البرنامج ، وفيه زر Active او تفعيل ؟ جعفر
  13. انا كذلك عندي وندوز 10 وكله تمام ، نعم اذكر انه صارت هذه الحاله على احد الكمبيوترات سابقا ، واعتقد تنصيب Adobe Acrobat reader حل المشكلة 🙂 جعفر
  14. تفضل 🙂 بما انك تريد المقارنه تكون عن طريق الحقول التالية مجتمعه: [رقم المادة] و [النتيجة] و [الصفة] ، لا مو كفاية هذه الحقول ، وانما اردت هذه الحقول من جميع السجلات تكون متطابقه ، لهذا السبب ، العلاقة العادية بين الحقول في الاستعلام لم تؤدي الغرض ، ولهذا اضطررنا اللجوء للكود في الوحدة النمطية ، واذا تلاحظ ، بيانات الاستعلام qry_All هي نفسها بيانات الجدول tab_result ، ولكن الاختلاف هو في طريقة فرز الحقول ، واحدة بعد الاخرى في الاستعلام ، وذلك لتنظيم المقارنه 🙂 الوحدة النمطية المسؤوله عن العمل هي: Public Function All_Grades(ID) 'ID = رقم الطالب Dim rst As DAO.Recordset Dim RC As Integer Dim i As Integer Dim Result As String Set rst = CurrentDb.OpenRecordset("Select * From qry_All Where [رقم الطالب]=" & ID) rst.MoveLast: rst.MoveFirst: RC = rst.RecordCount For i = 1 To RC Result = Result & "_" & rst![رقم المادة] & "-" & rst![النتيجة] & "-" & rst![الصفة] rst.MoveNext Next i All_Grades = Mid(Result, 2) rst.Close: Set rst = Nothing End Function جعفر 1033.stu.accdb.zip
  15. الملف يظل مثل ما هو ، ولا استبدال عنصر ولا شيء ، بس خلي ملفات PDF في المجلد booksindex ، ويكون هذا المجلد في نفس مجلد البرنامج (يعني مثل ما ارفقته انت في ملفك) 🙂 جعفر
  16. السلام عليكم 🙂 جرب هذه الطريقة: جعفر
  17. انا متفق معاك ، لابد ان يكون للصادر او الوارد رقم واحد موحد على جميع الاجراءات ، ولكن كلامي كان عن الاجراءات ، فبالاضافة الى تاريخ المعامله ، فقد تم طلب اعطاء رقم فرعي لهذه المعاملة ، لسهولة التخاطب برقمها ، مثلا : مثلا قدمت على طلب اجازة وتم تقييدها في صادر القسم برقم 25 في 1-1 الساعة 10.5 وردت لمكتب المدير بنفس الرقم وتاريخ 1-1 وردت لمكتب الموظف مرة ثانية لأن المدير عنده استفسار ، بنفس الرقم وتاريخ 1-1 وردت لمكتب المدير بنفس الرقم وتاريخ 1-1 احيلت للموارد البشرية قسم الوارد بتاريخ 1-1 (طبعا نتكلم عن موظف عنده واسطة 🙂 ) فبدل ان يُشار للمعامله بإسم فلان اللي بعد فلان .... ، فيُشار اليها برقم فرعي ، كالتالي: 25.0 مثلا قدمت على طلب اجازة وتم تقييدها في صادر القسم برقم 25.0 في 1-1 الساعة 10.5 25.1 وردت لمكتب المدير بنفس الرقم وتاريخ 1-1 25.2 وردت لمكتب الموظف مرة ثانية لأن المدير عنده استفسار ، بنفس الرقم وتاريخ 1-1 25.3 وردت لمكتب المدير بنفس الرقم وتاريخ 1-1 25.4 احيلت للموارد البشرية قسم الوارد بتاريخ 1-1 (طبعا نتكلم عن موظف عنده واسطة 🙂 ) جعفر
  18. السلام عليكم 🙂 فكرة عمل جدول واحد للصادر والوارد نابع من تشابه الحقول ، ومثل ما قال الاخ kha9009lid : . ولكن وحسب علمي في احد المؤسسات ، فكان كتاب الوارد له رقمه الخاص ، ولكن تم طلب اعطاء المعامله رقم فرعي لكل خطوة تمر بها (يعني تحويل المعامله من الموظف الى رئيس القسم لإبداء رأيه ، ثم الى مدير الدائرة للموافقة ، ثم قد يكون عند المدير استفسار فيُرجع المعامله الى رئيس القسم). فصحيح ممكن استيعاب هذا كجزء من جدول واحد ، ولكن قد تحتاج الى جدولين او حتى ثلاث جداول لهذه الحركات 🙂 جعفر
  19. مو على قولك ، ما كنت ادري نوع البكتيريا ، فقلت يالله نتعامل مع الاثنين 🙂 جعفر
  20. والآن مادامت الوحدة النمطية Isolate تقوم بالعمل على طول ، جربها على البكتيريا حياك الله 🙂 جعفر
  21. وعليكم السلام 🙂 اهلا وسهلا بك في المنتدى 🙂 التعديلات المطلوبة على برنامجك: . واضافة الكود على حدث بعد التحديث لحقل البحث . والنتيجة: . جعفر 1036.جديد.accdb.zip
  22. وعليكم السلام 🙂 ولكن السؤال هنا ، كم حقل تريد في الجدول الجديد؟ هل يعني انك كلما زادت عندك المواد ، تزيد عدد الحقول في الجدول برمجيا؟ طبعا ممكن ، ولكن هذه ليست الطريقة الصحيحة في عمل جداول قواعد البيانات ، والطريقة الصحيحة هي التي عملتها في جدولك ، هكذا . والطريقة الصحيحة لحل مشكلتك هي استعلام Crosstab 🙂 وسؤالي هنا ، ليش ما تريد تستعمل Crosstab ، صحيح له عيوبه ، ولكن له ميزاته كذلك 🙂 الاختيار الآخر اللي يجي في بالي ، هو تصدير البيانات بالطريقة اللي تريدها الى الاكسل بصيغة csv مثلا 🙂 جعفر
  23. هممم طريقة غير متعودين عليها ، ولكن هذا حال قواعد البيانات ، وخصوصا اذا جابوا البيانات من الاكسل ، حيث يخلطون البيانات 🙂 بيانات الجدول ، الاستعلام qry_1 ، ولاحظ كيف ننادي الوحدة النمطية Isolate ونخبرها شو التصفية اللي نريدها (عربي ، انجليزي ، ارقام ، علامات) ، ونرسل لها قيمة الحقل ، وبما اننا عملنا حقل لكل لغة ، فتعطينا كل قيمة في حقلها ، بينما الاستعلام qry_2 ، يأخذ تصفيتة من الحقل cmb_Lang من النموذج Form1 ، ويعطينا فقط تصفية الحقل Name . والتجربة . الطريقة اللي جاءت على بالي ، هي استعمال Ascii كل حرف من حروف الخط ، وهو رقم الحرف ، وهي ارقام ثابته بغض النظر عن نوع الخط المستعمل ، هذا الجدول الاصل لجميع حروف وحركات اللاتينية/الانجليزي، وهنا قيمة Asc موجودة في العمود Dec . وهذا جدول الحروف العربية ، من https://www.aivosto.com/articles/stringopt3.html . الوحدة النمطية Isolate : تقوم الوحدة النمطية ، وعلى اساس اللغة المطلوبة (والتي يتم ارسالها من الاستعلام ، مع القيمة) ، بقراءة كل حرف من القيمة ، وعلى اساس اللفة و الحرف ، يتم اخذ قيمته الـ Asc للحرف (وقد يكون من الافضل استعمال AscW ، كون القيمة تحتوي على حروف UTF-8 او Unicode) ، ويقوم بجمعها ، ورد القيمة الى الاستعلام: Public Function Isolate(Lang As String, str As String) As String 'Lang = "E" = "English" 'Lang = "N" = "Numbers" 'Lang = "C" = "Characters" 'Lang = "A" = "Arabic" Dim i As Integer Dim curAsc As Integer Dim curChr As String Dim con As String For i = 1 To Len(str) curChr = Mid(str, i, 1) 'one character at a time curAsc = Asc(curChr) 'Asc of that character If Lang = "E" And ((curAsc > 64 And curAsc < 91) Or (curAsc > 96 And curAsc < 123)) Then '65 to 90 capital letters, 97 to 122 small letters con = con & curChr ElseIf Lang = "N" And (curAsc > 47 And curAsc < 58) Then '48 to 57 capital letters con = con & curChr ElseIf Lang = "C" And ((curAsc > 31 And curAsc < 48) Or _ (curAsc > 57 And curAsc < 65) Or _ (curAsc > 90 And curAsc < 97) Or _ (curAsc > 122 And curAsc < 127)) Then '32 to 47, 58 to 64, 91 to 96, 123 to 126 con = con & curChr ElseIf Lang = "A" And curAsc > 127 Then 'Extended Ascii , > 127 con = con & curChr End If Next i Isolate = con End Function جعفر 1034.Filter.accdb.zip
  24. وعليكم السلام 🙂 حيا الله اخوي محمد 🙂 هذا مجرد حقل عادي ، فيه بيانات مختلفة ، وبلغات مختلفة ، شو المشكلة !! يمكنك التصفية بقيمة الحقل كاملة ، او عن طريق Like : جعفر
  25. السلام عليكم 🙂 اخوي ابو عبدالله 🙂 تفضل المرفق ، ان شاء الله يكون هو المطلوب 🙂 لما افضى شوي ، ان شاء الله اشرح طريقة العمل 🙂 بس لوسمحت تخبرنا اذا هذا هو طلبك ، وان النتيجة صحيحة 🙂 جعفر 1033.stu.accdb.zip
×
×
  • اضف...

Important Information