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

Foksh

أوفيسنا
  • Posts

    3856
  • تاريخ الانضمام

  • Days Won

    158

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

  1. جزاكم الله خيرا اخي وأستاذنا الفاضل 😇 تسرني مشاركتك ومرورك اللطيفين 💐
  2. وعليكم السلام ورحمة الله وبركاته 🤗 سأرى ما يمكنني فعله بطريقة أخرى ، ولا يهمك. في المرات القادمة حاول استخدام الرمز <> لوضع الأكواد فيه اخي الكريم 😇
  3. التحديث الجديد من مرسال الواتس أب - الإصدار الثاني . يحتوي على الإضافات والتحسينات التالية :- 1️⃣ التحسينات :- تحسين التعامل مع المرفقات الأكثر من مرفق واحد ، بحيث يتم التعامل معها دفعة واحدة بدلاً من التعامل مع كل مرفق بشكل مستقل ( تقليل الوقت ) . تحسين عمليات المحاكاة للوحة المفاتيح للصق الرسالة والملفات داخل تطبيق واتس أب سطح المكتب . 2️⃣ الإضافات الجديدة :- إنشاء جداول الخدمة ( عددها 3 ) بشكل تلقائي . إضافة ميزة الإستيراد من ملفات VCF ( النسخة الإحتياطية من قائمة الأسماء من الجوال ) . بحيث يتم استيراد الأرقام والأسماء الى جدول Tbl_Contacts ، من خلال زر ، مع دعم التعامل مع الترميزات والتشفيرات المختلفة . وأيضاً الأرقام يتم تحويلها إلى صيغة دولية تلقائيًا (مثلاً: 079xxxx → +96279xxxx) . إضافة ميزة إنشاء جهة اتصال جديدة ( قيد التطوير للأفضل ) ، من خلال الزر . إضافة ميزة "إرفاق التوقيع مع الرسالة" . ويمكن التحكم بها من خلال جدول الإعدادات Tbl_SendSettings . إضافة ميزة الإرسال من دفتر العناوين ( متعدد الإختيار ) ، أو ادخال رقم هاتف بشكل يدوي . عند ادخال رقم هاتف يدوي ( محلي ) بدون مفتاح الدولة ، يتم قراءة قيمة رمز الدولة الإفتراضي من الجدول Tbl_SendSettings الخاص بالإعدادات . وعليه فسلت بحاجة لإضافة مفتاح الدولة المحلية بشكل يدوي وإلزامي . إضافة ميزة تقييد مفتاح الإيموجي من خلال جدول الإعدادات . فمنح أو رفض الصلاحية بالوصول اليه . ( قيد التطوير بحيث يتم المنع حتى من خلال لوحة المفاتيح ) . إضافة ميزة تحديد أنواع الملفات المسموح للمستخدم بإرسالها في جدول الإعدادات نفسه . إضاقة التحكم بفترة الإنتظار بين الرسالتين عند الإرسال المتعدد ( بالثواني - القيمة الإفتراضية = 2 ) . إضافة ميزة التحكم بالحد الأقصى لحجم الملفات المرفقة ( فردي أو أكثر من مرفق ) من خلال جدول الإعدادات أيضاً . إضافة رابط لتحميل نسخة برنامج واتس أب سطح المكتب من مصدره على موقع Whatsapp ، من خلال الزر . إضافة ميزة الحفظ التلقائي للأرقام الغير مخزنة في دليل الهاتف ( الجدول Tbl_Contacts ) . بحيث يتم تعريف الرقم بأنه "غير معروف" . وفي التعديلات اللاحقة سيتم إضافة ميزات لها . جميع الرسائل المرسلة ( الناجحة والغير ناجحة ) سيتم تخزينها في الجدول Tbl_Message . أيضاً في التعديلات اللاحقة سيتم إضافة ميزات لها . :- دعوة لتجربة الإستيراد من ملفات الـ VCF ، وإخباري بالنتيجة عن مدى صحة الإستيراد . السبب في سؤالي هذا هو اختلاف إصدارات هذه الملفات الناتجة عن اختلاف إصدارات أنظمة التشغيل في الهاتف الخلوي ، أو اختلاف الحصول عليها حسب البرنامج . وللعلم الـ VCF هي ملفات تستخدم لتخزين معلومات جهات الاتصال . كيف نحصل عليها :- في الأندرويد : الذهاب إلى تطبيق جهات الاتصال ثم الإعدادات ثم ابحث عن استيراد و تصدير جهات الإتصال ثم حفظ كملف VCF . في الآيفون : لا يدعم آيفون هذه الميزة ( تصدير جهات الإتصال ) إلا من خلال تطبيقات كمبيوتر مثل 3UTools وشبيهاته . 3️⃣ صور الواجهة الجديدة :- 4️⃣ تحميل الإصدار الجديد :- WhatsApp Sender 2025.zip 😬 يوجد سطر لم أقم بحذفه سهواً أثناء التعديلات في دالة الإستيراد الرئيسية من المديول في الدالة Public Function ImportVCF . السطر :- Forms("Frm_Sender").Controls("Text0").Requery حيث أن هذا العنصر تم الإستغناء عنه . ومرفق في طيه ملف VCF تجريبي للتجربة Test VCF.zip
  4. ما رأيك بهذه الفكرة أيضاً .. On Error GoTo ErrorHandler Dim folderNames As Variant Dim folderPath As String Dim result As Long Dim i As Long folderNames = Array( _ "DDB_Control", "IMG_Company", "IMG_Company_ReP", "IMG_Wallpaper_backgreound", _ "App_IMG_Wallpaper_backgreound", "IMG_Editor_Menu", "Cantry_IMG", "fonts", _ "Icon_Button", "Icon_Msgbox", "Sound", "Wallpaper", "Video", "db_BE", _ "ExE", "IMG_Report", "File_word", "File_Excel", "Book", "File_PowerPoint", _ "File_Text", "File_Code", "All_InFile_One_Zip_Rar", "ICOn", "Icon_bar_DB", _ "Icon_bar_Form_Report", "Icon_Button", "icon_Gif", "Icon_Msgbox", _ "LinkedDB_Backups", "Office_Video", "Qr", "QR_User", "Resources", _ "World_Cantry", "Gif_IMG", "Fix_Photo", "db_db_db_test_link", _ "Corrupted_DBs", "Corrupted_Archives", "Change_Dy_Time_All_Table", _ "Add Fonts.bmp" _ ) For i = LBound(folderNames) To UBound(folderNames) folderPath = Application.CurrentProject.Path & "\" & folderNames(i) If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\" result = SetFileAttributes(folderPath, FILE_ATTRIBUTE_NORMAL) If result <> 0 Then Me.lblStatus.Caption = "تم إظهار المجلد بنجاح: " & folderPath Me.lblStatus.ForeColor = vbGreen Else Me.lblStatus.Caption = "فشل في إظهار المجلد أو غير مخفي أساساً! " & folderPath Me.lblStatus.ForeColor = vbRed End If DoEvents Next i Exit Sub ErrorHandler: Me.lblStatus.Caption = "حدث خطأ: " & Err.Description Me.lblStatus.ForeColor = vbRed
  5. ولا يهمك أخي الفاضل .. استكمل باقي المطلوب بشكل واضح ، وإن شاء الله تجد مطلبك ..
  6. طيب ، جرب هذا الحل الذي لا يعتمد على اي تقرير أو جدول , حيث سيتم قراءة الصور من المجلد A1 ، ثم دمجها إلى ملف PDF داخل المجلد PDF . لم أضف فكرة حذف الصور بعد الدمج حتى تتأكد من أن هذا طلبك 100% Arshafah.zip
  7. طيب تمام ، الآن اللي وضح لي كالآتي :- 1. من خلال الزر ، تريد ان يتم دمج الصورة الى المجلد PDF بملف بصيغة PDF بحيث كل صورة في صفحة . 2. بعد التصدير ونجاح العملية ، حذف الصور وتفريغ المجلد A1 من محتوياته . لكن الغير واضح هو :- أرجو منك التوضيح بشكل يسير أخي الفاضل !!
  8. يعني باختصار لما تفضلت به أعلاه :- تريد ان يتم دمج الصور التي في المجلد A1 بغض النظر عن عددها أو طبيعتها أو تكراراتها ، في ملف PDF داخل المجلد A2 !!!!!؟ وإذا كان غير صحيح ما فهمته ، ارجو منك التوضيح بشكل أكثر دقة . وتحديد وظيفة الجدول tblAttach ؟؟؟؟؟
  9. تمازحني بلا شك معلمي الفاضل 😅 .. هذه محاولة قديمة تتعامل مع الأمر نفسه بدون جدول أو تقرير من خلال Word . ولكني لم أدرجها خشية أن يقول لي أحد أنه ماذا لو لم يكن هناك برنامج Word . Dim fd As Object Dim selectedFile As Variant Dim pdfPath As String Dim wordApp As Object Dim wordDoc As Object Dim imgPath As String Dim imgCount As Integer Dim firstImage As Boolean Set fd = Application.FileDialog(3) With fd .Title = "اختر الصور المطلوبة" .AllowMultiSelect = True .Filters.Clear .Filters.Add "ملفات الصور", "*.jpg;*.jpeg;*.png;*.bmp;*.gif" If .Show = -1 Then pdfPath = CurrentProject.Path & "\A2\الصور_المحددة_" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".pdf" If Dir(CurrentProject.Path & "\A2", vbDirectory) = "" Then MkDir CurrentProject.Path & "\A2" End If Set wordApp = CreateObject("Word.Application") Set wordDoc = wordApp.Documents.Add wordApp.Visible = False With wordDoc.PageSetup .Orientation = 0 .TopMargin = 36 .BottomMargin = 36 .LeftMargin = 36 .RightMargin = 36 End With imgCount = 0 firstImage = True For Each selectedFile In .SelectedItems imgPath = CStr(selectedFile) imgCount = imgCount + 1 With wordDoc.Content If Not firstImage Then .InsertBreak 2 ' فاصل صفحة قبل الصورة الجديدة (ماعدا الأولى) Else firstImage = False End If .InsertAfter vbCrLf .ParagraphFormat.Alignment = 1 .InlineShapes.AddPicture imgPath, False, True End With With wordDoc.InlineShapes(wordDoc.InlineShapes.Count) .LockAspectRatio = True If .Width > 500 Then .Width = 500 End With Next selectedFile wordDoc.Range(0, 0).Delete wordDoc.SaveAs2 pdfPath, 17 wordDoc.Close False wordApp.Quit MsgBox "بنجاح إلى المسار PDF تم تصدير الصور لملف " & vbCrLf & _ pdfPath, _ vbInformation + vbMsgBoxRight, "" Else MsgBox "لم يتم اختيار أي صور", vbExclamation + vbMsgBoxRight, "" End If End With Set wordDoc = Nothing Set wordApp = Nothing Set fd = Nothing وتم توضيح بعض الأجزاء بتعليقات بسيطة ..
  10. تفضل أخي الكريم ، ما تم هو:- انشاء جدول يحتوي حقل ترقيم تلقائي ( ليس ذا علاقة بالموضوع ، ولكنه عادة ... ) ، وحقل لإضافة المسارات اليه عند اختيارك للصور . ثم إنشاء تقرير مصدره الجدول السابق ، وتم إنشاء عنصر صورة مصدره المربع النصي المرتبط بالحقل الخاص بالمسارات . ثم داخل التقرير لعرض كل صورة في صفحة مستقلة ، في قسم التفاصيل = = تقسيم الصفحات بعد هذا الجزء . وفي نموذج الإفتراضي ، في الزر جعلت لك الأحداث داخل نفس الزر بحيث عند النقر عليه ، تستطيع اختيار الصور التي تريدها ، وبعد الموافقة عليها سيتم فتح التقرير وتصديره الى ملف PDF في المجلد A2 كما طلبت . وهذا من خلال الكود التالي :- Private Sub Command0_Click() Dim fd As Object, selectedFile, db As DAO.Database, rs As DAO.Recordset Dim response As Integer, exportPath As String response = MsgBox("هل تريد حذف السجلات القديمة قبل إضافة الصور الجديدة؟" & vbCrLf & vbCrLf & _ "نعم: لحذف السجلات القديمة أولاً" & vbCrLf & _ "لا: للإبقاء على السجلات القديمة وإضافة الجديدة" & vbCrLf & _ "إلغاء: لإيقاف العملية بالكامل", _ vbQuestion + vbYesNoCancel + vbMsgBoxRight, "خيارات الإضافة") If response = vbCancel Then Exit Sub exportPath = CurrentProject.Path & "\A2\تقرير_الصور_" & Format(Now(), "yyyy-mm-dd_hh-mm-ss") & ".pdf" If Dir(CurrentProject.Path & "\A2", vbDirectory) = "" Then MkDir CurrentProject.Path & "\A2" Set db = CurrentDb() If response = vbYes Then db.Execute "DELETE FROM Tbl_Foksh", dbFailOnError Set fd = Application.FileDialog(3) With fd .Title = "اختر الصور المطلوبة" .AllowMultiSelect = True .Filters.Clear .Filters.Add "ملفات الصور", "*.jpg;*.jpeg;*.png;*.bmp;*.gif" If .Show = -1 Then Set rs = db.OpenRecordset("Tbl_Foksh") For Each selectedFile In .SelectedItems rs.AddNew rs!Pic_Path = CStr(selectedFile) rs.Update Next rs.Close DoCmd.OutputTo acOutputReport, "Report1", acFormatPDF, exportPath, False MsgBox "تمت العملية بنجاح" & vbCrLf & _ IIf(response = vbYes, "تم حذف السجلات القديمة", "تم الاحتفاظ بالسجلات القديمة") & vbCrLf & _ "تم إضافة مسارات الصور الجديدة" & vbCrLf & _ "تم تصدير التقرير إلى: " & exportPath, _ vbInformation + vbMsgBoxRight, "" Else MsgBox "لم يتم اختيار أي ملفات", vbExclamation + vbMsgBoxRight, "" End If End With Set rs = Nothing: Set db = Nothing: Set fd = Nothing End Sub حيث يسمح لك الكود ، بحذف السجلات السابقة من الجدول أو الإحتفاظ بها وإضافة صور ( سجلات جديدة ) أو إلغاء العملية كاملة . ملف للتجربة :- frmPDF.zip
  11. لا أعلم طبيعة القاعدة التي تعمل عليها ، ولكن من خلال المرفقات التي يتم التنفيذ عليها ، هذه النتيجة :- فقط انا ما قمت به هو الملف المرفق من أستاذي أبو خليل ، وتنفيذ حدث "في الحالي" باستعمال الكود هذا ( مع تغيير اسم مربع النص ) :- Private Sub Form_Current() Dim strSQL As String If Not IsNull(Me.ID) Then strSQL = "SELECT COUNT(*) FROM (" & _ "SELECT modul.mouadel_3am FROM info_stagiere " & _ "LEFT JOIN modul ON info_stagiere.ID = modul.id " & _ "WHERE info_stagiere.annee='" & [Forms]![frm_examen_fin_formation]![annet] & "' " & _ "AND info_stagiere.grade='" & [Forms]![frm_examen_fin_formation]![grade1] & "' " & _ "AND info_stagiere.wilaya='" & [Forms]![frm_examen_fin_formation]![wilaya1] & "'" & _ ") WHERE mouadel_3am >= " & Me.mouadel_3am Me.txt_myoutonum = CurrentDb.OpenRecordset(strSQL)(0) End If End Sub وهذا الملف بعد التطبيق عليه الذي ارفقه معلمي ابو خليل سابقاً baseC4.zip
  12. الله يبارك فيك أخي الكريم .. شكراً على تهنئتكم اللطيفة
  13. غفر الله لك ولوالديك .. شكراً على مرورك اللطيف
  14. وعليكم السلام ورحمة الله وبركاته 🤗.. كفكرة ، قم بإنشاء تقرير يجلب الصور من مساراتها ، ثم قم بتصدير التقرير إلى ملف PDF . أعتقد هذا أنسب حل لك 😉 . أتابع من الجوال
  15. اممممممممم .. طيب جرب هذا التعديل ؟ الإستعلام الأصلي السابق ، وفي حدث في الحالي تعيين قيمة مربع النص الخاص بالترتيب .. baseC5.zip
  16. بالطبع اخي الكريم كلا ، هذا استعلام فرعي داخل استعلام رئيسي المرفق للتوضيح أكثر baseC4.zip
  17. وعليكم السلام ورحمة الله وبركاته ,, هذا يعني انه يمكن ان يكون المعيار مختلفاً !!!! طيب ، أمامك حلين اثنين في الوقت الحالي .. الأول من خلال معادلات مع الإستعانة بخلية ( عمود مساعد ) . وسيكون الحل كالآتي :- سنجعل المعايير متغيره بحيث يتم ادخال عدد الذكور والإناث وعدد القاعات في الخلايا ( i5 , j5 , h5 ) في الخلية المساعدة ولنفترض E2 ، نستعمل هذه المعادلة :- =IF(D2="M", COUNTIF($D$2:D2,"M"), COUNTIF($D$2:D2,"F")) طبعاً ، وسنسحب المعادلة الى آآآخر خلية للتنفيذ عليها . ولا مشكلة لو تم اخفائها على سبيل المثال . الآن في العمود C والخلية C2 نستخدم هذه المعادلة :- =IF(D2="M", "قاعة " & CEILING(E2/$I$5,1), "قاعة " & CEILING(E2/$J$5,1)) الثاني من خلال الماكرو التالي :- Sub DistributeStudentsToRooms() Dim ws As Worksheet Dim lastRow As Long, i As Long Dim totalRooms As Integer, malesPerRoom As Integer, femalesPerRoom As Integer Dim maleCount As Integer, femaleCount As Integer Dim roomAssignment As Integer Dim roomCounters() As Integer Dim gender As String Set ws = ThisWorkbook.Sheets("ورقة1") totalRooms = ws.Range("H5").Value malesPerRoom = ws.Range("I5").Value femalesPerRoom = ws.Range("J5").Value ReDim roomCounters(1 To totalRooms, 1 To 2) lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ws.Range("C2:C" & lastRow).ClearContents For i = 2 To lastRow gender = ws.Cells(i, "D").Value For roomAssignment = 1 To totalRooms If gender = "M" Then If roomCounters(roomAssignment, 1) < malesPerRoom Then roomCounters(roomAssignment, 1) = roomCounters(roomAssignment, 1) + 1 Exit For End If Else If roomCounters(roomAssignment, 2) < femalesPerRoom Then roomCounters(roomAssignment, 2) = roomCounters(roomAssignment, 2) + 1 Exit For End If End If If roomAssignment = totalRooms Then roomAssignment = 0 Next roomAssignment ws.Cells(i, "C").Value = "قاعة " & roomAssignment Next i MsgBox "تم توزيع الطلاب على القاعات بنجاح", vbInformation + vbMsgBoxRight, "" End Sub وهذا ملف مرفق للطريقتين :- Desktop.zip
  18. مشاركة مع معلمي الفاضل .. جرب هذا الاستعلام :- SELECT m.*, i.*, (SELECT COUNT(*) FROM info_stagiere i2 LEFT JOIN modul m2 ON i2.ID = m2.id WHERE i2.annee = i.annee AND i2.grade = i.grade AND i2.wilaya = i.wilaya AND (m2.mouadel_3am > m.mouadel_3am OR (m2.mouadel_3am = m.mouadel_3am AND i2.ID <= i.ID))) AS myoutonum FROM info_stagiere i LEFT JOIN modul m ON i.ID = m.id WHERE i.annee = [Forms]![frm_examen_fin_formation]![annet] AND i.grade = [Forms]![frm_examen_fin_formation]![grade1] AND i.wilaya = [Forms]![frm_examen_fin_formation]![wilaya1] ORDER BY m.mouadel_3am DESC, i.ID ASC;
  19. والخبر الجيد بحكم تجربتي مع استيراد بيانات من جوجل شيت الى جداول اكسيس نعم ، يمكنك تحويل الملف إلى Google Sheets واستبدال أكواد VBA بـ Google Apps Script (لغة برمجة مختلفة) طبعاً للوهلة الأولى هذا غير ممكن بشكل مباشر ، لكن يمكنك استخدام Google Apps Script كما أخبرتك لإنشاء وظائف مماثلة في Google Sheets وطبعاً مستقبلاً سأحاول ادراج موضوع بهذا الخصوص ( لضيق الوقت 😇 )
  20. وعليكم السلام ورحمة الله وبركاته .. بالنسبة للسطرين التاليين :- سيتم الذهاب الى المجلد Backup ، طبعاً بغض النظر عن وجود المجلد أو لا ( أي أنه لا يتم التحقق من وجود المجلد قبل فتحه ) .. ثم لاحظت انك انتقلت الى المجلد :- فما الهدف !!!!! إلا إذا كان مقصدك ان المجلد السابق موجود داخل المجلد Backup هنا يجب ان تكون الجملة :- cd D:\BACKUP$\periodic أيضاً لاحظ أن عبارة :- لإنشاء مجلد بالتاريخ والوقت الحالي قد يلحقك بمشكلة إذا كانت الساعة أقل من 10 ، وهذا مثال على نتيجة السطر :- 20_5-_-07-12_ 1_46_01.3 لاحظ أن الساعة 1:47 لكن دقق في النتيجة لإسم المجلد يوجد فراغ قبل الرقم 1 . بالعموم ، فكرتك جميلة وقابلة للتطوير اذا اجتهدت عليها أكثر . فشكراً لك على هذه المشاركة الجميلة لفكرة نسخ إحتياطي لقاعدة البيانات من مجلد رئيسي بمجلداته الفرعية مع ضبط بعض الخصائص ..
  21. اسمح لي بمداخلة أخي جو .. الآن عند فتح التقرير والرسالة أمامه ، فلن يسعك رؤية التقرير ( إن كان صفحة أو أكثر .. ) لأسباب متعددة ، منها أن التقرير في وضع المعاينة سيكون ذا خط صغير ولن تستطيع تحريك أشرطة التمرير أو تكبير صفحة التقرير - Zoom - لرؤيته بشكل واضح ، صحيح ؟؟ إذا فإن عرض التقرير أو عدمه لن يغنيك بشيء. لذا ومن باب المنطق إما أن تجعل زر الطباعة داخل التقرير ، وبهذا ستتمكن من رؤيته كاملاً وتفحصه . أو رسالة الطباعة دون الإستناد لشرط عرض التقرير ( قد يكون مفتوحاً بوضع الإخفاء مثلاً .. ) هذه وجهة نظري الغير ملزمة طبعاً 😇
×
×
  • اضف...

Important Information