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

Foksh

الخبراء
  • Posts

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

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

  • Days Won

    85

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

  1. ما شاء الله ، عمل جميل أستاذنا الكبير @kkhalifa1960 ، لكن لسوء حظي ، لم أتمكن من رؤية النتيجة ، وظهر الخطأ التالي :- عند السطر :- If OleCreatePictureIndirect(PicDesc, IID_IPicture, True, IPic) = 0 Then مع العلم انني استخدم اصدار أوفيس 2019 - 64 بت
  2. اسمحوا لي مشاركتكم ،، فقد أعجبت بالفكرة استناداً إلى ملف الأستاذ @Moosak ، وإن سمح لي بالتعديل عليه لتوليفه حسب حاجة أخونا @Mr-X التعديلات بسيطة الى حد ما ، ولكنها لبت المطلوب في المرفق التالي DBSize.accdb
  3. مشاركة في النقاش مع الأخوة الأفاضل والأساتذة الكرام .. غالباً قد تحدث المشكلة بسبب عدم تسجيل مكتبات ActiveX التي يعتمد عليها الـ ComboBox جرب هذه الفكرة .. 1. افتح CMD في وضع التشغيل كمسؤول . 2. اذا كان لديك :- اصدار 32-Windows : اكتب هذين السطرين كل سطر في أمر مستقل regsvr32 C:\Windows\System32\mscomctl.ocx regsvr32 C:\Windows\System32\comctl32.ocx اصدار 64-Windows : اكتب هذين السطرين كل سطر في أمر مستقل regsvr32 C:\Windows\SysWOW64\mscomctl.ocx regsvr32 C:\Windows\SysWOW64\comctl32.ocx 3. أعادة تشغيل الويندوز مرة أخرى . * قد يعمل معك سطر واحد من إعادة تسجيل هذه الملفات ، ولا يشترط أن يتم تسجيل الملفين معاً . وفي بعض الإصدارات في اوفيس التي تتعارض مع الويندوز 11 بعد الترقية لا التثبيت الجديد ، قد تضطر لإعادة تثبيت أوفيس مرة أخرى .
  4. عند حفظ الملف بصيغة accde لا أعتقد أنك بحاجة لهذه النقطة ، حتى لو لم تقم بقفل محرر الأكواد VBA بكلمة مرور .
  5. وعليكم السلام ورحمة الله وبركاته.. اخي @الحلبي ، أسعد الله اوقاتك .. سابقاً كان لنا نقاش في هذا الموضوع ، وكان ردي لك ملف في هذه المشاركة . أتمنى أنك تستطيع استغلاله جيداً وتوظيفه حسب رغبتك 😇 .
  6. يوجد فكرة في جمجمتي 😅 ، لكنها قيد التحضير والتنفيذ. إلا أن ضيق الوقت في العمل ما يشغلني عنها ..
  7. مشاركة جانبية مع الأستاذ خليفة .. جرب هذا الاستعلام ، وأدخل كلمة = إيليزي كما هو في مثالك في الصورة SELECT الولاية AS Expr1, الإجمالية.البلدية, الإجمالية.الجنس, Sum(IIf([نوع الإعاقة]='حركي',1,0)) AS حركي, Sum(IIf([نوع الإعاقة]='ذهني',1,0)) AS ذهني, Sum(IIf([نوع الإعاقة]='بصري',1,0)) AS بصري, Sum(IIf([نوع الإعاقة]='سمعي',1,0)) AS سمعي, Sum(IIf([نوع الإعاقة]='متعدد الإعاقة',1,0)) AS [متعدد الإعاقة], Count(*) AS [de CountC] FROM الإجمالية WHERE (((الإجمالية.[نسبة الإعاقة])='% 100')) GROUP BY الولاية, الإجمالية.البلدية, الإجمالية.الجنس ORDER BY الولاية, الإجمالية.البلدية, الإجمالية.الجنس;
  8. من وجهة نظري .. أيضاً اتبع فكرة قديمة وهي :- 1. أنشئ مربع نص باسم C1 مثلاُ . 2. في حدث عند الشوائب اجعل قيمته = 0 Private Sub Form_Dirty(Cancel As Integer) Me.C1 = 0 End Sub 3. في حدث عند الإغلاق أو إذا كان لدي زر خاص بالإغلاق للنموذج DoCmd.CancelEvent If Me.C1 = 0 Then Me.Undo End If بالنسبة لي هذا يمنع الحفظ التلقائي للسجلات الغير مكتملة أولاً ، ثم يجعلني أتحكم في - متى أحفظ أو لا - السجلات في النموذج .
  9. في مشاركتك الأولى ، أهلا وسهلاً بك معنا أخي الكريم @mhm55 . ونتمنى أن تجد ما تبحث عنه من فائدة ومعلومة ونصيحة اسمح لي أولا بلفت انتباهك إلى ضرورة التقيد بـ قوانين المنتدى ، حتى تصل إلى مطلوبك بشكل سريع و واضح . ومن هذه الأمور التي عليك الإلتزام بها :0 1. ضرورة الإيضاح في طلبك بشكل كافي و شافي و وافي . 2. ارفاق ملف لتوضيح الصورة إن لزم الأمر . 3. لوضع كود في المشاركة ، استخدم علامتي التكويد <> ثم لصق الكود ليكون سهلاً في القراءة ؛ كما سترى لاحقاً . أما بالنسبة لطلبك ومشكلتك ،، عليك أولا التأكد من أمرين مهمين هما :- 1. تأكد أن ملف الإكسيل موجود في المسار المحدد في الكود (CurrentProject.Path & "\ITEMX.xlsx") 2. تأكد أن اسم ورقة العمل في ملف الإكسيل هو فعلاً = "SHEET1$" . إذا كان الاسم مختلفاً ، قم بتعديله في الكود . 3. جملة الإستعلام في الكود الذي ارسلته غير صحيحة في آكسيس ، والتالي تعديل عله يكون صحيحاً * بعد تجربة الكود على ملف سابق كما أشار معلمنا @أبو إبراهيم الغامدي ، تبين ان الكود الأصلي في مشاركتك يعمل بدون أي مشاكل . والجملة 3 أعلاه أصبحت بعد لتجربة غير صحيحة أشكر معلمنا الفاضل للفت انتباهي
  10. بسيطة يا صديقي .. تستطيع ذلك بعدة طرق ، منها :- اولاً تعريف متغير عام في أي وحدة نمطية أو وحدة نمطية جديدة ، كما تريد Public SelectedGrades As String ثم ، تعديل الكود السابق ليصبح ما يلي :- Dim varItem As Variant Dim strCriteria As String Dim strFilter As String Dim strSelectedGrades As String If Me.lst_XX_100.ItemsSelected.Count = 0 Then MsgBox "يرجى اختيار عنصر واحد على الأقل من الليست بوكس.", vbExclamation, "تنبيه" Exit Sub End If For Each varItem In Me.lst_XX_100.ItemsSelected If Len(strCriteria) > 0 Then strCriteria = strCriteria & " OR " End If strCriteria = strCriteria & "(grade = '" & Me.lst_XX_100.Column(0, varItem) & "' AND " & _ "groupe = '" & Me.lst_XX_100.Column(1, varItem) & "')" If Len(strSelectedGrades) > 0 Then strSelectedGrades = strSelectedGrades & " - " End If strSelectedGrades = strSelectedGrades & Me.lst_XX_100.Column(0, varItem) Next varItem SelectedGrades = strSelectedGrades strFilter = "annee = '" & Me.ANNEE200 & "' AND (" & strCriteria & ")" DoCmd.OpenReport "rap_list", acViewPreview, , strFilter الآن في التقرير في حدث عند التحميل ، وعلى افتراض ان لديك مربع نص (TX_LBL) ؛ نضع الجملة التالية Me.Tx_Lbl.Value = SelectedGrades ولضمان تفريغ قيمة المتغير عند اغلاق التقرير ، ضع في الحدث عند الاغلاق للتقرير ، الكود التالي SelectedGrades = "" وملفك بعد التعديل ، ويضم الحل السابق وهذا الحل . base_m.accdb
  11. وعليكم السلام ورحمة الله وبركاته أخي @moho58 ، جرب هذا الكود في زر عرض التقرير :- Dim varItem As Variant Dim strCriteria As String Dim strFilter As String If Me.lst_XX_100.ItemsSelected.Count = 0 Then MsgBox "لم تقم باختيار الدرجة", , "تنبيه" Exit Sub End If For Each varItem In Me.lst_XX_100.ItemsSelected If Len(strCriteria) > 0 Then strCriteria = strCriteria & " OR " End If strCriteria = strCriteria & "(grade = '" & Me.lst_XX_100.Column(0, varItem) & "' AND " & _ "groupe = '" & Me.lst_XX_100.Column(1, varItem) & "')" Next varItem strFilter = "annee = '" & Me.ANNEE200 & "' AND (" & strCriteria & ")" DoCmd.OpenReport "rap_list", acViewPreview, , strFilter وأخبرنا بالنتيجة
  12. مداخلة سريعة متأخرة بالنسبة لي دائماً وفي أي مشروع اعتمد على عدة عوامل لأستفيد منها من ناحية اختلاف سرعة الاتصال اللحظة بالشبكة بين جهاز وآخر ( ممكن يكون السبب اختلاف الكمبيوتر أو كرت الشبكة وظريقة الاتصال بها ، موزع الشبكة ... إلخ ) وهذه الاستفادة تأتي لي دائماً بنتيجة خالية من المشاكل وهي كما ذكر أستاذ موسى استخدام الدالة DMAX ولكني اجعلها في آآآآآخر مرحلة وهي عند النقر على الزر حفظ ، فأجعل الترقيم للحقل يأتي كأول إجراء يقوم به النموذج وهو جلب آخر ترقيم وإضافة 1 له ، وهنا تأتيني الإستفادة من اختلاف سرعة الاتصال بالشبكة .
  13. تفضل أخي الكريم ، test.accdb حاول مستقبلاً تجنب استخدام المسميات العربية للمكونات والعناصر لأنها ستتعبك في العمل وكتابة الأكواد والإستعلامات ,
  14. وعليكم السلام ورحمة الله وبركاته .. أستاذنا الكبير ، هل أفهم أنك تريد استخراج الأيقونة من ملف Shell32 وحفظها كأيقونة ، أم كصورة ؟؟؟؟
  15. تم تحميل الملف ، ولم تظهر اي مشكلة أو تعارض مع الأنتي فايروس
  16. مشاركة مع الأستاذ @Barna ، لاحظ أخي الكريم @tiger wanted أن الكود الذي ارفقته سيعتمد على :- 1. القيمتين SID و Token من حسابك في شركة Twilio الخاص بك ، فهل تملك حساب للحصول على المفتاحين لتستطيع استخدام الخدمة ؟؟ 2. لاحظ في هذه العبارة From=whatsapp:14155238886 ، أن المستخدم خصص رقم هاتف لأرسال رسالة واتس أب ، فهل هذا رقمك ؟؟؟؟؟؟ 3. في معظم الخدمات التي تستخدم خدمات API يجب توافر مكتبة JSON الخاصة بالخدمة لتستطيع الأرسال و تلقي الرد من خلال آكسيس . لذا فأن الكود لن يعمل معك لأنك ستحتاج ارقام خاصة بحسابك في هذه الخدمة لدمجها في الكود .
  17. حمد لله على سلامتك أستاذ خليفة . ونسأل الله أن تكون بصحة وعافية 💐
  18. تأكد مما يلي :- 1. مركز التوثيق :- 2. تفعيل الماكرو :- 3. والأهم من هذا ، هو التأكد من لغة الـ Unicode في الويندوز :- 4. إحتمالية ضرورة عمل ضغط وإصلاح لقاعدة البيانات . هذا إجمالاً ما قد يسبب هذه المشكلة ( بالإعتماد أن قاعدة البيانات تعمل بشكل طبيعي على أجهزة أخرى ) .
  19. وعليكم السلام ورحمة الله وبركاته أخي @nabilbibo2255 ، وأهلاً وسهلاً بك معنا في اسرة هذا المنتدى الكبير . أولاً أدعوك للمساهمة في تطبيق أساسيات وقوانين المنتدى عند نشر أي موضوع ، بحيث :- 1. يكون العنوان صريح ودال على المطلوب . 2. الشرح الوافي الكافي الشافي للمشكلة . 3. ارفاق ملف مرفق يساعد ويدعم في إيجاد حل على أرض الواقع . 4. لا تحاول استخدام مسميات الحقول والعناصر في المشروع بأسماء عربية أو ذات رموز أو أرقام فقط . أما فيما يتعلق بسؤالك ، فأنصحك باستعمال علامات التكويد <> لوضع الكود بدلاً من الصورة ، ليسهل قراءته والتعامل معه ممن يحاول ان يساعدك في الحل . لاحظت ان الكود يعمل بشكل سليم إلى حد ما ، ولكن المشكلة تكمن في الشروط التي على أساسها سيتم فتح النموذج . Private Sub Form_Load() On Error Resume Next Dim xx As Integer xx = Nz(DCount("[IDEmp]", "fin_ssolde"), 0) If xx > 0 Then Beep If MsgBox("هناك " & xx & " موظف(ين) انتهت عقودهم. هل ترغب في عرض التفاصيل؟", _ vbYesNo + vbMsgBoxRight, "تنبيه") = vbYes Then DoCmd.OpenForm "fin_ssolde", acNormal Else DoCmd.OpenForm "frm_F20", acNormal End If Else DoCmd.OpenForm "frm_F20", acNormal End If End Sub حاول وأخبرنا بالنتيجة ..
  20. طبعاً الصورة من جدول اكسيل ، وانت تريدها في آكسيس ، صحيح ؟؟؟ الفكرة التي كانت موجودة سابقاً في أحد مشاريعي مشابهة لطلبك ولكن دون استثناء اي يوم ، والبداية من أول يوم في السنة . الفكرة تم تعديلها بحيث تم انشاء نموذج يحتوي كومبوبوكس يحتوي ارقام السنوات ( 2020 ، 2021 ، 2022 ، ..... 2030 ) . وكود المديول التالي الذي يتم استدعائه في زر :- Public Sub GenerateDatesTbl() Dim db As DAO.Database Dim rs As DAO.Recordset Dim startDate As Date Dim endDate As Date Dim currentDate As Date Dim yearSelected As Integer Dim dayName As String Dim sqlCreateTable As String Dim activeForm As Form Dim tableExists As Boolean On Error Resume Next Set activeForm = Screen.activeForm On Error GoTo 0 yearSelected = Nz(activeForm!Tx_Years.Value, 0) If yearSelected = 0 Then MsgBox "يرجى اختيار السنة أولاً", vbExclamation, "تنبيه" Exit Sub End If startDate = DateSerial(yearSelected, 12, 21) endDate = DateSerial(yearSelected + 1, 12, 20) tableExists = False Set db = CurrentDb On Error Resume Next tableExists = Not IsNull(db.TableDefs("TempDates").Name) On Error GoTo 0 If Not tableExists Then sqlCreateTable = "CREATE TABLE TempDates (ID COUNTER PRIMARY KEY, " & _ "DayName TEXT(50), DateValue DATE)" db.Execute sqlCreateTable DoCmd.SelectObject acTable, TempDates, True End If Set rs = db.OpenRecordset("TempDates", dbOpenDynaset) db.Execute "DELETE FROM TempDates" currentDate = startDate Do While currentDate <= endDate dayName = Format(currentDate, "dddd") If dayName <> "Friday" And dayName <> "Sunday" Then rs.AddNew rs!dayName = dayName rs!DateValue = currentDate rs.Update End If currentDate = currentDate + 1 Loop rs.Close Set rs = Nothing Set db = Nothing MsgBox "تم إنشاء التواريخ بنجاح", vbInformation, "نجاح" End Sub حيث بعد الاستدعاء سيتم انشاء جدول افتراضي يحتوي 3 حقول ( حقل الترقيم التلقائي ، وحقل اسم اليوم ، وحقل تاريخ اليوم ) . وسلامتكم والملف المرفق Insert Date.accdb
  21. مبارك حل المشكلة ، ويا حبذا لو تشاركنا طريقة الحل هنا ليستفيد منها الجميع 😇 ، ولتلافي الخطأ عند حصوله ..
  22. وعليكم السلام ورحمة الله وبركاته .. جرب هذا الكود بعد التعديلات على زر الفلترة :- Private Sub Cm1_Click() Dim filterCondition As String Dim formattedDate As String filterCondition = "" If Not IsNull(Me.tx1) Then If filterCondition <> "" Then filterCondition = filterCondition & " AND " End If filterCondition = filterCondition & "nom = '" & Replace(Me.tx1, "'", "''") & "'" End If If Not IsNull(Me.tx2) Then If filterCondition <> "" Then filterCondition = filterCondition & " AND " End If formattedDate = "#" & Format(Me.tx2, "MM/DD/YYYY") & "#" filterCondition = filterCondition & "moveDate = " & formattedDate End If If filterCondition <> "" Then Me.Filter = filterCondition Me.FilterOn = True Else Me.FilterOn = False End If End Sub في الكود تم استخدام دالة Replace لتأمين النصوص في حقل tx1 ضد الأخطاء الناتجة عن علامات الاقتباس المفردة . وتنسيق التاريخ فقط . اما في الكود التالي ، فقط استخدمت تنسيق التاريخ ؛ وبدلاً من استخدام علامة الاقتباس المفردة ' لتطويق النصوص ، استخدمت علامتي اقتباس مزدوجتين """ لتجنب أي مشكلات ناتجة عن وجود اقتباسات مفردة داخل النصوص . Private Sub Cm1_Click() Dim filterCondition As String Dim formattedDate As String filterCondition = "" If Not IsNull(Me.tx1) Then If filterCondition <> "" Then filterCondition = filterCondition & " AND " End If filterCondition = filterCondition & "nom = """ & Me.tx1 & """" End If If Not IsNull(Me.tx2) Then If filterCondition <> "" Then filterCondition = filterCondition & " AND " End If formattedDate = "#" & Format(Me.tx2, "MM/DD/YYYY") & "#" filterCondition = filterCondition & "moveDate = " & formattedDate End If If filterCondition <> "" Then Me.Filter = filterCondition Me.FilterOn = True Else Me.FilterOn = False End If End Sub
  23. حسب تجاربي السابقة = نعم نعم يوجد طرق ملتوية لكسر حماية قاعدة البيانات نعم ، لكني لم اعمل بها
  24. نعم يوجد بلا شك .. أولاً كلمة سر لقاعدة البيانات ( ولا أقصد الأكود VBA ) .. ثم حفظ قاعدة البيانات بامتداد Accde فقط !!!!!!! ولحماية جداولك وبياناتك ( سبق التطرق لهذه النقطة في عدة مواضيع في المنتدى )
×
×
  • اضف...

Important Information