بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 02/13/21 in all areas
-
بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته في هذا الدرس سأقدم نظرة عامة، ومُقدمة على التعابير القياسية Regular Expression وذلك لأهميتها الكبيرة في البرمجة. ملاحظة: لن اتطرق لكيفية كتابة الـ patterns نضرة لصعوبته على البعض لانه يحتاج اساسيات ومقدمات. في هذا الدرس سوف أستخدم بإذن الله لغة VBA في عمل اختبارات على الـ Regular Expression تعريف Regular Expression: هو كائن يصف نمطًا من المحارف ( أو الكلمات ). تعريف أعمق للتعابير القياسية: هي سلسلة من الأحرف التي تحدد نمطًا للبحث داخل النصوص (String) أو للمطابقة بين سلاسل من الأحرف. الهدف من التعاببير القياسية هو تسهيل عمليات البحث والاستبدال داخل النصوص، وتستخدم غالبًا في عمليات التحقق (Validation) وعمليات البحث (Searching) وايضًا في الحماية. ولتوضيح الفكرة بشكل أفضل بإمكاننا وضع مثال بسيط واقتراح الحلول له ثم بعد ذلك تبسيط الحل باستخدام التعابيير القياسية والتي سنرمز لها لاحقًا بـ RegExp. لنفرض أننا سنقوم ببرمجة نموذج تسجيل وستكون المدخلات المطلوبة ( اسم المستخدم - Username & البريد الإلكتروني - Email ) ونريد أن نتأكد من التالي: اسم المستخدم يجب أن يكون خليط من حروف وأرقام ، والرموز التالية فقط (_-.). البريد الإلكتروني يجب أن يكون بالشكل التالي : email_name@domain_name.top-level-domain مثال: cielblog@hotmail.com. وسيكون شكل نموذج التسجيل كالأتي: الحلول المقترحة كثيرة، مثلًا لكي نتأكد أن إسم المستخدم خالٍ من المسافات والرموز نحتاج لعمل تصفية (Filter) له، والتأكد اولًا من وجود مسافات واستبدالها مثلًا بالرمز _ او ازالتها كليًا، بعد ذلك تنقيح الاسم من الرموز الممنوعة ... عملية طويلة 🤔 اما البريد الإلكتروني يجب ان نتأكد اولًا من خلوه من المسافات ايضًا، والرموز الممنوعة في اغلب مشغلات البريد الإلكتروني، بعد ذلك التحرك قليلًا للتأكد أنّ ماقبل علامة @ هو String ومابعده String ثم التحقق أن ماقبل علامة النقطة - dot - هو String ومابعده هو top-level-domain ... عملية أطول 🤔 في التعابيير القياسية يمكننا اختصار كل هذه العمليات بسطر واحد أو نصف سطر حتى، وفي درسنا هذا سنتعلم كيف نحل مشكلتنا هذه ان شاء الله. أولاً: انسخ الفنكشن الآتي.. ' ----------------------------------------------------------------------' ' Return True if the given string value matches the given Regex pattern ' ' ----------------------------------------------------------------------' Public Function RegexMatch(value As Variant, pattern As String) As Boolean If IsNull(value) Then Exit Function ' Using a static, we avoid re-creating the same regex object for every call ' Static regex As Object ' Initialise the Regex object ' If regex Is Nothing Then Set regex = CreateObject("vbscript.regexp") With regex .Global = True .IgnoreCase = True .MultiLine = True End With End If ' Update the regex pattern if it has changed since last time we were called ' If regex.pattern <> pattern Then regex.pattern = pattern ' Test the value against the pattern ' RegexMatch = regex.test(value) End Function لاحظو الفنكشن يتكون من براميترات 2 الأول القيمة المراد اجراء التحقق عليها والبراميتر الثاني هو معيار التحقق ولو اردت ان اكتب تحقق لإسم المستخدم، سأكتب: If RegexMatch("semo", "^[\w_-]+$") = True Then MsgBox "Correct username", vbInformation, "CORRECT" Else MsgBox "Wrong username", vbCritical, "ERROR!" End If لو اردت ان اكتب تحقق للبريد الإلكتروني سأكتب: If RegexMatch("test@gmail.com", "[A-Za-z0-9_\-.]+@[A-Za-z0-9_\-.]+\.(com|org|net)") = True Then MsgBox "Correct email", vbInformation, "CORRECT" Else MsgBox "Wrong email", vbCritical, "ERROR!" End If للفائدة، google ممتلئ بالـ patterns ماعليك فقط ان تبحث قليلاً وستجد الباترن المطلوب ☺️ بالتوفيق للجميع.6 points
-
4 points
-
هل تريد فتح نموذج HTML من داخل بطاقة الشقة! ولماذا من هنا بالتحديد؟! تنزلا لرغبتك افعل الآتي.. قم بتغيير بيانات الرابط للزر ببيانات مناسبة أو استخدم التالي <a href='HTML' class='button'> ناقل </a></div> قم بتغيير شفرة الإجراء BeforeNavigate2 ليصبح كالتالي Private Sub WebBrowser_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) If URL Like "about:id*" Then 'Debug.Print URL DoCmd.OpenForm "FM_2", , , "cstr(ID)=" & CStr(Mid(URL, 9)), , acDialog End If If URL Like "*html*" Then DoCmd.OpenForm "HTML", , , , , acDialog End If Cancel = True End Sub عزيزي ناقل.. إذا كانت الأسئلة لا علاقة لها بهذا الموضوع مباشرة.. فأرجو منك تكرماً فتح مشاركة جديدة.. ولا بأس أن تشير إلى هذا المشاركة، أو إلى الأمثلة التي وردت فيها..3 points
-
السلام عليكم أردت أن أشارك معكم . يمكنك أيظن تجنب SQL injection عن طريق عمل برمتر وهي كا الاتي Public Function conect(LOGIN As String, passe As String) As Boolean Dim db As DAO.Database Dim rs As DAO.Recordset Dim qr As QueryDef Dim sq As String Set db = CurrentDb sq = "select * from users where User_Name=[Plogin] and User_Password=[Ppasse]" Set qr = db.CreateQueryDef(vbNullString, sq) With qr .Parameters("Plogin") = LOGIN .Parameters("Ppasse") = passe .ReturnsRecords = True Set rs = .OpenRecordset() End With If Not rs.EOF Then conect = True Else conect = False End If End Function ملاحظ الفنكشن للاستاذ المغربي محمد جهاوي مثال الصلاحيات.rar3 points
-
أهلابك.. نعم يمكن.. انسخ السطر المتعلق بالزر والذي أشرت إليه أعلا وسوف يأخذ نفس الخصائص Dashboard2003.mdb3 points
-
2 points
-
العفو، حياك الله اخي أبو إبراهيم. بالنسبة لسؤالك هل تقصد الباترن يُكتب باللغة العربية؟ او تقصد باترن للكشف ما اذا كانت اللغة عربية او لا؟ اذا كانت قصدك على كشف النص المدخل هل يتضمن حروف عربية او لا تفضل: If RegexMatch("سيمو", "[\u0600-\u06FF]") = True Then MsgBox "Is Arabic !", vbInformation, "CORRECT" Else MsgBox "Not Arabic ):", vbCritical, "ERROR!" End If اما اذا كنت تقصد الباترن يُكتب باللغة العربية فهذا الشيء غير ممكن.2 points
-
أهلا بك عزيزي أحمد.. في الواقع لم أفعل .. أما عن الاشكالات.. فمن أهمها.. استشعار أحداث وسوم صفحة المستعرص من داخل أكسس! وهذا بحمد الله تم الانتهاء منه.. جعل الصفحة تتفاعل مع تنسيقات الجيل الجديد.. وهذا بحمد الله تم الانتهاء منه.. أما العقبات.. فمن أقواها.. الكسل.. الوقت.. انظر إلى الفرق بين النسخة السابقة من المثال وبين النسخة التالية Dashboard2003.mdb2 points
-
أهلا بك عزيزي.. لا بأس إذا كان الأمر يتعلق بذات الموضوع.. زر الأمر "المزيد" عبارة عن رابط.. والروابط في HTML تحدث انتقال إلى شيء ما.. في حدث "قبل الانتقال" المتعلق بالروابط الموجودة على الصفحة: نقوم بإعاقة الرابط من الانتقال، وبعدها نأخذ بيانات الغرفة -والتي سبق أن مررناها للرابط- ونضعها في وظيفة فتح النموذج.. هذا كل ما في الأمر.. <a href='" & "ID" & RS(0) & "' class='button'> المزيد </a> خصيصة الرابط "href" مررنا إليها معرف الشقة، وعند النقر عليها يمرر المستعرض هذه القيمة إلى محدد نصي اسمه "URL" في حدث ما قبل الانتقال "BeforeNavigate2".. بعد ذلك نعيد استخراج معرف الشقة ونمرره إلى وظيفة فتح النموذج Private Sub WebBrowser_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean) If URL Like "about:id*" Then 'Debug.Print URL DoCmd.OpenForm "FM_2", , , "cstr(ID)=" & CStr(Mid(URL, 9)), , acDialog Cancel = True End If End Sub2 points
-
2 points
-
2 points
-
وعليكم السلام- اخى الكريم من فضلك فقد نبهنا على هذا الأمر كثيراً ان لا تقوم برفع اى مشاركة الا بعد استخدام خاصية البحث بالمنتدى ولم تجد المطلوب ... ولكن طلبك تكرر كثيراً بالمنتدى -تفضل مشكلة في اللغة العربية2 points
-
2 points
-
بارك الله فيك استاذ سليم والله عندك حق وبعد اذنك -تفضل اخى ابو اياد ... هذا البرنامج الممتاز ولكن عليك بتوليفه لطلباتك فلا أحد يمتلك الوقت لتلبية كل طلباتك كما أوضح لك استاذنا الكبير سليم حاصبيا سلفاً كلمة المرور لدخول البرنامج : لا اله الا الله برنامج مبيعات ومشتريات مجاني كلمة السر لا اله الا الله.xlsm2 points
-
مبروك الأستاذ محي الدين ابو البشر إنضمامك لعائلة الخبراء ,أسأل الله لك التوفيق والنجاح دائما ..وأعانك الله على هذه المسئولية الجديدة وسدد الله خطاك عن حق وجدارة بارك الله فيك وزادك الله من فضله2 points
-
2 points
-
1 point
-
1 point
-
بارك الله فيك، سلمت جهودك بصراحة جل ما توقعته أن أحصل على ملف مشابه مرفق ببعض النصائح ولم أتوقع هذا الجهد الكبييير ... ممنون لك جدا بكل ما تعنيه الكلمة1 point
-
بارك الله فيك أخي الفاضل ...... نعم فقط كنت اود معرفة طريق الاشارة الى اي نموذج في قاعدة البيانات وليس نموذج HTML تحديدا تم المطلوب ...... اشكرك اخي @أبو إبراهيم الغامدي أبشر استاذي الفاضل ...... اشكرك مرة اخرى وكتب الله اجرك1 point
-
السلام عليكم رد فعل الاعجاب له عدد معين متاح فى اليوم بحسب المجموعة و مجموعة عضو مميز ، حدها اليومي كان 10 و قد زدته الان الى 15 و طبعا لا يمكن ترك الخاصية مفتوحة دون حد بهدف التقنين و ان تمنح فقط لمن يستحق1 point
-
السلام عليكم أخى الكريم نقاط الاعجاب لابد أن تأتي من عضو آخر ، لا يمكنك اضافة النقاط لنفسك بحسب تصميم المنتدى1 point
-
1 point
-
اخى الفاضل الملف المرفق منك عباره عن جدول فقط قم بانشاء النموذج حتى لو كان باستخدام المعالج ثم ارفق الملف مره اخرى بالتوفيق1 point
-
جزاك الله خيرا د جسنين @SEMO.Pa3x 💐 استاذى العزيز @أبو إبراهيم الغامدي راجع هذا الروابط لعله ما تريد الى ان يشاركنا د حسنين https://stackoverflow.com/questions/29729391/regular-expression-arabic-characters-and-numbers-only https://en.wikipedia.org/wiki/Arabic_script_in_Unicode بارك الله فيكم اساتذتى وجزاكم الله عنا كل خير1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
1 point
-
تم التعديل كما تريد Option Explicit Dim cnt% Sub Salim_color(rg As Range, _ k As Byte, n As Byte, _ Optional m As Long) Dim i If IsMissing(m) Then m = xlNone If Val(k) <= 0 Or k > 12 Then k = 12 k = Abs(k) If IsDate(rg) Then i = IIf(Month(rg) = k, n, m) If i = n Then cnt = cnt + 1 rg.Interior.ColorIndex = i Else rg.Interior.ColorIndex = xlNone End If End Sub '+++++++++++++++++++++++++++++++++++ Sub CKect_Up() Dim x%, y% cnt = 0 With Sheets("Sheet1") x = .Cells(Rows.Count, "C").End(3).Row For y = 1 To x Call Salim_color(.Cells(y, "C") _ , .Range("H2"), .Range("G2") _ , .Range("F2")) Next .Range("B2") = IIf(cnt = 0, "", cnt) End With End Sub Ahmmed_1.xlsm1 point
-
تجد في المثال المرفق طريقة نقل سجل إلى أعلى أو أسفل يمكن ان تستفيد منهللتعديل على ملفك MacroWHUT - Copy.accdb MoveRecord.zip1 point
-
هذه المعادلة في C2 و اسحب نزولاً =IF($B2="","",COUNTIF(B$2:B2,B2)) النلف مرفق Wadi.xlsx1 point
-
1 point
-
وعليكم السلام-يمكنك استخدام هذا الكود لطلبك Sub Hide() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Sheet4" And ws.Name <> "Sheet5" Then ws.Rows("10:15").EntireRow.Hidden = Not ws.Rows("10:15").EntireRow.Hidden End If Next End Sub كود لإخفاء الصفوف واظهارها.xlsm1 point
-
تفضل كان عليك التركيز فهذا الموضوع تكرر معك كثيراً -يمكنك استخدام هذه المعادلة =SUMIFS($C:$C,$B:$B,$G8,$D:$D,$J$7) حساب سيارة مشتركة بين موقعين1.xls1 point
-
1 point
-
1 point
-
السلام عليكم 🙂 اما انا ، فهذه طريقتي في ربط الجداول ، شوفها يمكن تنفعك 🙂 فتح النموذج فقط - قسم الأكسيس Access - أوفيسنا (officena.net) جعفر1 point
-
طيب ممكن تجرب الكود الاتى Public Function DisplayHideNavPane(Optional Visible As Boolean = True) On Error GoTo ErrHandler DoCmd.SelectObject acForm, , True 'Hide ribbon of access window DoCmd.ShowToolbar "Ribbon", acToolbarNo 'select the navigation pange Call DoCmd.NavigateTo("acNavigationCategoryObjectType") 'hide the selected object Call DoCmd.RunCommand(acCmdWindowHide) Exit Function ErrHandler: MsgBox Err.Description, vbCritical, "Error" End Function 'and call it like this: DisplayHideNavPane False1 point
-
وعليكم السلام-كان عليك استخدام خاصية البحث بالمنتدى-تفضل برنامج مجاني علي الاكسيل لاقرار ضريبة القيمة المضافة وهذا نموذج أخر نموذج_ضريبة_القيمة_المضافة_في_السعودية.xlsx1 point
-
وعليكم السلام-بسيطة اجعل المعادلة بالخلية F42 بالجدول الأول هكذا , ويجب عليك تعميم هذه المعادلة على باقى الجداول -تفضل =IF(SUM(F9:F39)>26,26,SUM(F9:F39)) 1رواتب واجور2021 - يناير.xlsx1 point
-
وعليكم السلام-يمكنك استخدام هذه المعادلة لطلبك =EDATE($C5,$D5*12-$E5) test1.xlsx1 point
-
أعتز بشهادتك أخي العزيز مصطفى، وأسأل الله تعالى أن ينفعكم بها وأن يستجيب دعواتك الطيبة 🙂1 point
-
1 point
-
أهلا @سلمان الشهراني في هذا التعديل أنشأت وظيفة تعيد بيانات الاستعلامين التي أشرت إليها في المرفق، وضمنتها ببطاقة التعريف بالشكل التالي Function CardDetails(ID As Long) On Error Resume Next Dim P1 As dao.Recordset, P4 As dao.Recordset Dim H As String Set P1 = CurrentDb.OpenRecordset("select * from qr_p1 where Apartment_No4=" & ID) Set P4 = CurrentDb.OpenRecordset("select * from qr_p4 where id=" & ID) H = H & "<p class='first'>" & P1!Name1 & "</p>" H = H & "<p><span>تاريخ الدخول</span>" & Format(P1!Date_Entry, "yyyy/mm/dd") & "</p>" H = H & "<p><span>المبلغ المدفوع</span>" & P1!Mdfo3 & "</p>" H = H & "<p><span>المبلغ المتبقي</span>" & P1!Residual & "</p>" H = H & "<p><span>مبالغ أخرى</span>" & P4!Total2 & "</p>" CardDetails = H End Function إليك المرفق: Dashboard2003.mdb1 point
-
فرق بين الممارسة العملية وبين التنظير والمثل يقول ابدأ مما انتهى الناس منه والمبرمج هذا الذي ذكرت سيجد الطريق في الاخير بعد استنفاد الجهد والوقت سأذكر بصفة عامة حاجة العمل لبناء العلاقات : في برامجنا يوجد شيئين رئيسين هما محور العمل الاول ادخال البيانات والثاني عرض البيانات فاهمية العلاقات في عملية ادخال البيانات : 1- ضبط مسألة حذف البيانات من الجداول بالتوالي ( الرئيسية والفرعية ) 2- مسألة منع الحذف الجدول الرئيس اذا وجدت قيمة مرتبطة في الفرعي 3- عندما نريد التحكم بالقيمة المدخلة ( وهذا هو بيت القصيد من العلاقات بصفة عامة ) ونستغني عن العلاقة هنا اذا استخدمنا المنسدلات في النماذج لاختيار القيمة وهو المعمول به في الغالب 4- عند انشاء النماذج الفرعية المرتبطة بالرئيسية اما غير المرتبطة فلسنا بحاجة لربط الجداول اما عرض البيانات : فيتم ربط ما نحتاجه من علاقات من خلال الاستعلامات لذا نقول وموافقة لاخونا جعفر بأن العلاقة لا توضع الا وقت الحاجة1 point
-
ربنا يبارك فى حضرتك استاذى الحبيب ياسر خليل كل عام وانت بخير وجميع الاهل والاحبه بخير1 point
-
بسم الله الرحمن الرحيم استاذنا الفاضل أبو هادي اجمل التحيات لك ولجميع الاخوة كان لابد لى اعرض وجهة نظرى فى هذا الموضوع : ان برنامج "تقويم المناسبات" لهو عمل جيد بالنسبة الى كافة المسلمين وهو جهد مشكور علية للاستاذ أبو هادي ومحسوب له ومضافا الى ميزان حسناتة . ثانيا : التعرض لموضوع الهجرى و الميلاد لا يستطيع خبراء الاكسل الاقتراب منة لعدة صعوبات منها انه يجب الالمام بقواعد التقويم الهجرى كما فعل استاذنا الفاضل أبو هادي وهذا ليس بالشئ اليسير فبرنامج تقويم المناسبات هو اول تقويم عربى على مستوى جميع المنتديات العربية . ثالثا : الاخ محمد مختار بغض النطر عن الماكرو وايضا بغض النظر عن صفحة الأحداث/المناسبات قم بتغير السنة الهجرية ستجد انك امام تقويم ثنائي هجرى - ميلادى بالصورة التى صممها المبرمج . رابعا : الفاضل أبو هادي ان تقويم المناسبات لهو تقويم هجرى - ميلادى قد يكون اخونا لم يستطيع التعبير عما يرد وقد اكون مخطئ فيما اتكهن به الا وهو انه يريد نفس التقويم ولكن بدلا من استخدام السنة والشهور الهجرية كدليل لعمل التقويم ان تستخدم السنة والشهور الميلادية كدليل لعمل التقويم اى تقويم ميلادى - هجرى وليس هجرى - ميلادى . تحياتى لك أبو هادي واغفر لى اذا كنت قد اخطأت التعبير فيما اشرت اليه ..1 point
-
السلام عليكم الرد أفضل من "الطناش" .. صح ؟ من الطبيعي أن السائل يبحث عن حل لمشكلته ولكن غير الطبيعي هو أن يضع شروطا لصناعة هذا الحل !. كأن تقول أريد حلا ولكن على أن لا يكون بالماكرو ! وهل الماكرو بدعة ! . الماكرو وضع لعمل مالا تستطيع معادلات الإكسل عمله ، يعني الماكرو شيئ متقدم ومهم جدا ومن يستطيع أن يتعامل معه يستطيع أن يلعب بالأكسل على كيفه . عموما عندي إحساس أنك لم تتمكن من فهم التقويم بشكل كامل واستعجلت الرد . هل حاولت أن تذهب إلى صفحة الأحداث/المناسبات Events وتضع به كل الأحداث أو المناسبات أو المواعيد التي تريدها ثم تذهب إلى صفحة التقويم وتبدل رقم السنة الهجرية في أعلى يمين الصفحة ؟. جرب وحتى إن لم يلبي طلبك تستطيع مثلا أن تقول يا أبا هادي برنامجك لا بأس به وهو يؤدي وظيفة مطلوبة من الكثيرين ولكنه مغاير لما أنشده . آمل أن تتقبل نقدي وملاحظاتي بصدر رحب وبروح "حاسوبية" . آمل من الأعضاء الكرام تلبية طلب أخينا محمد مختار ولا تجعلوه يتنظر أكثر من كذا ولا تتحرجوا مني وسأكون من أول المستفيدين من تدخلاتكم الكريمة . تحياتي .1 point