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

Moosak

أوفيسنا
  • Posts

    2,065
  • تاريخ الانضمام

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

  • Days Won

    51

Community Answers

  1. Moosak's post in مساعدة في شروط ادخال البيانات was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته .. 🙂 
    استخدم الدالة  Trim  لحذف المسافات قبل وبعد النص في حدث بعد التحديث للحقل .
  2. Moosak's post in احصاء بالعدد ومجموع المبالغ بحسب الجهة was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته 🙂 
    أنشيء هذا الاستعلام :

    وهذا الناتج :

    وبعدها صمم تقرير مبني على هذا الاستعلام .. 🙂 
    احصاء بالعدد والمبلغ.rar
  3. Moosak's post in تقرير واحد للبرنامج was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته 🙂 
    لن تحتاج لكل هذه التقارير والاستعلامات ..
    وضعت لك استعلام واحد وتقرير واحد لكل الصفوف :

    والتقرير حسب الاختيار من القائمة :

     
    درجات الطلاب.accdb
  4. Moosak's post in كود لتطبيق السداد عل ى اكثر من سجل بضغطة زر واحدة was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته 🙂 
    كتبت لك كود يراعي أن يكون المبلغ المدفوع أقل من أو يساوي المدفوع 
    وكذلك الكود يكمل على الدفع السابق في حال أنه تم دفع جزء من المبلغ سابقا..

    تفضل هذا هو الكود :
    Private Sub Command6_Click() Dim PayedAmount As Double, Amount As Double, Remaining As Double Dim RS As DAO.Recordset Dim SQl As String PayedAmount = Nz(Me.Text4, 0) If PayedAmount = 0 Then MsgBox "أدخل المبلغ": Exit Sub Remaining = Nz(DSum("rest", "Table1", "cod = " & [Forms]![Form1]![sh]), 0) If PayedAmount > Remaining Then MsgBox "المبلغ المدفوع أكبر من المبلغ المتبقي للسداد": Exit Sub SQl = "SELECT * FROM Table1 WHERE Table1.rest > 0 AND Table1.cod = " & [Forms]![Form1]![sh] Set RS = CurrentDb.OpenRecordset(SQl) Do While Not RS.EOF RS.Edit If PayedAmount >= RS.Fields("rest") Then Amount = RS.Fields("rest").Value RS.Fields("pye").Value = RS.Fields("pye").Value + RS.Fields("rest") If RS.Fields("rest").Value = 0 Then RS.Fields("valider").Value = True PayedAmount = PayedAmount - Amount Else RS.Fields("pye").Value = RS.Fields("pye").Value + PayedAmount If RS.Fields("rest").Value = 0 Then RS.Fields("valider").Value = True PayedAmount = 0 End If RS.Update If PayedAmount = 0 Then Exit Do RS.MoveNext Loop Me.w.Requery MsgBox "Done" Set RS = Nothing End Sub  
    pye.accdb
  5. Moosak's post in تنسيق خلية was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته 🙂 
    يمكنك الاستعانة بهذا الجدول لعمل قناع إدخال بيانات حسب المطلوب :

    وحسب سؤالك فأعتقد أن هذا هو القناع المناسب :

    طبعا هذا القناع إما أن تضعه في خانة قناع الإدخال للحقل في النموذج :

    أو أن تضعه في خانة قناع الإدخال للحقل في الجدول.
     
  6. Moosak's post in سؤال حول عمل الواجهات الجذابة was marked as the answer   
    أهلا بك أخي أمين 🙂 
    (تم فصل الموضوع والإشارة للموضوع الأصلي للتنظيم ) 🙂 
    أولا : تم إصلاح الملف ..

    ثانيا : بشرح مبسط الفكرة تعتمد على مسميات الأزرار .. 
    فالكود يتعرف على الأزرار الرئيسية والأزرار التابعة لها حسب تسمية الزر .. هكذا حسب الصورة التالية :

     
    لذلك في حال الزيادة أو النقصان إنتبه لتسلسل التسميات حسب النمط المتبع 🙂 
    صفحة رئيسية مطورة (1).rar
  7. Moosak's post in فتح الشاشة الرئيسية بعد شاشة الدخول was marked as the answer   
    تفضل 🙂 
     
    New Microsoft Access Database (1).accdb
  8. Moosak's post in مساعدة في تعديل كود خاص بصفحة النموذج was marked as the answer   
    إليك الكود المعدل الذي سيسمح لك بإغلاق صفحات النموذج المحددة بدلاً من إغلاق جميع صفحات النماذج المفتوحة:
     
    Private Sub Form_Current() Dim FormCount As Integer Dim I As Integer Dim FormNamesToClose As Variant ' أضف أسماء صفحات النموذج التي تريد إغلاقها في هذه المصفوفة FormNamesToClose = Array("Form1", "Form2", "Form3") FormCount = Forms.Count For I = FormCount - 1 To 0 Step -1 If IsInArray(Forms(I).Name, FormNamesToClose) Then DoCmd.Close acForm, Forms(I).Name End If Next I End Sub Private Function IsInArray(ByVal stringToSearch As String, ByVal arr As Variant) As Boolean Dim i As Integer For i = LBound(arr) To UBound(arr) If arr(i) = stringToSearch Then IsInArray = True Exit Function End If Next i IsInArray = False End Function هنا كيف يعمل الكود المعدل:
    1- مصفوفة FormNamesToClose تحتوي على أسماء صفحات النماذج التي تريد إغلاقها عند فتح النموذج الحالي. يمكنك إضافة أو إزالة أسماء النماذج من هذه المصفوفة حسب الحاجة.
    2- دالة Form_Current() تقوم بالتمرير على جميع صفحات النماذج المفتوحة باستخدام خاصية Forms.Count.
    3- لكل صفحة نموذج، يتحقق ما إذا كان اسم النموذج موجودًا في مصفوفة FormNamesToClose باستخدام دالة المساعدة IsInArray().
    4- إذا كان اسم النموذج موجودًا في مصفوفة FormNamesToClose، يتم استخدام بيان DoCmd.Close لإغلاق تلك صفحة النموذج.
    دالة IsInArray() هي دالة مساعدة تتحقق مما إذا كان السلسلة المعطاة موجودة في المصفوفة المقدمة. إنها تُرجع True إذا تم العثور على السلسلة، وFalse خلاف ذلك.
    بهذا الكود المعدل، يمكنك الآن تحديد صفحات النماذج التي تريد إغلاقها عند فتح النموذج الحالي، بدلاً من إغلاق جميع صفحات النماذج المفتوحة.
     
    ما يحتاج أخبرك من وين جبت الجواب 
  9. Moosak's post in تصحيح كود فى اكسيس was marked as the answer   
    أخي @jo_2010 أنصحك باستخدام منسق الأكواد عند كتابة مواضيعك لكي لتسهل قراءة الكود 🙂 👈🏻

    وبالنسبة للحل يمكنك عكس معناها بكتابتها بعدة صيغ هكذا :
    If Not IsNull(Me.PNAME) Or Me.PNAME <> "" Then أو If IsNull(Me.PNAME) = False Or Me.PNAME <> vbNullString Then  
  10. Moosak's post in نقل كافة السجلات من جدول إلى جدول آخر ! was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته 🙂 

    Database12.accdb
  11. Moosak's post in عرض الوقت بتنسيق محدد was marked as the answer   
    تفضل عمي @Foksh 🙂 :
    Replace(Replace(Format(Time, "hh:mm:ssAM/PM"), "PM", ""), "AM", "") والنتيجة :

  12. Moosak's post in الانتقال الى سجل جديد بطريقة مختلفة was marked as the answer   
    حياك الله أستاذ @jo_2010 🙂 
    بأمانة قرأت ردك والسؤال الأول أكثر من مرة ولم أفهم المراد بالضبط ، لعل الصيام مأثر علي 😅🖐🏻
    ولكن قمت بعمل تعديل على قدر فهمي لطلبك 😊
    وهذا شكل الكود بعد التعديل :

    عند الضغط على إنتر وهناك عدة تحاليل ينتقل للتحليل التالي حتى يصل للسجل الجديد .. 
    وعند المواصلة على الضغط على الإنتر 3 مرات عندها ينتقل لسجل جديد في النموذج الرئيسي ..
    إذا كان عدد التحاليل صفر حتى لو تم الاستمرار على مفتاح الإنتر أكثر من 3 مرات يضل المؤشر في مكانه ولا ينتقل.
    JO-2024.accdb
  13. Moosak's post in اخفاء حقول من تقرير بدلالة قيمة معينة was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته 🙂 
    تفضل أخي @العبيدي رعد
    لا تظهر بيانات إلا من كان في ذمته شيء ..

    الكود يكتب في الحدث فورمات للمجموعة أو التقسيمة :

    الكود : 

    القروض 10.rar
  14. Moosak's post in البحث فى المنتدى was marked as the answer   
    يمكنك استخدام هذه الصفحة أيضا للبحث عن المواضيع من خلال عناوينها أو اسم الكاتب :
    https://officena.net/team/mas/access.html
    🙂 
  15. Moosak's post in إخفاء وإظهار زر أمر في نموذج آخر ... was marked as the answer   
    السلام عليكم 🙂 
    الكود صحيح .. المشكلة فقط هي أن النموذج الثاني يجب أن يكون مفتوح ليعمل الكود ..
    هنا أضفت لك سطر للتحقق من أن النموذج الثاني مفتوح قبل تطبيق الكود .. ولو كان مغلق يفتحه
    ' للتحقق من أن النموذج الثاني مفتوح قبل تطبيق الكود If CurrentProject.AllForms("frm2").IsLoaded = False Then DoCmd.OpenForm "frm2" If Me.on = True Then Forms!frm2.btn.Visible = True Else Forms!frm2.btn.Visible = False End If  
  16. Moosak's post in هل هناك دالة تحول الرابط الى صورة ؟ كود للتحميل المباشر من جوجل درايف Google drive was marked as the answer   
    الرابط الموجود في الفورم لم يتم إعداده للمشاركة ( يطلب إذن لتحميله ) ، يجب عليك إتاحة المشاركة للتمكن من التحميل ..
     
    هذا هو كود التحميل من الجوجل درايف :
    كود للتحميل المباشر من الجوجل درايف Google drive
    شرح الكود:
    لتحميل الملفات من جوجل درايف بنفس الاسم والامتداد
    فقط تحتاج رابط الملف كاملا وأن يكون الملف عاما (مشاركا مع الجميع)
    الكود يعالج مشكلة أسماء الملفات العربية
    صالح للنواتين 32بت وكذلك 64بت
    يعمل في كل التطبيقات التي تستعمل vba
    يوضع هذا الكود في موديول جديد
    الكود:
    Sub DownloadFromGD(GDriveURL As String) Dim myURL As String Dim FileID As String Dim xmlhttp As Object Dim name0 As Variant Dim oStream As Object FileID = Split(Split(GDriveURL, "/d/")(1), "/")(0) myURL = "http://drive.google.com/u/0/uc?id=" & FileID & "&export=download" Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") xmlhttp.Open "GET", myURL, False xmlhttp.Send name0 = DECODEURL(xmlhttp.getResponseHeader("Content-Disposition")) If name0 = "" Then     MsgBox "الملف غير موجود في الموقع"     Exit Sub End If name0 = Split(name0, "*=UTF-8''")(1) 'split after *=UTF-8'' to get utf8 names If xmlhttp.Status = 200 Then     Set oStream = CreateObject("ADODB.Stream")     oStream.Open     oStream.Type = 1     oStream.Write xmlhttp.responseBody     oStream.SaveToFile CurrentProject.Path & "\" & name0, 2 ' 1 = no overwrite, 2 = overwrite     oStream.Close End If Set xmlhttp = Nothing Set oStream = Nothing MsgBox "تم تحميل الملف في نفس مسار البرنامج باسم: " & vbNewLine & vbNewLine & name0 End Sub Function DECODEURL(varText As Variant) Static objHtmlfile As Object If objHtmlfile Is Nothing Then     Set objHtmlfile = CreateObject("htmlfile")     objHtmlfile.parentWindow.execScript "function decode(s) {return decodeURIComponent(s)}", "jscript" End If DECODEURL = objHtmlfile.parentWindow.decode(varText) End Function طريقة الاستدعاء (الاستخدام):
    طريقة استخدام الكود مثل السطر المكتوب في الإجراء test أو يمكن وضعه عند الضغط على زر مثلا
    ويتكون هذا السطر من كتابة اسم الاجراء DpwnloadFromGD ثم رابط الملف المراد تحميله بين علامتي تنصيص
    Sub test() DownloadFromGD "https://drive.google.com/file/d/18jrvTxgR1QTzwm8YaJHIvsdOmqj02L2x/view" End Sub  
  17. Moosak's post in مساعدة في إختيار تحديد was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته 🙂 
    هذا الكود لعمل تحديد الكل : 
    Private Sub btnSelectAll_Click() Dim strSQL As String ' SQL statement to update the "select" field to True strSQL = "UPDATE YourTableName SET [select] = True" ' Execute the SQL statement CurrentDb.Execute strSQL ' Refresh the form to reflect the changes Me.Requery End Sub وهذا لعمل إلغاء تحديد الكل :
    Private Sub btnDeselectAll_Click() Dim strSQL As String ' SQL statement to update the "select" field to False strSQL = "UPDATE YourTableName SET [select] = False" ' Execute the SQL statement CurrentDb.Execute strSQL ' Refresh the form to reflect the changes Me.Requery End Sub استبدل "YourTableName"  باسم الجدول لديك
    واستبدل "select" باسم حقل الاختيار
     
    تفضل أخي العزيز 🙂 
    الكود الخاص بعمل زر واحد لـ [تحديد / إلغاء تحديد للكل] السجلات في النموذج المستمر :
    Private Sub btn_Select_Deselect_All_Click() '(الكود الذي يتم وضعه على زر (تحديد،إلغاء تحديد الكل Dim CountSelected As Long Dim TableName As String Dim SelectField As String '====================================== 'ضع هنا اسم الجدول TableName = "YourTableName" 'ضع هنا اسم حقل التحديد SelectField = "select" '====================================== 'فحص عدد السجلات المختارة CountSelected = DCount(SelectField, TableName) If CountSelected = 0 Then 'لم يتم تحديد أي سجل نشغل استعلام تحديد الكل CurrentDb.Execute "UPDATE " & TableName & " SET [" & SelectField & "] = True" Else ' هناك سجلات محددة لذلك نشغل استعلام إلغاء تحديد الكل CurrentDb.Execute "UPDATE " & TableName & " SET [" & SelectField & "] = False" End If ' تحديث البيانات في النموذج Me.Requery End Sub لا تنس كتابة اسم الجدول مكان :  "YourTableName"
    واسم حقل التحديد :  "select"
  18. Moosak's post in تجاوز (ا أ إ آ ة ه ي ى) في البحث was marked as the answer   
    هذه فكرتي 🙂 ..

    Database.rar
  19. Moosak's post in اعادة ترتيب ترقيم تسلسل السجلات was marked as the answer   
    تفضل أخي @Abdelaziz Osman 🙂 
    جعلته حقل محسوب غير مرتبط بالجدول وذلك لكي يعدل الترقيم نفسه حتى لو تم حذف السجلات ..
    وهذه قيمة الحقل :
    =IIf(IsNull([معرف]);"";DCount("*";"[Talabat]";"[معرف]<=" & [معرف]))  
    ترتيب الترقيم.accdb
  20. Moosak's post in اختصار الاكواد بوحدة نمطية واستدعاءها عند الحاجه was marked as the answer   
    تفضل مرفقك أخي @Hamtoooo بعد تطبيق تعليمات معلمنا العود @ابوخليل 🙂 
     
    نفس الرسائل والأزرار .. وألق نظرة على محتويات الوحدة النمطية  وكذلك جرب تغيير النصوص فيها ولاحظ الفرق في النموذج ..
    وهذا محتوى الوحدة النمطية :
    Option Compare Database Option Explicit Public Function Default_MSGBOX() 'الرسالة الموحدة MsgBox "هذه الرسالة موحدة", , Default_Title End Function Public Function Default_Title() As String ' العنوان الموحد Default_Title = "( اوفيسنا | الاصدار 3.8 )" End Function Public Function Default_Text() As String ' نص ثابت يكتب في الوحدة النمطية Default_Text = "هذا النص تم استدعائه من الوحدة نمطية" End Function Public Function DeleteBtn_Click() 'أمر عام يوضع على أزرار الحذف لحذف السجلات On Error GoTo Err_DeleteBtn_Click DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdDeleteRecord Exit_DeleteBtn_Click: Exit Function Err_DeleteBtn_Click: MsgBox Err.Description Resume Exit_DeleteBtn_Click End Function  
    استدعاء الاكواد.accdb
  21. Moosak's post in المطلوب عند تطابق المدينة 1 والمدينة 2 يقوم بجلب المسافة تلقائيا من الجدول was marked as the answer   
    تفضل 🙂 

    DLookUp("[المسافة]";"[Table1]";"[city1] ='"& [Forms]![Form1]![city1] &"' And [city2] ='"& [Forms]![Form1]![city2] &"' ")  
    test.rar
  22. Moosak's post in إظهار وإخفاء الأيقونات was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته .. 🙂 
    في النموذج المستمر من الصعب عمل أوامر برمجية بشكل مباشر من هذا النوع ..
    والحل هو أن يتم إخراج الصور من البرنامج كملفات خارجية ويتم الإشارة إليها كرابط .. 
    وهذه النتيجة 🙂 :

    ويمكنك إخفاء المربع الذي في اليسار (Image Source) عند الانتهاء ..
    لاحظ يجب أن يكون ملف الصور بجانب البرنامج وعدم تغيير موقعه حتى لايتم فقد الرابط بينهما :
                         
    Change Image.zip
  23. Moosak's post in المهام الاخيره للموظفين was marked as the answer   
    وعليكم السلام ورحمة الله وبركاته .. 🙂 
    تفضل .. ستجد طلبك في الاستعلام  Last_Mission_Detail_Q


    مهام الموظفين.accdb
  24. Moosak's post in هل بالامكان انشاء نقش مثل نقش الهاتف was marked as the answer   
    الحمدلله أكتملت الفكرة والتنفيذ 🙂 
    عملت نموذجين .. وتبقى تكملة المشروع لتكون صفحة تسجيل دخول مكتملة 🙂 
    النمط الأول :

    النمط الثاني :

    للتحميل :
    MoosaK_Pattern_Lock.accdb
  25. Moosak's post in هل هذا خطأ في الكود أم لا؟ (إخفاء واجهة أكسيس) was marked as the answer   
    هذا السطر يتحكم بخاصية ضغط وإصلاح قاعدة البيانات عند الإغلاق ..
    وشخصيا أرى أن بقائه مفعلا True في جميع الأحوال هو أمر جيد 🙂 
    لذلك وضعته True في الحالتين
     
×
×
  • اضف...

Important Information