-
Posts
2286 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
57
نوع المحتوي
التقويم
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو Moosak
-
مطلوب دالة لحساب العمر بالسنة والشهر والتاريخ
Moosak replied to بسملة جمال's topic in قسم الأكسيس Access
-
أولا : متأكد أن إجايتك هي أفضل إجابة ؟ 😏 ثانيا هذا شرح مترجم للكود : يبدأ الكود بالتصريح عن المتغيرات التي سيتم استخدامها في البرنامج. تم التصريح عن المتغير db ككائن DAO.Database ، وتم التصريح عن rsP ككائن DAO.Recordset. يفتح الرمز بعد ذلك عبارة SQL لتحديث جميع السجلات في جدول astkbal بقيم 0 لحقول golos1 و lagna ، ولكن فقط إذا لم يتم تعيينها بالفعل على 0 (BOF). إذا لم يتم العثور على سجلات (EOF) ، فإنه يمر عبر كل سجل حتى يعثر على سجل تم فيه تحديث كل من lagna و golos1 إلى الصفر (LOF). ثم ينتقل للعثور على سجل آخر حيث تم تحديث lagna من قيمته الحالية ، والتي تم تعيينها مسبقًا بواسطة rsP! lagna = rsP! lagna؛ تستمر هذه الحلقة حتى تصل إلى x = rsP! frist_golos-rsP! end_golos أو حتى تصل إلى نهاية الملف (EOF) في rsL. بعد تحديث جميع السجلات في قاعدة البيانات ، يتم إغلاقها قبل إغلاق نفسها باستخدام Close (). يستخدم الكود لتحديث جدول الاستقبال من أجل توزيع الطلاب على الفصول الدراسية. يبدأ الكود بفتح مجموعة سجلات لـ tb_Prepare. يتم فحص BOF و EOF قبل متابعة الحلقة. إذا لم يكن هناك خطأ ، فسيستمر مع حلقة while التي ستتكرر خلال جميع السجلات في rsP حتى يتم الوصول إلى rsL. بمجرد الوصول إلى rsL ، سيتم الانتقال إلى السجل التالي وتحريره بحيث يتم تعيين lagna = 0 و golos1 = 0 لكل طالب في صف rsL. بعد تحرير صف كل طالب ، سينتقل إلى تحديث صف كل طالب مرة أخرى بعد تجاوزهم جميعًا.
-
مطلوب دالة لحساب العمر بالسنة والشهر والتاريخ
Moosak replied to بسملة جمال's topic in قسم الأكسيس Access
وهذه دالة أخرى : Function fAgeYMD(StartDate As Date, EndDate As Date) As String 'Purpose: Returns the difference between StartDate and EndDate in full years, months and days 'Coded by: raskew 'To call: ' ? fAgeYMD(#7/6/54#, #10/3/84#) 'Returns: ' 30 years 2 months 28 days Dim inthold As Integer Dim dayHold As Integer inthold = Int(DateDiff("m", StartDate, EndDate)) + _ (EndDate < DateSerial(year(EndDate), month(EndDate), Day(StartDate))) If Day(EndDate) < Day(StartDate) Then dayHold = DateDiff("d", StartDate, DateSerial(year(StartDate), month(StartDate) + 1, 0)) & Day(EndDate) Else dayHold = Day(EndDate) - Day(StartDate) End If fAgeYMD = Int(inthold / 12) & " year" & IIf(Int(inthold / 12) <> 1, "s ", " ") _ & inthold Mod 12 & " month" & IIf(inthold Mod 12 <> 1, "s ", " ") _ & LTrim(str(dayHold)) & " day" & IIf(dayHold <> 1, "s", "") End Function طريقة الاستدعاء : fAgeYMD(StartDate, EndDate) -
أخي حسين تفضل قمت بعمل المطلوب 🙂 : ولكن انتبه إلى أن عدد أرقام الجلوس التي وضعتها هي أقل من العدد الفعلي للطلاب ... لذلك بعض الطلاب لم يتم توزيعهم .. وهذا الكود الذي تم استخدامه : Private Sub LejanBtn_Click() On Error GoTo HandleError Dim db As DAO.Database Dim rsP As DAO.Recordset Dim rsL As DAO.Recordset Dim x As Integer CurrentDb.Execute "UPDATE astkbal SET astkbal.golos1 = 0, astkbal.lagna = 0;" Set db = CurrentDb Set rsP = db.OpenRecordset("tb_Prepare") If Not rsP.BOF And Not rsP.EOF Then rsP.MoveFirst While (Not rsP.EOF) Set rsL = db.OpenRecordset("SELECT * FROM astkbal WHERE [saf]= '" & rsP!saf & "' and lagna = 0 And golos1 = 0;") If Not rsL.BOF And Not rsL.EOF Then rsL.MoveFirst For x = rsP!frist_golos To rsP!end_golos rsL.Edit rsL!lagna = rsP!lagna rsL!golos1 = x rsL.Update rsL.MoveNext Next x End If rsP.MoveNext Wend End If rsP.Close rsL.Close Set db = Nothing Set rsP = Nothing Set rsL = Nothing Me.Requery MsgBox "تم توزيع اللجان بنجاح" HandleExit: Exit Sub HandleError: If Err.Number = 0 Then Exit Sub Else MsgBox Err.Number & vbNewLine & vbNewLine & Err.Description End If Resume HandleExit End Sub اعداد الجان_تعديل.rar
-
هل التوزيع يكون بشكل عشوائي أم له نظام معين ؟ ماذا تقصد بـ بداية اللجنة ؟ و بداية رقم الجلوس ؟ من الجيد لو تعطينا نموذج للشكل النهائي الذي تريده ... لكي لا يكون العمل مبني على تقديرنا الشخصي 🙂
-
وعليكم السلام ورحمة الله وبركاته .. 🙂 لعلك تجد حاجتك هنا :
-
تقسيم سجلات الجدول الي مجموعات متساوية العدد
Moosak replied to وائل طه's topic in قسم الأكسيس Access
شكرا لك أخي مبرمج سابق مبدع بالفطرة ..🙂 أرى أنك أعتمدت على فرضية أن الحقل Id موجود ومرتب تصاعديا بدون وجود نواقص (حقول محذوفة) .. ماذا لو أن حقل ال Id مكتوب هكذا xml0620220856 ؟ كيف نستطيع الحصول على ال 100 سجل الأولى ؟ ثم المائة التالية ؟ ولو كان لدينا 3 قوائم ListBox مثلا في نفس النموذج نريد فيها تقسيم السجلات إلى 3 أقسام متساوية .. كيف نفعل ذلك ؟؟ طبعا الهدف من السؤال هو تحريك الدماغ .. والاستفادة من خبراتكم .. وإثارة روح التحدي .. 👍🏼😁 -
-
تقسيم سجلات الجدول الي مجموعات متساوية العدد
Moosak replied to وائل طه's topic in قسم الأكسيس Access
أهلا بك أخي .. تستطيع عمل ذلك من خلال إنشاء عدة استعلامات، ومن لوحة الخصائص Top Values تكتب النسبة أو عدد السجلات المطلوب عرضها .. ثم تنشيء استعلام آخر تكتب فيه نسبة السجلات ومن المعايير تستخدم دالة ()Not In لإخباره بأن يظهر السجلات غير الموجودة في الاسعلام الأول .. وهكذا ( ملاحظة ظريفة 🙂 : عدم إرفاق السائل لملف للتطبيق عليه ، يعني أنه يكتفي بالشرح النظري ولا يحتاج للتطبيق العملي ) -
وعليكم السلام ورحمة الله وبركاته دكتور لست متأكد من هذه المعلومة ، ولكن أعتقد أن هذه صياغة علمية لإظهار الأرقام . ولحلها غير تنسيق مربع النص إلى Standard النتيجة : لاحظ النوع بعد التالي لـ Standard اسمه Scientific يأخذ نفس الصياغة السابقة
-
تعديل حقل التاريخ بخاصية قناع الادخال ?
Moosak replied to عبدالعزيز محمد's topic in قسم الأكسيس Access
تفضل أخي عبدالعزيز .. هي نفس طريقة أخي kanory ولكن بتعديل بسيط تضع قناع الإدخال هكذا (في الجدول و / أو النموذج) : 00/00/"202"0 وستراه عند الإدخال هكذا : Database1.accdb -
فعلا 100% 😉👌🏼 والحد الثاني لسلاحنا أنه صديق المحترفين أمثالكم 😅
-
أنا مستمع جيد .. نورني بسيطة .. غيرها إلى Dlookup 🙂 DLookUp("[totalbook]";"[tblibrarey]";"[books] ='"& [Forms]![finfo]![bx] &"' And [readers] ='"& [Forms]![finfo]![rx] &"' ") العفو حبيبنا 😊🌹
-
شكلي ما أعرف أروج صح .. عليك بالكاتب الذكي لدوال المجال وهذا الحل : DCount("*";"[tblibrarey]";"[books] ='"& [Forms]![finfo]![bx] &"' And [readers] ='"& [Forms]![finfo]![rx] &"' ") test5.accdb
-
مكتبة الموقع - 📟 آلة حاسبة 📟 - هدية مميزة مفتوحة المصدر 🎁
Moosak replied to Moosak's topic in قسم الأكسيس Access
شكرا لك أستاذي العزيز على التشجيع والتحفيز ، جزاك الله خيرا ..🌹 فعلا نبهني أحد أصدقائي لهذه النقطة .. والحل هو أن يتم تخزين جميع العمليات الحسابية والتعامل معها مرة واحدة بدل إجراء العمليات كل على حدة .. عسى أن يتسنى الوقت لعمل إصدار جديد للحاسبة 🙂 وأشكرك جدا على التنبيه 😊🌹 -
-
أسهل من العسل 🙂 فقط أضفت دالة ()NZ لتجنب القيمة الفارغة =Nz(DSum("[add_amount]";"[add]";"[add_date] >=#"& [Forms]![Employee]![date1] &"# And [add_date] <=#"& [Forms]![Employee]![date2] &"# And [emp_id] ="& [Forms]![Employee]![Employeecbo] &" ");0) test_5.rar
-
وعليكم السلام 🙂 عليك بهذا :
-
أهلا أهلا أهلا بكبير المعلمين وحامل المسك 😊 زين بخرت المكان قبل لا نروح فيها 😂 أشكرك على المرور والتعليق أستاذنا @jjafferr الحقيقة وأنا أنشيء هذا الموضوع وأعمل البرنامج والتجارب عليه وأعالج الأخطاء اللي ظهرت لي ، دارت في بالي الكثير من الأفكار والمقترحات اللي يمكن تطبيقها على نفس الفكرة ، ومنها ضمنها تشغيل وحدة نمطية في ال BE بدل الفورم ( مثل ما ذكرت ) ولكن رأيت أن الفورم أسهل حتى في استدعاء البيانات من الجدول ، وفي النهاية الفكرة فيها إضافة كائنات أخرى غير الجداول في قاعدة البيانات ( موديول ، ماكرو ، .... الخ ) . وكذلك دمجها مع الكثير من الأفكار اللي تم طرحها سابقا في المنتدى مثل ( إعادة الإتصال التلقائي ) ، و ( إنشاء إختصار وأيكونة في سطح المكتب ) ، وووو وغيرها .. فقررت أخلي المجال مفتوح لإبداعات الشباب أنت الآن نورتني لفكرة الحصول على مكان الFE مباشرة قبل التحديث واستخدامه للتبديل ، فكرة عبقرية ولكن ما خطرت في بالي لأن الوضع معي في العمل هو أنني أنصب ال FE بنفسي للمستخدمين وما أخليهم يعبثو بموقعه لأنهم لو تورطوا وما عرفو يربطوه بال BE بيرجعولي في النهاية 😁 لحد الحين النقطتين 1 و 2 الحمدلله ما صارت معي ، الشبكة أمورها طيبة .. بالنسبة للنقطة هذي طبعا العمل كله على المبرمج ، فقط الرسالة اللي تطلع أول شي أنا مقرر ألغيها تماما في برامجي ، فقط وضعتها هنا على سبيل التجربة علشان أحس أن الكود شغال 😅 ، وإلا فالمستخدم ما بيحس أصلا بأنه تغير شي ، كله بالصامت . وبإذن الله ممكن أطور الكود ليأخذ عنوان ال FE لكل مستخدم على حده . هو يصلح .. بس تضل الطريقة اللي ذكرتها تحمل في طياتها البلاوي 😅🖐🏼️
-
لعلك تريد ربط موضوعك بهذا الموضوع : 🙂 إذا كان كذلك .. فالجواب : لا ، ليست هناك حاجة لربط جدول الإصدار ببقية الجداول . 🙂
-
تفضل أخي هذه أهم أوامر التعامل والتنقل بين السجلات والتعامل مع التقارير .. 🙂 خذ منها ما تريده .. وادمج الأوامر التي تريدها في زر واحد : أولا حذف السجل Private Sub DeleteBtn_Click() On Error GoTo Err_DeleteBtn_Click DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdDeleteRecord Exit_DeleteBtn_Click: Exit Sub Err_DeleteBtn_Click: MsgBox Err.Description Resume Exit_DeleteBtn_Click End Sub إضافة سجل جديد Private Sub AddNewBtn_Click() On Error GoTo Err_AddNewBtn_Click DoCmd.GoToRecord , , acNewRec Exit_AddNewBtn_Click: Exit Sub Err_AddNewBtn_Click: MsgBox Err.Description Resume Exit_AddNewBtn_Click End Sub السجل التالي Private Sub NextBtn_Click() On Error GoTo Err_NextBtn_Click DoCmd.GoToRecord , , acNext Exit_NextBtn_Click: Exit Sub Err_NextBtn_Click: MsgBox Err.Description Resume Exit_NextBtn_Click End Sub السجل السابق Private Sub PreviousBtn_Click() On Error GoTo Err_PreviousBtn_Click DoCmd.GoToRecord , , acPrevious Exit_PreviousBtn_Click: Exit Sub Err_PreviousBtn_Click: MsgBox Err.Description Resume Exit_PreviousBtn_Click End Sub السجل الأول Private Sub FirstBtn_Click() On Error GoTo Err_FirstBtn_Click DoCmd.GoToRecord , , acFirst Exit_FirstBtn_Click: Exit Sub Err_FirstBtn_Click: MsgBox Err.Description Resume Exit_FirstBtn_Click End Sub السجل الأخير Private Sub LastBtn_Click() On Error GoTo Err_LastBtn_Click DoCmd.GoToRecord , , acLast Exit_LastBtn_Click: Exit Sub Err_LastBtn_Click: MsgBox Err.Description Resume Exit_LastBtn_Click End Sub البحث عن سجل Private Sub FinedRecBtn_Click() On Error GoTo Err_FinedRecBtn_Click Screen.PreviousControl.SetFocus DoCmd.RunCommand acCmdFind Exit_FinedRecBtn_Click: Exit Sub Err_FinedRecBtn_Click: MsgBox Err.Description Resume Exit_FinedRecBtn_Click End Sub تكرار السجل Private Sub DublicateRecBtn_Click() On Error GoTo Err_DublicateRecBtn_Click DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdCopy DoCmd.RunCommand acCmdRecordsGoToNew DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdPaste Exit_DublicateRecBtn_Click: Exit Sub Err_DublicateRecBtn_Click: MsgBox Err.Description Resume Exit_DublicateRecBtn_Click End Sub حفظ السجل Private Sub SaveRecBtn_Click() On Error GoTo Err_SaveRecBtn_Click DoCmd.RunCommand acCmdSaveRecord Exit_SaveRecBtn_Click: Exit Sub Err_SaveRecBtn_Click: MsgBox Err.Description Resume Exit_SaveRecBtn_Click End Sub طباعة السجل الحالي Private Sub PrintRecBtn_Click() On Error GoTo Err_PrintRecBtn_Click DoCmd.RunCommand acCmdSelectRecord DoCmd.PrintOut acSelection Exit_PrintRecBtn_Click: Exit Sub Err_PrintRecBtn_Click: MsgBox Err.Description Resume Exit_PrintRecBtn_Click End Sub التراجع عن التسجيل Private Sub UndoRecBtn_Click() On Error GoTo Err_UndoRecBtn_Click DoCmd.RunCommand acCmdUndo Exit_UndoRecBtn_Click: Exit Sub Err_UndoRecBtn_Click: MsgBox Err.Description Resume Exit_UndoRecBtn_Click End Sub طباعة سجل محدد Private Sub Print_Click() On Error GoTo Err_PrintReportBtn_Click Dim stDocName As String stDocName = "ReportName" DoCmd.OpenReport stDocName, acViewPreview, , "ID=" & [ID] DoCmd.RunCommand acCmdPrint Exit_PrintReportBtn_Click: Exit Sub Err_PrintReportBtn_Click: MsgBox Err.Description Resume Exit_PrintReportBtn_Click End Sub طباعة تقرير Private Sub PrintReportBtn_Click() On Error GoTo Err_PrintReportBtn_Click Dim stDocName As String stDocName = "ReportName" DoCmd.OpenReport stDocName, acNormal Exit_PrintReportBtn_Click: Exit Sub Err_PrintReportBtn_Click: MsgBox Err.Description Resume Exit_PrintReportBtn_Click End Sub معاينة تقرير Private Sub VeiwReportBtn_Click() On Error GoTo Err_VeiwReportBtn_Click Dim stDocName As String stDocName = "ReportName" DoCmd.OpenReport stDocName, acPreview Exit_VeiwReportBtn_Click: Exit Sub Err_VeiwReportBtn_Click: MsgBox Err.Description Resume Exit_VeiwReportBtn_Click End Sub فتح تقرير Private Sub OpenReportBtn_Click() On Error GoTo Err_OpenReportBtn_Click Dim stDocName As String stDocName = "ReportName" DoCmd.OpenReport stDocName, acViewReport Exit_OpenReportBtn_Click: Exit Sub Err_OpenReportBtn_Click: MsgBox Err.Description Resume Exit_OpenReportBtn_Click End Sub حفظ تقرير بصيغة Private Sub SendReportToBtn_Click() On Error GoTo Err_SendReportToBtn_Click Dim stDocName As String stDocName = "ReportName" DoCmd.OutputTo acReport, stDocName Exit_SendReportToBtn_Click: Exit Sub Err_SendReportToBtn_Click: MsgBox Err.Description Resume Exit_SendReportToBtn_Click End Sub
-
في الحقيقة لا أخفيك أمرا أنني قرأت ردك أكثر من 4 مرات ولم أفهم ما تقصده .. !! ولكن كأنني فهمت أنك تتكلم عن أخذ نسخة احتياطية قبل البدء بالتحديث .. وهذا ممكن طبعا بإضافة تحديث بسيط على الكود .. أما فيما يتعلق بالشبكة .. فياليت لو توضح أكثر بلغة بسيطة .. أو يترجم لنا حبيبنا جعفر 😄 وجزيل الشكر وأعظمه للجميع على المرور 😊🌹