-
Posts
2166 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
55
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Moosak
-
المساعدة فى ربط 3 نماذج فرعية فى نموذج رئيسي
Moosak replied to أكسس وبس's topic in قسم الأكسيس Access
بهذا التصميم أحس أنك صعبت الموضوع .. الأصل أن النموذج الرئيسي يكون معتمد على جدول العملاء مباشرة ( وممكن على استعلام مربوط بجدول العملاء ) .. وتربط النموذجين الآخرين برقم العميل مباشرة .. بهذا تلقائيا لما تضيف عميل جديد بيفضى عندك النموذجين الآخرين وبياخذن نفس رقم العميل .. أما بالتصميم الأخير ستضطر لإعطاء النماذج الفرعية رقم العميل الجديد عن طريق الأكواد برمجيا وسالفة طويلة .. 🙂 -
أخي محمد عبدالله .. لتطبيق الدوال التي تفضل بها أخي محمد البرناوي .. أكتب هكذا : Dim i As Integer, k As Integer k = Me.NumberTxt ' تخزن القيمة الموجودة في مربع النص في المتغير For i = 1 To k << تضع هنا الأمر المراد تكراره >> Next i 🙂
-
المساعدة فى ربط 3 نماذج فرعية فى نموذج رئيسي
Moosak replied to أكسس وبس's topic in قسم الأكسيس Access
نعم ممكن أخي العزيز .. بس بحتاج وقت لأني ما أشتغل على الكمبيوتر يوم الجمعة 🙂 ولعل الاخوة يقومون بالواجب 👍🏼 -
المساعدة فى ربط 3 نماذج فرعية فى نموذج رئيسي
Moosak replied to أكسس وبس's topic in قسم الأكسيس Access
-
منك العذر أستاذنا محمد @Barna تطفلت عليكم 😅 ما ركزت في ردك ، عملت الطريقة بسرعة قبل لا تطير الفكرة من راسي 😁 وهذي فكرة أخرى جميلة ، من مفكر عبقري 😉👌
-
موضوع ثري ما شاء الله تبارك الرحمن 🙂 الله يوفقك عمي جعفر ويطول ويبارك في عمرك 🌹
-
مرحبا أخي @عبدالعزيز محمد 🙂 أنشأت لك هذه الدالة ، تأخذ الرقم القومي فتقوم بطرح سنة الميلاد من السنة الحالية للحصول على عمر الطالب بالسنوات .. بعدها يتم توزيع الطلاب على مراحلهم بناءا على العمر ، وطبعا سوف تتغير المرحلة تلقائيا في الأعوام القادمة لأن الدالة تحسب العمر تلقائيا 🙂 Public Function AutoStage(IDNum As String) As String Dim bYear As Integer bYear = CInt(Mid(IDNum, 2, 4)) 'تستخلص سنة الميلاد من الرقم القومي bYear = Year(Date) - bYear ' تطرح سنة الميلاد من هذا العام لمعرفة العمر الحالي 'Debug.Print bYear 'توزيع المرحلة على حسب العمر الحالي للطالب Select Case bYear Case Is = 3: AutoStage = "حضانه" Case Is = 4: AutoStage = "روضه" Case Is = 5: AutoStage = "تمهيدي" Case Is = 6: AutoStage = "الأول" Case Is = 7: AutoStage = "الثاني" Case Is = 8: AutoStage = "الثالث" Case Is = 9: AutoStage = "الرابع" Case Is = 10: AutoStage = "الخامس" Case Is = 11: AutoStage = "السادس" Case Is = 12: AutoStage = "السابع" Case Is = 13: AutoStage = "الثامن" Case Is = 14: AutoStage = "التاسع" Case Is = 15: AutoStage = "أول ثانوي" Case Is = 16: AutoStage = "ثاني ثانوي" Case Is = 17: AutoStage = "ثالث ثانوي" Case Else: AutoStage = "" End Select End Function ثم وضعتها في مربع نص (محسوب) مصدره الدالة التي تغذيها بالرقم القومي فتحسب لك تلقائيا المرحلة .. ملاحظة : ( تحتاج أن تضع في الحسبان حالات الرسوب وإعادة السنة الدراسية ) 🙂 Aziz(Moosak).zip
-
الأخ عبدالعزيز .. 🙂 أضف في الجدول عدة سجلات كأمثلة يمكن التطبيق عليها .. بحيث يكون فيها أمثلة من السجل الوطني .. لأنه يتغير من دولة لأخرى ..
-
اضافة شرط بحث بين تاريخين لمربع بحث في النموذج
Moosak replied to athal1's topic in قسم الأكسيس Access
وعليكم السلام أخي athal1 🙂 عدل سطر الفلتر إلى هذا : Me.Form.Filter = " [ItemName] LIKE '*" & filter_data & "*' And [InvoiceDate] BETWEEN #" & Me.Text1 & "# AND #" & Me.Text2 & "#" هنا : -
الفلترة حسب نص محدد موجود ضمن الجملة النصية_ تم تعديل العنوان
Moosak replied to MAHERABOUSMRA's topic in قسم الأكسيس Access
أهلا بك أخي ماهر في المنتدى 🙂 لجعل القائمة المنسدلة تتفلتر ( يتم تصفيتها ) على مجموعة محددة من البيانات ، عليك أن تكتب الفلتر الذي تريده في المعيار أسفل الحقل من خلال الاستعلام .. فمثلا لو كنت تريد الاقتصار على الأسماء التي تحوي الاسم "ماهر" سواء في بدايته أم الوسط أم آخره .. تكتب في المعيار هذه الجملة : like "*ماهر*" حيث تعني النجمة (*) أنه لا يهم ما قبلها أو ما بعدها .. المهم أن يكون "ماهر" موجودا .. أما إذا كنت ستحدد الاسم بنفسك في كل مرة من خلال مربع نص في النموذج .. فبدل كلمة "ماهر" سوف تشير إلى مربع النص ذلك الموجود في النموذج هكذا : Like "*" & Forms!FormName!TextBoxName.Text & "*" ( طبعا الفراغات الكبيرة وضعتها لفهم الفكرة فقط ، ستضع فراغ واحد فقط مكانها ) وسيتبقى فقط أنك ستضع (أمر) لتحديث القائمة المنسدلة بعد أن تكتب الاسم الذي تريده في مربع النص .. وهذا الأمر سيكون عند حدث ( بعد التحديث ) أو ( عند التغيير ) لمربع النص هكذا : Me.ComboBoxName.requery -
نعم أخي قاسم يمكننا قراءة الجملة هكذا : أضف إلى Insert Into الجدول التالي ... Tbl_DBContent تحديداً الحقلين التاليين .. (Type, sName) والقيم المراد إضافتها بالتتالي values القيم هي : objectName , rs!Name حيث أن objectName هو اسم متغير أخزن فيه نوع العنصر و rs!Name هو اسم العنصر حسب مصدر السجلات --------------------------------------------------------------- و التنسيق الصحيح الذي نضع عليه المتغيرات في الكود هكذا : ;values ( ' " & objectName & " ',' " & rs!Name & " ' ) وضعنا علامة التنصيص المفردة حوالي المتغيرات ( ' ) لأنهما من نوع نص .. ولو كانا من نوع تاريخ نستبدلهما بــ ( # ) .. أما لو كانا من نوع رقم فنحذفهما ولا يوضع شي مكانهما .. تم وضع المتغير بين علامتي التنصيص (" ") والرمز & لأن المتغير (من اسمه فإن قيمته تتغير غير ثابته ) لذلك نخرجه من الجملة ذات القيمة الثابتة بهذه الطريقة: " & objectName & " هذا درس على السريع .. بالتوفيق 🙂
-
أهلا بك أخي قاسم 🙂 قمت بعمل تعديلات بسيطة على النموذج المرفق وخرجت بهذه النتيجة : التعديلات التي تمت كالتالي : 1 - أضفت جدول من حقلين : ( نوع العنصر ، واسم العنصر ) 2 - أضفت جملة ال SQL التالية إلى الكود : CurrentDb.Execute "Insert Into Tbl_DBContent(Type, sName) values ('" & objectName & "','" & rs!Name & "');" وظيفتها أن تضيف كل عنصر تأتي به إلى الجدول وتكتب نوعه 🙂 3 - أحضرت الجدول إلى النموذج الرئيسي على شكل نموذج فرعي لعرض البيانات . 4 - زر ( به أمر ماكرو ) لتصدير بيانات الجدول إلى الصغية التي تريدها .. هذا والسلام 🙂 DBObjectsإحضار جميع عناصر قاعدة أخرى.rar
-
-
إضافة للكود الذي تفضلت به أخي ABOLO2 في الموضوع الآخر .. ستجد في هذا الموضوع دالة تفضل بها المهندس العزيز @jjafferr تقوم بنفس العملية ولكن يجمع لك السنوات والشهور في سطر واحد .. ولكن بعدها يمكنك فصل السنوات والشهور والأيام بدالة Split كما وضح الأستاذ جعفر : 🙂
-
بعد إذن أستاذنا جعفر 🙂 تضعها في حدث عند عدم وجود بيانات أو On No Data للتقرير.
-
وحدة لحساب الفرق بين تاريخين بالسنين و الشهور و الايام
Moosak replied to ِAbo_El_Ela's topic in قسم الأكسيس Access
شكرا لك أخي @ABOLO2 🙂 على هذا المجهود الطيب .. ملاحظة : جرب استخدام هذا الخيار من لوحة التنسيق لإرفاق الأكواد : وستظهر لك بهذه الطريقة المنظمة والجميلة 🙂 : Sub test() 'و هذه هي طريقة الاستدعاء Debug.Print DatDiffY(#1/1/2020#, Date) ' السنوات Debug.Print DatDiffM(#1/1/2020#, Date) ' الأشهر Debug.Print DatDiffD(#1/1/2020#, Date) ' الأيام End Sub Function DatDiffY(Vdate1 As Date, Vdate2 As Date) As Integer Dim year1 As Integer Dim year2 As Integer Dim year3 As Integer Dim month1 As Integer Dim month2 As Integer Dim month3 As Integer Dim day1 As Integer Dim day2 As Integer year1 = Int(DatePart("yyyy", Vdate1)) year2 = Int(DatePart("yyyy", Vdate2)) month1 = Int(DatePart("m", Vdate1)) month2 = Int(DatePart("m", Vdate2)) day1 = Int(DatePart("d", Vdate1)) day2 = Int(DatePart("d", Vdate2)) If month2 < month1 Or day2 < day1 Then If (year2 - year1) - 1 < 0 Then DatDiffY = 0 Else DatDiffY = (year2 - year1) - 1 End If Else DatDiffY = year2 - year1 End If End Function Function DatDiffM(Vdate1 As Date, Vdate2 As Date) As Integer Dim day1 As Integer Dim day2 As Integer Dim month1 As Integer Dim month2 As Integer Dim month3 As Integer Dim year1 As Integer Dim year2 As Integer Dim dateC1 As Date day1 = Int(DatePart("d", Vdate1)) day2 = Int(DatePart("d", Vdate2)) month1 = Int(DatePart("m", Vdate1)) month2 = Int(DatePart("m", Vdate2)) year1 = Int(DatePart("yyyy", Vdate1)) year2 = Int(DatePart("yyyy", Vdate2)) If month2 < month1 Or day2 < day1 Then If month2 < month1 And day2 > day1 Then month3 = month2 + 12 DatDiffM = (month3 - month1) End If If month2 < month1 And day2 < day1 Then month3 = (month2 + 12) - 1 If (month3 - month1) - 1 < 0 Then DatDiffM = 0 Else DatDiffM = (month3 - month1) End If End If If month2 > month1 And day2 < day1 Then DatDiffM = (month2 - month1) - 1 End If Else DatDiffM = month2 - month1 End If End Function Function DatDiffD(Vdate1 As Date, Vdate2 As Date) As Integer Dim day1 As Integer Dim day2 As Integer Dim month1 As Integer Dim month2 As Integer Dim month3 As Integer Dim year1 As Integer Dim year2 As Integer Dim year3 As Integer Dim dateC1 As Date day1 = Int(DatePart("d", Vdate1)) day2 = Int(DatePart("d", Vdate2)) month1 = Int(DatePart("m", Vdate1)) month2 = Int(DatePart("m", Vdate2)) year1 = Int(DatePart("yyyy", Vdate1)) year2 = Int(DatePart("yyyy", Vdate2)) If day2 < day1 Then month3 = month2 - 1 dateC1 = DateSerial(year2, month3, day1) DatDiffD = DateDiff("d", dateC1, Vdate2) Else DatDiffD = day2 - day1 End If End Function -
المساعدة فى عدم تكرار البيانات بعد تشغيل استعلام الحاق
Moosak replied to أكسس وبس's topic in قسم الأكسيس Access
جرب وضع معيار معرف العميل في الاستعلام .. تماما كما فعلت لمعرف الأقساط هكذا مثلا (تأكد من الرابط) : [Forms]![paymentcuss]![CustomersID] 🙂 -
وعليكم السلام ورحمة الله وبركاته أخي طاهر 🙂 رسمت لك هذه الصورة التوضيحية لمعرفة كيف يتم عمل روابط متسلسلة بين الجداول : لو اتبعت تصميم الجداول بهذه الطريقة فسيسهل عليك بإذن الله عمل القوائم المنسدلة 🙂
-
برنامج الصادر والوارد ( الارشفة الالكترونية ) محتاج الى اضافة ضرورية
Moosak replied to gadelrab's topic in قسم الأكسيس Access
وعليكم السلام ورحمة الله وبركاته أخي gadelrab 🙂 هناك أكثر من طريقة لفتح الملفات (الروابط) خارج قاعدة البيانات .. منها على سبيل المثال : (1) followhyperlink ("C:\Document\File.Jpg") (2) تضع هذا الكود في موديول وتناديه في المكان المطلوب : Public Sub OpenPath(strPath As String) Shell "explorer.exe" & " " & strPath, vbNormalFocus End Sub وتناديه كالتالي : OpenPath "C:\Document\File.Jpg" (3) تضع هذا الكود في موديول وتناديه في المكان المطلوب : Public Sub OpenFilePath(sFilePath As String) CreateObject("Shell.Application").Namespace(0).ParseName(sFilePath).InvokeVerb "Open" End Sub وتناديه كالتالي: OpenFilePath "C:\Document\File.Jpg" (4) تضع هذا الكود في موديول وتناديه في المكان المطلوب : Public Declare PtrSafe Function FileProtocolHandler Lib "url.dll" _ Alias "FileProtocolHandlerA" (ByVal hwnd As Long, ByVal hinst As Long, _ ByVal lpszCmdLine As String, ByVal nShowCmd As Long) As Long Public Sub OpenHyperlink(ByVal Url) FileProtocolHandler 0, 0, Url, 1 End Sub وتناديه كالتالي: OpenHyperlink ("C:\Document\File.Jpg") -
أخي يمكنك الاستفادة من الكود الموجود في الملف المرفق لحفظ مسميات الجداول وبقية عناصر قاعدة البيانات في جدول ثم استخراجها في تقرير وتصديره بأي صيغة كما تشاء 🙂 وكذلك هذا كود يحضر لك مسميات عناصر قاعدة البيانات اللي تشتغل عليها ويطبعها في نافذة الـ Immediate window .. لكن مع تعديل بسيط في الكود يمكن تصديرها للجدول . Sub AllContentsReport() ''my first, simplest code''''''''''''''''''''''''''' ''drawback: tables and queries in the same container ''therefore, then I skipped 3 containers ''1- containers for forms/reports/modules/macros ''2 -tabledefs for tables ''3 -querydefs for queries Dim dbs As DAO.Database Dim doc As DAO.Document Dim cont As DAO.Container Set dbs = CurrentDb For Each cont In dbs.Containers Debug.Print "Container:"; cont.Name, "---------------" For Each doc In cont.Documents If doc.Name Like "msys*" Or doc.Name Like "~*" Then Else Debug.Print doc.LastUpdated, doc.Name End If Next doc Next cont '''''''''''''''''' Dim tbl As DAO.TableDef Dim que As QueryDef '''''''''''''''''' Debug.Print "TableDefs:-------------------------" For Each tbl In dbs.TableDefs If tbl.Name Like "msys*" Or tbl.Name Like "~*" Then Else Debug.Print "~~"; tbl.Name, tbl.Connect & "" End If Next tbl '''''''''''''''''' Debug.Print "queryDefs:-------------------------" For Each que In dbs.QueryDefs If que.Name Like "~*" Then Else Debug.Print "~~"; que.Name, "-------------------------" Debug.Print que.SQL End If Next que End Sub
-
السلام عليكم أخي قاسم 🙂 الحمدلله بعد العديد من المحاولات في جلب أسماء القواعد الخلفية المتعددة (وبدون تكرار) في حال أن القاعدة الواحدة لها أكثر من جدول، توصلت بفضل الله إلى الطريقة . الفكرة تتلخص في كود يحضر لك جميع مسارات القواعد الخلفية BE ويخزنها في متغير من نوع Collection وبدون تكرار .. ثم في حلقة Loop يقوم بإرسال مسارات أو روابط هذه القواعد إلى كود النسخ الإحتياطي Backup ليقوم بحفظ نسخة إحتياطية من القاعدة الخلفية بنفس المسمى + التاريخ والوقت .. يحفظها في مجلد Backup بجانب قاعدة البيانات . في الملف المرفق ستجدون 3 ملفات ( الواجهة : My_App_FE.accdb و القواعد الخلفية : BE_1.accdb و BE_2.accdb ) (ملاحظة : لن تحتاج لإعادة ربط الواجهة بالقواعد الخلفية ، فقد جعلتها ترتبط تلقائيا عند الفتح ) 🙂 سيفتح لك النموذج واضغط على حفظ وشاهد النتيجة 🙂 إنشاء مجلد الباكب تلقائيا : النسخ الإحتياطية : وهذا هو المرفق: 🙂 Backup Mor Than One BE.zip