اذهب الي المحتوي

نجوم المشاركات


Popular Content

Showing content with the highest reputation since 13 نوف, 2019 in all areas

  1. 4 points
    السلام عليكم ورحمة الله أحببت أن أشارك معكم في بخصوص هذا الموضوع بطريقة مختلفة بعض الشيء.. أرجو أن تجدوا فيها شيئا جديدا :: تنبيهات --- يتم رسم التقرير برمجيا.. --- عدد السجلات في رأس التقرير ثابتة من ناحية التصميم، متغيرة من ناحية البيانات.. - يتم تفيير البيانات في هذا المقطع وفقا لكميات البيانات.. - تستطيع كمية البيانات في هذا المقطع زيادة عدد صفحات التقرير تناسبا مع مصدر بيانات التقرير.ز - عدد السجلات المعروضة في هذا المقطع (10) سجلات لكل صفحة --- مصدر البيانات الأساسي هو الاستعلام (QRY_MATERIAL) --- يعاد بناء هذا الاستعلام كاستعلام (توحيد) بناءً على الفرضيتين التاليتين: -- التوحيد من أجل تكملة العشرة.. -- يتم إخفاء السجلات الوهمية بفحص معطيات الحقل الوهمي (TEST) - تزيد قيمة هذا الحقل كلما زادت الاستعلامات الوهمية (...،0،1،2) - البيانات الحقيقة تأخذ القيمة (0) --- إذا كانت بيانات مقطع الرأس أكبر من بيانات مصدر البيانات الأساسي -- يزيد عدد الاستعلامات الوهممية بواقع استعلام لكل (10) سجلات لزيادة عدد الصفحات -- يتم احتساب عدد الاستعلامات وتضمينها برمجيا بواسطة الإجراء (UNION_SQL) أرجو ألا تبخلوا بالنقد والتعليق😁 MATRIX REPORT.accdb
  2. 4 points
    Option Explicit Dim Criteria_Filter As String Dim Drc As String Dim Img As Object Private Sub phone_Change() If phone.Text <> "" Then phone = Format(phone, "00 00 00 00 00") End If End Sub Private Sub Txt_Filter_Change() 'تصفية بيانات بفلترة ديناميكية 'كود فلترة اسم العميل في الحقل المشار اليه 'Field:=2 بواسطة التكست البوكس If Txt_Filter <> "" Then 'في حالة إذا كانت تكست بوكس لا تساوي فراغ طبق مايلي Criteria_Filter = "*" & Sheets("AutoFilter").Txt_Filter.Text & "*" ' يعني تحديد كلي بمعنى لوأردت التصفية تكون بمعلومات غير الاسم العميل ' معيار التصفية حددنه "*" Range("B7").AutoFilter Field:=2, Criteria1:=Criteria_Filter Else Criteria_Filter = "" Sheets("AutoFilter").Range("B7").CurrentRegion.AutoFilter End If End Sub Private Sub Txt_Filter_GotFocus() Clear End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'كود جلب صورة العميل وبيانته من مسار خارجي 'استعمال الدالة Intersect وتحديد حقل الأسماء Application.ScreenUpdating = False 'Range("$C$8:$C$30")لعملية الفلترة الديناميكية If Not Intersect(Target, Range("$C$8:$C$30")) Is Nothing And Target.Count = 1 Then 'وكل اسم من الأسماء في الحقل يطابق اسم الصورة الموجود في مجلد الصور Drc = ThisWorkbook.Path & "\OFFICINA\" 'مسار مجلد الصور On Error Resume Next Shapes("Image").Delete 'حذف الصورة السابقة عند تحيد اسم العميل الحالي Clear Set Img = ActiveSheet.Pictures.Insert(Drc & Target & ".jpg") 'جلب الصورة بالاستعان بدالةActiveSheet.Pictures.Insert(Drc & Target & ".jpg") CustomerName = Intersect(Target, Range("$C$8:$C$30")) 'تصدير البيانات التكست بوكس والاستعانة بدالة vlookup code = WorksheetFunction.VLookup(CustomerName, [Data], 5, 0) gove = WorksheetFunction.VLookup(CustomerName, [Data], 4, 0) national_id = WorksheetFunction.VLookup(CustomerName, [Data], 2, 0) address = WorksheetFunction.VLookup(CustomerName, [Data], 3, 0) country = WorksheetFunction.VLookup(CustomerName, [Data], 6, 0) phone = WorksheetFunction.VLookup(CustomerName, [Data], 7, 0) With Img ' خصائص وتحريك الصورة .name = "Image" .Width = 50 .Height = 60 .Left = 680 .Top = 15 End With End If End Sub Sub Clear() On Error Resume Next CustomerName = "" code = "" national_id = "" address = "" country = "" phone = "" gove = "" Shapes("Image").Delete End Sub Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) 'الطريقة الثانية بواسطة AdvancedFilter Range("B7:J30").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Range("B4:I5"), Unique:=False End Sub Option Explicit Private Sub Workbook_Activate() Call Menu_Formating End Sub Private Sub Workbook_Open() Call Menu_Formating End Sub Option Explicit ' معادلة استخراج أكواد ومحافظات جمهورية مصر العربيةحسب مصلحة السجل المدني Function GovName(national_id As String) As String If Len(national_id) = 14 And Not IsEmpty(national_id) Then Select Case Mid(national_id, 8, 2) Case "01": GovName = "القاهرة" Case "02": GovName = "الإسكندرية" Case "03": GovName = "بور سعيد" Case "04": GovName = "السويس" Case "11": GovName = "دمياط" Case "12": GovName = "الدقهلية" Case "13": GovName = "الشرقية" Case "14": GovName = "القليوبية" Case "15": GovName = "كفر الشيخ" Case "16": GovName = "الغربية" Case "17": GovName = "المنوفية" Case "18": GovName = "البحيرة" Case "19": GovName = "الإسماعيلية" Case "21": GovName = "الجيزة" Case "22": GovName = "بني سويف" Case "23": GovName = "الفيوم" Case "24": GovName = "المنيا" Case "25": GovName = "أسيوط" Case "26": GovName = "سوهاج" Case "27": GovName = "قنا" Case "28": GovName = "أسوان" Case "31": GovName = "البحر الأحمر" Case "32": GovName = "الواد الجديد" Case "33": GovName = "مطروح" Case "34": GovName = "شمال سيناء" Case "35": GovName = "جنوب سيناء" Case "86": GovName = "مدينة الاقصر" Case "88": GovName = "خارج الجمهورية" Case Else: GovName = "راجع الرقم؟؟" End Select End If End Function Sub Menu_Formating() 'كود إخفاء شريط Ribbon With Application .ScreenUpdating = False .EnableEvents = True .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",false)" .DisplayFormulaBar = False .DisplayStatusBar = False .Caption = "استعلام مفلتر بالأسماء والصورة" With ActiveWindow .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False .DisplayGridlines = False .DisplayHeadings = False .DisplayWorkbookTabs = False End With End With End Sub الملف مدرج من مركز الخليج وهذا رابط اخر ايسر بدون كلمة سر استعلام مفلتر بالأسماء والصورة استعلام بتصفية ديناميكية بالاسماء والصورة https://www.gulf-up.com/jc2dksuow5am كلمة المرور : mo77996931 لرفع الملف من مركز الخليج دخول إلى مطور فيجوال بيسيك : كلمة المرور : mo77996931
  3. 3 points
    وعليكم السلام -تفضل اغلاق ملف اكسل بعد 5 دقائق بكود بدون تدخل من المستخدم وهذا كود اخر يمكنك استخدامه بوضعه فى حدث ThisWorkbook ____لإغلاق ملف الإكسيل بعد 50 ثانية كمدة خمول Dim xTime As String Dim xWB As Workbook Private Sub Workbook_Open() On Error Resume Next xTime = Application.InputBox("Please specify the idle time:", "KuTool For Excel", "00:00:50", , , , , 2) Set xWB = ActiveWorkbook If xTime = "" Then Exit Sub Reset End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) On Error Resume Next If xTime = "" Then Exit Sub Reset End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) On Error Resume Next If xTime = "" Then Exit Sub Reset End Sub Sub Reset() Static xCloseTime If xCloseTime <> 0 Then ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , False End If xCloseTime = Now + TimeValue(xTime) ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , True End Sub ثم اضافة هذا الكود بمديول عادى Sub SaveWork1() Application.DisplayAlerts = False ActiveWorkbook.Save ActiveWorkbook.Close Application.DisplayAlerts = True End Sub وهذا ملف للعمل مسجل عليه هذه الأكواد حفظ وإغلاق ملف إكسيل تلقائيا بعد وقت خمول معين.xlsm
  4. 2 points
    وعليكم السلام 🙂 بياناتك افقية بهذه الطريقة: . وتم تحويلها عموديا الى جعفر 1142.قاعدة البيانات1.accdb.zip
  5. 2 points
  6. 2 points
    وعليكم السلام ورحمة الله وبركاته استخدم الوحدة النمطية التالية Function strHijri(dtGregorian As Date) As String ' returns a date in Hijri format for a given western date VBA.Calendar = vbCalHijri strHijri = Day(dtGregorian) & "/" _ & Month(dtGregorian) & "/" _ & Year(dtGregorian) VBA.Calendar = vbCalGreg End Function ثم استخدم التالي في اي مكان في البرنامج =strHijri([اسم حقل التاريخ]) TEST - Copy.accdb تحياتي
  7. 2 points
  8. 2 points
    السلام عليكم 🙂 بعد النظر في الاستعلامين ، فالاستعلامين يختلفون عن بعض ، ولا يمكنك ان تحصل على نفس النتيجة !! مثال: اعمل استعلام ، واربط الاستعلام الثاني كما هو ، بالجدول. لن تحصل على النتيجة المطلوبة ، لماذا ، لأن الاستعلام الثاني فيه حقل مخفي يقوم بعمل التجميع ولكنك لم تظهر قيمته ، اذن ، اظهر الحقل الثالث في الاستعلام 2 ، واحفظ الاستعلام ، اعمل استعلام ، واربط الاستعلام الثاني بعد التعديل ، بالجدول. فإنك تحصل على النتيجة المطلوبة ، لماذا ، لأنه تم ربط الاستعلام الثاني بالجدول بكامل معاييره وتجميعه للبيانات. جعفر
  9. 2 points
    تفضل استاذ محمد وهذه هى اخر طريقة للإضافة يمكنك تعلمها من هذا الفيديو ,وليس هناك اية طرق اخرى لذلك كيفية إضافة الدوال المخصصة بشكل دائم في جميع ملفات اكسل VBA
  10. 2 points
    وعليكم السلام 🙂 اخي عبد اللطيف ، ولو اني لا اعمل مشاركة في الكثير من المواضيع ، ولكني اقرأ معظمها ، ومواضيعك بالذات 🙂 وفي الوقت الذي يتجه البعض الى عمل البرامج المعقدة المفيدة ، ارى بساطة عملك واهميته 🙂 شكرا لك 🙂 جعفر
  11. 2 points
    السلام عليكم ورحمة الله تم عمل المطلوب في الملف المرفق حيث تم ربط المعادلات برقم الحساب وليس باسم الحساب... بالنسبة لعمل ذلك بالأكواد أعتذر منك كثيرا لأني لا أجيدها كثيرا ولعل أحد الإخوة يتفضل بالقيام بذلك... بن علية حاجي ترحيل بيانات من شيت رئيسي الي شيت آخر ( بمعادلات او اكواد ) المهم 1النتيجة - ا-بن عليه (1).xls
  12. 2 points
    لو فيه حاجة وقفت معاك حاول وابعت نتيجة محاولتك وسلملى على محمد احمد والشيخ وفيق لحد ماجى بالتوفيق
  13. 2 points
    ولاثراء الموضوع جرب الاختيارات من تنسيق الخلايا باختيار تنسيق مخصص وتحديده
  14. 1 point
    استاذ @أحمد الفلاحجى تم تفعيل برنامجك
  15. 1 point
    تم رفعه بدون ضغط على الرابط التالي https://www.dropbox.com/s/xln75ppwol1961a/protection_trial.mde?dl=0
  16. 1 point
    جزاك الله خيرا استاذ الفاضل سلمت يداك تحياتي
  17. 1 point
    السلام عليكم حل آخر بمعية أعمدة إضافية وتنسيقات شرطية (الحروف المختلفة بين العمودين ليست مرتبة)... تم وضع الحل في ملف أخي سليم مع حلوله... بن علية حاجي Difference_new.xlsx
  18. 1 point
    السلام عليكم جرب المرفق على الرابط التالي اكيد مع حجم البيانات الكبير بيكون بطيئ ملاحظة بسيطة على ملفك تنسيق الشيت كامل يسبب بطئ في الملف يفضل عمل بوردر فقط لمدى البيانات وليس للشيت كامل 2020_A.xlsm
  19. 1 point
    جرب هذا البرنامج يعمل على اصدار اكسس 2010 او اعلى وشرط 32 بت محاسبة شركات الاصدار الخامس.rar
  20. 1 point
    بالطبع لا يوضع هذا الكود بموديول عادى ولكن يتم وضع الكود بحدث الصفحة التى بها المعادلات المطلوب حمايتها Protect.xlsm
  21. 1 point
  22. 1 point
    يعطيك العافية استاذ @SEMO.Pa3x وهذه الطريقة تؤدي نفس الغرض مع أمكانية التراجع
  23. 1 point
    هل يوجد برنامج تسكين طلاب على قاعات الإختبار
  24. 1 point
    وعليكم السلام 🙂 لم اسمع بهذا من قبل !! يمكن انك عملت تغيير في مصادر بيانات الاستعلام !! شوف اذا تقدر تفتح الاستعلام في وضع: 1. التصميم 2. SQL جعفر
  25. 1 point
    شاكر جدا لمجهوداتكم وجزاك الله خيرا استاذ Ali Mohamed Ali
  26. 1 point
    حياك الله 🙂 الرابط التالي فيه طريقتي لعمل اكثر من معيار وبسهولة ولكن يجب ان تقرأ الموضوع من بدايته ، حتى تستفيد بالاستفادة الكاملة 🙂 العلامات لها علاقة بنوع الحقل ، نص او رقم او تاريخ ، و السيد جمال @Elsayed Bn Gemy شرح هذا الموضوع في الرابط 🙂 جعفر
  27. 1 point
  28. 1 point
    تعديل فقط على كود الاستاذ جعفر ليعمل بالمثال جزاك الله خيرا استاذى العزيز جعفر
  29. 1 point
  30. 1 point
    انظر عدلت في استعلامك شوي .... K_1.rar
  31. 1 point
    وعليكم السلام -يمكنك تحميل هذا من هنا فلا يحتاج الى تفعيل https://www.4shared.com/rar/vx1cv9Hxca/KutoolsforExcel1650.html وهذا رابط اخر http://www.mediafire.com/file/xcvjc4oywbvonda/Kutools.for.Excel.16.50.rar/file
  32. 1 point
    السلام عليكم بالامكان التحقق من القيم اذا رحلت سابقاً لايرحلها كالتالي Sub trheel() Dim Cl As Range, i As Integer For i = 2 To 41 For Each Cl In Range("G3:G" & [G10000].End(xlUp).Row) If Not Ch(Cl, i) Then If Cl.Value = Sheets(i).Name Then Cl.Offset(0, -6).Resize(1, 7).Copy Sheets(i).Range("A" & Sheets(i).[A10000].End(xlUp).Row + 1) End If End If Next Next End Sub Private Function Ch(Cl As Range, i) As Boolean If Application.CountIfs(Sheets(i).Range("A3:A" & 1500), _ Range("A" & Cl.Row), Sheets(i).Range("B3:B" & 1500), _ Range("B" & Cl.Row), Sheets(i).Range("C3:C" & 1500), Range("C" & Cl.Row), _ Sheets(i).Range("F3:F" & 1500), Range("F" & Cl.Row)) = 1 Then Ch = True End Function
  33. 1 point
    جرب المرفق واعتذر ما انتبهت لاعادة رفعك للموضوع NR in SubForm.accdb
  34. 1 point
    تحياتي الخالصة تم عمل المطلوب بالتعديل على معادلات "الترتيب - 2" (وهي معادلات صفيف لكن لا تحتاج إلى تأكيدها بواسطة ctrl+shift+enter). أرجو أن يفي الغرض المطلوب... بن علية حاجي ترتيب اوائل الفصول.rar
  35. 1 point
    استاذ / سليم المعادلة تعمل في الملف المرفق بشكل سليم ولكن القيم التي يتم ترحيلها ليست صحيحة .. راجعها بنفسك فمثلا المفروض ان قيمه الحساب رقم 1120 باسم حساب 120 قيمته في يوم 1 هو 35 قيمه الحساب رقم 1120 باسم حساب 120 قيمته في يوم 2 هو 351.52 ولكن المرحل بالمعادلة اليوم 1 صحيح واليوم الثاني خطا .... وهكذا باقي الحسابات جزاك الله خيرا استاذي
  36. 1 point
    طيب يا اخى الحبيب واستاذى الجليل تركت لنا البرنامج بدون ان تضع كلمة مرور المستخدم واشتاق ان اطلع عليه كثيرا اين كلمة المرور
  37. 1 point
  38. 1 point
    ماشاء الله برنامج متعوب عليه ... بارك الله فيك
  39. 1 point
    مميزات الفورم السحرى 1-الفورم يستكشف جميع الجداول المصممة فى اى ملف اكسل 2- التعامل مع تلك الجداول من حذف واضافة وبحث وترحيل 4- ضبط عرض أعمدة اليست بوكس من خلال ضبط أعمدة الجدول 3- الفورم يكتشف المعادلات ويحميها تلقائيا 5- الفورم السحرى يكتشف اعمدة التواريخ تلقائيا 6- الفورم يقبل تدعيم الجداول بالصور تلقائيا 7- الفورم يحدد اوتوماتيكيا المكان الجغرافى للجداول داخل ملف الاكسل وهناك كثير للميزات ستكتشفها بنفسك عند العمل على الفورم السحرى هذا شرح مصور الاخ الرائع عماد الغازي بالمناسبة أشكره من كل قلبي على هذا الشرح جزاه الله خيرا الفورم_السحرى.rar
  40. 1 point
    تم اضافة الاصدار الثاني الي نفس الموضوع فى مركز تجميل الملفات و يتضمن هذا الاصدار تسجيل اسماء الحقول لكل من العمود و الصف المناظر للخلية ايضا نقوم بتظليل المجال المطلوب تحويله فى المصفوفة (دون عناوين الصفوف و الاعمدة) كما فى الصورة ثم نشغل الماكرو
  41. 1 point
  42. 1 point
    بارك الله فيك وجزيت خيرا والحمد لله الذى بنعمته تتم الصالحات
  43. 1 point
    بارك الله فيك استاذ أحمد بالفعل يمكنك كتابة الأرقام فقط ولكن عندما تقوم بكتابة مثلا الساعة 1 بعد الظهر يمكنك كتابتها هكذا حتى تظهر ك PM 13:00 بعد تعديل التنسيق وجعله كما بالصورة
  44. 1 point
    السلام عليكم أخي محمد انا لن اتطرق لطريقة عمل النموذج الجديد ، "لأننا" لم نلحظ المشكلة في النموذج الاصل ولكني دخلت في كود Combopn_AfterUpdate : pn = DLookup("pn", "code", "[pn]=forms!frm_dataentry!Combopn") size = DLookup("Size", "code", "[pn]=forms!frm_dataentry!Combopn") vendor = DLookup("Vendor", "code", "[pn]=forms!frm_dataentry!Combopn") Description = DLookup("Description", "code", "[pn]=forms!frm_dataentry!Combopn") Maxrl = DLookup("Maxrl", "code", "[pn]=forms!frm_dataentry!Combopn") Maxrlegyptair = DLookup("Maxrlegyptair", "code", "[pn]=forms!frm_dataentry!Combopn") ACType = DLookup("actype", "code", "[pn]=forms!frm_dataentry!Combopn") Pos = DLookup("pos", "code", "[pn]=forms!frm_dataentry!Combopn") BiasRadial = DLookup("biasradial", "code", "[pn]=forms!frm_dataentry!Combopn") code = DLookup("code", "code", "[pn]=forms!frm_dataentry!Combopn") لاحظت انك تنادي الجدول (اي تعمل استعلام للجدول) 10 مرات !! انا دائما لما اعمل برامجي ، اعمل البرنامج على اساس انه سيكون عبارة عن جزئين ، الواجهة FE ، والجداول BE ، وان الجداول BE ، ستكون في شبكة ، وان الواجهة FE ستكون لأكثر من مستخدم. لهذا السبب ، فيجب ان نقلل الزحمة في الشبكة ، وذلك بتقليل زيارة/استعلام الجداول قدر الإمكان ، وعند كل زيارة ، يجب ان نأخذ اكبر كمية من البيانات المطلوبة ، ثم نتعامل معها محليا في FE. لذلك ، فانا هنا اعطيك احد البدائل (والتي لا يعرفها الكثير ، لأنها تعمل على الاكسس 2003 فما فوق) ، فالكود التالي ، يقوم بزيارة/استعلام الجدول عن طريق DLookup مرة واحدة ، ويأخذ 10 بيانات مرة واحدة ، فلذا يمكن ان يستبدل كودك اعلاه: Dim x() As String A = DLookup("[pn] & '|' & [Size] & '|' & [Vendor] & '|' & [Description] & '|' & [Maxrl] & '|' & [Maxrlegyptair] & '|' & [actype] & '|' & [pos] & '|' & [biasradial] & '|' & [code]", "code", "[pn]=forms!frm_dataentry!Combopn") x = Split(A, "|") ' For i = LBound(x) To UBound(x) ' Debug.Print x(i) ' Next i Me.pn = x(0) Me.size = x(1) Me.vendor = x(2) Me.Description = x(3) Me.Maxrl = x(4) Me.Maxrlegyptair = x(5) Me.ACType = x(6) Me.Pos = x(7) Me.BiasRadial = x(8) Me.code = x(9) جعفر
  45. 1 point
    مرفق الحل ويمكن تعديل saudi riyal و halala Function SpellNumber(ByVal MyNumber, _ Optional pbNum As Boolean = True, _ Optional ptCur As String = "saudi riyal", _ Optional ptDec As String = "halala", _ Optional ptPlu As String = "") Dim Curr, Decm, Temp Dim DecimalPlace, Count Dim vtPHolder As String ReDim Place(9) As String Place(2) = " Thousand " Place(3) = " Million " Place(4) = " Billion " Place(5) = " Trillion " '' String representation of amount MyNumber = Trim(Str(MyNumber)) '' Position of decimal place 0 if none DecimalPlace = InStr(MyNumber, ".") '' Convert decimal part, and set MyNumber to currency amount If DecimalPlace > 0 Then vtPHolder = Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2) If pbNum = True Then Decm = GetTens(vtPHolder) Else Decm = vtPHolder End If MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) End If Count = 1 Do While MyNumber <> "" Temp = GetHundreds(Right(MyNumber, 3)) If Temp <> "" Then Curr = Temp & Place(Count) & Curr If Len(MyNumber) > 3 Then MyNumber = Left(MyNumber, Len(MyNumber) - 3) Else MyNumber = "" End If Count = Count + 1 Loop Select Case Curr Case "" Curr = "No " & ptCur & "" Case "One" Curr = "One " & ptCur Case Else Curr = Curr & " " & ptCur & "" End Select Select Case Decm Case "" Decm = " No " & ptDec & ptPlu Case "One", "01" Decm = " and " & Decm & " " & ptDec Case Else Decm = " and " & Decm & " " & ptDec & ptPlu End Select SpellNumber = Curr & Decm End Function '******************************************* ' Converts a number from 100-999 into text * '******************************************* Function GetHundreds(ByVal MyNumber) Dim Result As String If Val(MyNumber) = 0 Then Exit Function MyNumber = Right("000" & MyNumber, 3) 'Convert the hundreds place If Mid(MyNumber, 1, 1) <> "0" Then Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred " End If 'Convert the tens and ones place If Mid(MyNumber, 2, 1) <> "0" Then Result = Result & GetTens(Mid(MyNumber, 2)) Else Result = Result & GetDigit(Mid(MyNumber, 3)) End If GetHundreds = Result End Function '********************************************* ' Converts a number from 10 to 99 into text. * '********************************************* Function GetTens(TensText) Dim Result As String Result = "" 'null out the temporary function value If Val(Left(TensText, 1)) = 1 Then 'If value between 10-19 Select Case Val(TensText) Case 10: Result = "Ten" Case 11: Result = "Eleven" Case 12: Result = "Twelve" Case 13: Result = "Thirteen" Case 14: Result = "Fourteen" Case 15: Result = "Fifteen" Case 16: Result = "Sixteen" Case 17: Result = "Seventeen" Case 18: Result = "Eighteen" Case 19: Result = "Nineteen" Case Else End Select Else 'If value between 20-99 Select Case Val(Left(TensText, 1)) Case 2: Result = "Twenty " Case 3: Result = "Thirty " Case 4: Result = "Forty " Case 5: Result = "Fifty " Case 6: Result = "Sixty " Case 7: Result = "Seventy " Case 8: Result = "Eighty " Case 9: Result = "Ninety " Case Else End Select Result = Result & GetDigit(Right(TensText, 1)) 'Retrieve ones place End If GetTens = Result End Function '******************************************* ' Converts a number from 1 to 9 into text. * '******************************************* Function GetDigit(Digit) Select Case Val(Digit) Case 1: GetDigit = "One" Case 2: GetDigit = "Two" Case 3: GetDigit = "Three" Case 4: GetDigit = "Four" Case 5: GetDigit = "Five" Case 6: GetDigit = "Six" Case 7: GetDigit = "Seven" Case 8: GetDigit = "Eight" Case 9: GetDigit = "Nine" Case Else: GetDigit = "" End Select End Function تفقيط انجليزي.rar
  46. 1 point
    اخواني هذا ملف مرفق من تصميمي وللامانة استفدت من احد الملفات الموجودة لدي حتى استطعت اخراجه بهذه الطريقة والملف ليس كاملا وانما انشاء الله الفكرة تكون قد اتضحت فمن الممكن ان تقوم بربط التقرير باستعلام لعمليات اليوم فقط وبالتالي يصبح ارسال البيانات يوم بيوم وليس تراكمي ويفترض البرنامج ان البيانات ترسل لجهه معينة واحد ولكن ممكن تعديلة لتغيير العنوان المرسل الية وهكذا ..... واليكم الملف email_data.rar
  47. 1 point
    نفتح النموذج في وضع التصميم , نجده يتألف من ثلاثة أقسام : Form Header راس النموذج Detaild المحتويات FormFooter تذييل النموذج ضمن راس النموذج نجد عنوان النموذج Customers و في قسم المحتويات نجد الحقول التي اخترناها لتكون ضمن النموذج و سنعود الى هذا القسم بالتفصيل أما في التذييل فيمكن أن نضع حقول مثل مجموع , توقيت و تاريخ ,, الخ بالاطلاع على قسم المحتويات نجد كل حقل يتألف من مكونين , مربع عنوان و مربع نص مربع العنوان لايحتوي اي يبيانات و هو فقط للدلاله على اسم العنصر الذي يشير اليه مثل اسم العميل أما مربع النص فهو الذي يحتوي القيم المأخوذه من الجدول الأساسي نستطيع التحكم بخصائص مربع النص من خلال الآتي نضع المؤشر على مربع النص CompanyName اسم الشركه , ثم نضغط بالفأره باليمين نجد قائمة في نهايتها خصائص Properties نضغط عليها فتفتح لنا قائمة بها عدة عناصر الأول : تنسيق Format من خلال هذه القائمه نستطيع تنسيق الألوان و نمط الخط و تنسيق الأرقام و التاريخ .. الخ Format تنسيق شكل الأرقام و التاريخ فقط Decimal Places عدد الخانات العشريه Visisble ( مرئي ) القيمة الافتراضيه نعم نريده مرئي , لكن أحيانا نضطر لادراج مربعات نص لانريد اظهارها للمستخدم , لذلك نجعل قيمة هذا الحقل لا , فيبقى موجودا في النموذج وله حسابه لكن لن يظهر للمستخدم Display When هنا تحديد فيما اذا كنا نريد اظهار مربع النص دائما , أم عند الطباعه فقط . أو يظهر على الشاه فقط و يختفى في الطباعه Scroll Bar تثبيت زر سحب و افلات Can Grow هل النص قابل للتمدد ( اذا كانت البيانات أكبر من حجم مربع النص ) Can Shrink هل النص قابل للانكماش ( اذا كانت البيانات أصغر من حجم مربع النص ) Left – Top – Width – Hight للتحكم باحداثيات مربع النص ثم بعد ذلك مجموعة خصائص لتغيير نمط الخلفيه و الألوان .. الخ يمكنكم تنسيقها للحصول على مربعات نص جذابه . القائمه الثانيه Data بيانات هذه القائمه تحتوي : Control Source مصدر البيانات , نجد هنا أن قيمة هذا الحقل هي CompanyName في جدول العملاء , لو أردنا تغيير هذا الحقل يمكن ذلك , نفتح السهم بجانب الاسم و نجد أسماء بقية الحقول المختاره في النموذج ,نستطيع اختيار مثلا ContactName و بذلك سيعرض هذا الحقل اسم الشخص المراد الاتصال به بدلا من اسم الشركه , Input Mask قناع الادخال بالنسبه للتاريخ و الرقم Default Value القيمة الافتراضيه للحقل Validation Rule قاعدة التحقق من الصحه هنا بمجرد ادخال أي قيمه في هذا الحقل يتم اختبا رالقاعده , و تصلح هذه القاعده أكثر بالنسبه للأرقام و التواريخ Validation Text الرساله التي ستظهر في حال مخالفة القاعدة Enabled أحيانا نضطر لعرض مربعات نص غير متاحه للمستخدم , أي لاظهار قيمه معينه دون أن يكون للمستخدم حق التأشير عليها أو الوصول اليها , لذلك نجعل قيمته لا Locked مقفل , في حال أردنا منع المستخدم من التعديل على هذا الحقل حتى و لو كان متاحا نجعل قيمة هذا الحقل نعم الأحداث Events , و هذه قائمه هامه جدا و تتعلق بالأوامر التي نريد اعطاؤها للبرنامج لتنفيذ ها عند حدث معين مثل عند النقر على زر مربع النص أو عند الخروج منه أو قبل الدخول اليه ,, الخ , و هذا بحد ذاته مبحث مستقل له تعليمات و قواعد خاصه . قائمة Other مختلف وتتضمن عدة حقول , و ما يهمنا منها هو حقل الاسم Name و يجب الانتباه جيدا الى هذا الحقل اذ أنه هو الذي يتعامل معه النموذج , القيمة الافتراضيه لهذا الحقل هي نفس قيمة مصدر بيانات العنصر , أي CompanyName لكن لو قمنا مثلا بتغيير مصدر بيانات هذا النص الى ContactName كما فعلنا سابقا , فان أي قيمه تدخل في هذا الحقل , تدخل في حقل ContactName في الجدول , لكن النموذج سيتعامل مع هذا الحقل على أساس أنه CompanyName , و هذا أمر هام جدا لدى تنفيذ أوامر الفيجوال بيسيك , فالحرص يكون على اسم الحقل و ليس على مصدر البيانات . و اخيرا قائمة الكل All و تتضمن جميع القوائم السابقه
  48. 1 point
    طبعا قبل شرح كيفية تصميم العلاقات بين جداول قاعدة NorthWind لابد من الاشاره الى أن العلاقه تكون بين حقلين من جدولين - يكون لهما نفس نوع البيانات , أي لاتربط حقل نصي مع حقل رقمي , أو حقل له تنسيق رقم صحيح مع حقل له تنسيق رقم مزدوج و هكذا - أحد الحقلين يفضل أن يكون مفتاحا رئيسيا بتأمل تصميم العلاقات بين جداول قاعدة NorthWind نجد أن شكل العلاقه مثلا بين الجدولين Products – Categories على حقل رقم الشريحه في كلا الجدولين أي CatigoruID يأخذ الشكل الثاني أي تقييد بمعنى أن كل صنف يتم ادخال بياناته من جديد لابد من ملْ حقل رقم الشريحه فيه , و لكن لم يتم اختيار تتابع التحديث أو تتابع الحذف , أي الشكلين الثالث و الرابع من العلاقات المشروحه في الدرس السابق و ذلك لمنع المستخدم من تغيير رقم الشريحه أو الغاؤها طالما أن هناك أصنافا تتبع هذ الشريحه و كذلك الحال شكل بقية العلاقات حيث يربط : جدولي الموردين و الأصناف , على حقل رقم المورد في كلا الجدولين جدولي الأصناف و تفصيل الطلبيات , على حقل رقم الصنف في كلا الجدولين جدولي الطلبيات و الموظفين , على حقل رقم الموظف في كلا الجدولين جدولي الطلبيات و شركات الشحن , على حقل رقم الشاحن في كلا الجدولين جدولي الطلبيات و العملاء , على حقل رقم العميل في كلا الجدولين , مع ملاحظة أنه هنا تم اختيار نوع العلاقه الثالثه أي السماح بتعديل كود العميل في جدول العملاء , وينتقل هذا التأثير الى جدول الطلبيات بحيث يتم تعديل كل طلبيات هذا العميل حسب رقمه الجديد , و طبعا مع عدم السماح بحذف رقم العميل , لأنه في هذه الحالى سيؤدي الى حذف طلبياته كامله , و هذا خطأ و ذلك لأنه محاسيبا سيتم تسجيل كل الطلبيات بقيمها و حركاتها في المستودع , ففي حال الغاء التعامل مع هذا العميل لا يجب حذف سجله من جدول العملاء لأن ذلك سيؤدي الى حذف سجلات محاسبيه و قيود مخزنيه تؤدي الى خلل في أرصدة المستودع و في الميزان المحاسبي لذلك اذا كنا نريد الغاء هذا العميل من لائحة التعامل , يفضل اضافة حقل صح أو خطأ الى جدول العملاء , فاذا رغبنا بعدم استمرار التعامل معه يتم التأشير على حقل عدم التعامل و بالتالي لايدرج اسمه ضمن العملاء الفعالين ( هذا يتم عن طريق استعلام ) العلاقه الأخيره و هي بين جدولي الطلبيات و تفضيل الطلبيات , الربط على رقم الطلبيه في كلا الجدولين , و هنا نختار تتابع الحذف , اي مثلا لو اردنا الغاء طلبيه فيجب الغاء تفصيل طلبياتها من جدول تفصيل الطلبيات , و الا ستكون هناك أصناف وهميه تخرج من المستودع لطلبيع ملغاة , لذلك نختار تتابح الحذف , ففي حال الغاء طلبيه تلغى تلقائيا كل الصناف التي سجلت لها على جدول تفصيل الطلبيات .
  49. 1 point
    الخطوه الأهم في تصميم اي قاعدة بيانات هي وضع مخطط العمل , و لكي نعرف مخطط العمل لابد من الاحاطه بالهدف المطلوب من انشاء قاعدة البيانات . لدينا شركة NorthWind أو الرياح الشماليه , شركة تقوم بشراء وبيع البضائع , عملية الشراء غير مطروقه في هذه القاعده , و انما الاهتمام كله موجه لعملية البيع ( و طبعا بالامكان تصميم مايلزم لعمليات الشراء ) . عملية البيع تتم بناء على طلبيات مسبقه من العملاء , بحيث يتم تحديد الأصناف المطلوب ارسالها للعميل و الأسعار ووسيلة الشحن وموعد الشحن المطلوب و رقم الموظف الذي قام بتسجيل بيانات الطلبيه . بالنسبه للبضائع لابد من مراعاة أن يكون هناك مخزون متوفر حيث أن البضائع التي تم بيعها للعملاء ستخفض الرصيد الموجود بالمخازن , و طبعا في حال انخفاض هذا الرصيد عن حد اعادة الطلب , فيجب اعداد طلبية شراء لتغذية المخزون , و لكن كما ذكرنا عملية الشراء غير متطرق اليها في هذه القاعده . اذا يمكننا الآن أن نضع تصورا للجدول التي ينبغي انشاؤها حيث : - طالما لدينا بضائع يتم بيعها اذا لابد من انشاء جدول خاص بالبضائع Product - لدينا عملاء اذا نحتاج الى جدول للعملاء Customers - لدينا طلبيات اذا نحتاج الى جدول خاص للطلبيات اذ لكل عميل طلبيه مستقله Orders هذه هي الجداول الرئيسيه التي نحتاجها و سنقوم بتصميمها الآن . قبل البدء بتصميم الجداول لابد من الاشاره الى بعض التوصيات في بناء الجداول و هي : أولا : الجدول هو المادة التخزينيه للبيانات الرئيسيه , اذ يجب أن يحتوي على القيم التي لاتتأثر بغيرها اي على سبيل المثال اذا كانا نريد حساب المعادله التاليه القيمه = الكميه * سعر الوحده يمكن أن نضع حقلا للكميه المباعه و حقلا لسعر الوحده أما القيمة و التي هي عباره عن سعر الوحده * الكميه , فلا يجب أن يكون حقلا ضمن الجدول وذلك لأنه يتأثر بقيمة كل من الكمية و السعر فاذا تغير سعر الوحده فان الجدول لايستطيع حساب القيمه من تلقاء نفسه الا من خلال تشغيل كود معين , لذلك يستعاض عن هذا باستخراج القيمة من خلال استعلام يحوي حقل محسوب يساوي الكميه * السعر ثانيا : يجب فصل البيانات الخاصه بجزئيه معينه عن بعضها , مثلا الجدول الرئيسي لدينا هو جدول الطلبيات , و حيث أننا نريد أن ندخل اسم العميل في الطلبيه , و حيث أننا نحتاج بنفس الوقت لمعرفة بيانات كامله عن هذا العميل , فاذا كنا سنقوم بادخال بيانات العميل هذه كل مره في جدول الطلبيات فسيكون هذا عملا مرهقا , لذلك احتجنا أن تكون بيانات العميل في جدول مستقل تجتمع فيه بياناته الكامله , و نكتفي في جدول الطلبيات بوضع حقل واحد لرقم العميل , و بعملية الربط بين الجدولين نستطيع معرفة مانريد من بيانات عن هذا العميل . ثالثا : يفضل أن تكون استخدام الأسماء الانكليزيه لكل مكونات قاعدة البيانات و خاصة اسماء الجداول و الحقول , لأن استخدام الأسماء العربيه يسبب ارباكات أثناء العمل بالمعادلات و أكواد الفيجوال بيسيك رابعا : تجنب وضع مسافات في التسميات , مثلا اذا كنت تريد تسمية Product List فالأفضل وصلها هكذا ProductList لنبدأ الآن بتصميم الجدول الأسهل في هذه القاعده و هو جدول العملاء , و لنتصور أنه يحتوي الحقول التاليه : اسم العميل CompanyName العنوان Address المدينه City الدوله Country المنطقه Region الرمز البريدي PostalCode الهاتف Phone الفاكس Fax و سنحتاج اضافة لذلك بيانات عن الشخص الذي سنتصل به مثل اسمه ContactName و عمله الوظيفي ContactTitle و طبعا قبل كل ذلك نحتاج الى كود العميل CustomerID و هو الذي سيكون صلة الربط مع الجداول الأخرى و المفتاح الرئيسي لهذا الجدول قاعدة البيانات هذه موجوده بشكل جاهز مع الأكسس من قائمة الأدوات - أمثله , يمكن تنزيلها للاطلاع عليها , و لكن من أراد أن يستفيد أكثر فليحاول التصميم بنفسه لزيادة مهارته و ليبدأ بتصميم جدول العملاء و سنتابع ان شاء الله بقية الجداول في الدرس التالي
  50. 0 points
    ولكن ، هل اشتغل البرنامج مثل ما تريد ، او عندك ملاحظة تريد تعديل عليها !! او يعني الموضوع صار سهل ، ومافي داعي لجعفر 🙂 جعفر


×
×
  • اضف...