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

البحث في الموقع

Showing results for tags 'semo.pa3x'.

  • Search By Tags

    اكتب الكلمات المفتاحيه بينها علامه الفاصله
  • Search By Author

نوع المحتوي


الاقسام

  • الترحيب
  • قسم تطبيقات و لغات مايكروسوفت
    • قنوات تعليمية شخصية و دورات تدريبية مجانية و مدفوعة
    • إعلانات شخصية بأجر للاعضاء
    • المنتدى المفتوح
    • منتدى الاكسيل Excel
    • قسم الأكسيس Access
    • دعم أنظمة الويندوز المختلفة
    • منتدي الوورد Word
    • منتدى الباوربوينت
    • منتدى الاوتلوك Outlook
    • منتدى الفيزيو Visio
    • منتدي مايكروسوفت بروجكت Ms Project
    • منتدى الفرنت بيج العام Frontpage
    • تطبيقات Power Apps
    • وان نوت One Note
    • الناشر بابليشر Publisher
    • Communicator
    • Expression Web
    • SQL Server
    • VB.net
    • C#.net
    • Asp.net
  • الغات و أدوات البرمجة الأخرى
    • حوارات الويب العامة
    • Delphi
    • PHP
    • برمجة الاندرويد
  • أقسام الإدارة و إدارة المشاريع و تطبيقاتها
    • الاستراتيجية وإدارة محافظ المشاريع
    • إدارة المشاريع
    • Scaled Agile SAFe
    • إدارة الجودة
    • القيادة و تنمية المهارات
    • Primavera Enterprise
    • Primavera 3.1
  • البحث العلمي و علوم البيانات
    • مناهج البحث العلمي
    • علم الإحصاء
    • الذكاء الإصطناعي و التنقيب فى البيانات
    • Orange
    • R
    • SPSS
    • Python
  • القسم العام
    • مشاركات المدونات
    • نرحب بزوار الموقع
    • قسم الاقتراحات و الملاحظات
    • أوفيسنا على الفيسبوك

الاقسام

  • VBA Code Library
  • قسم الإكسيل
  • قسم الأكسيس
  • قسم الوورد
  • Project Management
  • Self development التطويرالذاتي
  • EFQM & DGEP
  • معلومات مفيدة
  • أدوات عامة

مدونات

  • M-Taher's Blog
  • Officena
  • مدونة محمد طاهر
  • اا الفاروق اا
  • ‎مدونة أخبار التكنولوجيا
  • M-Taher's Blog
  • يحيى حسين's Blog
  • خبور خير's Blog
  • Dr. AbdelMalek Abu Sheikh's Blog
  • m.hindawi's Blog
  • احمدزمان's Blog
  • الحسامي
  • مدونة أ / محمد صالح
  • yahiaoui's Blog
  • عبدالله المجرب's Blog
  • صيد الخواطر
  • حمادة عمر مدونة
  • مدونة جعفر
  • مدونة عادل حنقي
  • مجدى يونس: لمسة وفاء لمنتدى اوفيسنا
  • Excel Expert Financial&Accounting
  • مدونة اعمال ايقونات الماس لمنتدى اوفيسنا
  • Shivan Rekany
  • رقائق فى دقائق

الاقسام

  • New Features
  • Other

ابحث عن النتائج فى ......

ابحث عن النتائج التي تحوي ....


تاريخ الانشاء

  • بدايه

    End


اخر تحديث

  • بدايه

    End


Filter by number of...

انضم

  • بدايه

    End


مجموعه


Job Title


البلد


الإهتمامات


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype

  1. السلام عليكم ورحمة الله وبركاته... عود على بدء في موضوعي هذا: اقدم لكم النسخة الثانية من اداة رفع الملفات ونسخ الباك اب الى Google Drive لكن هذه المرة ستقوم الاداة بضغط الملف وتشفيرة بباسورد بأستخدام winRAR ومن ثم رفعه الى Google Drive لمنع اي شخص من الاطلاع على محتويات الملف المضغوط لان الضغط هنا سيكون Encrypt File Names بعبارة اخرى سيكون الملف المضغوط هكذا شكله: لن تستطيع ان تعرف ما يحويه الملف المضغوط من ملفات الا اذا قمت بوضع الباسورد. اضفت براميتر جديد على الاداة وهو باسورد الضغط، ستجدون كل شيء في ملف الاكسس، وباقي الامور شرحناها في الدرس السابق لا تنسوني ووالدي من صالح دعائكم. تم بحمد الله. GoogleDriveUploader_fixed.rar
  2. السلام عليكم ورحمة الله وبركاته.. من المعروف ان الواتس اب يسمح لك بارسال 5 رسائل فقط في كل مرة يعني لو كان لدينا 15 شخص نريد ان نرسل له رسالة علينا ان نقوم باعادة توجيه الرسالة 3 مرات كل مرة 5 اشخاص.. قمت بعمل اداة صغيرة في الـ NET. لتقوم بهذه المهمة. صورة مشروع الاكسس: قم بتحديد الاشخاص الذين تريد ارسال الرسالة لهم مع وضع نص الرسالة مع امكانية تحديد الكل يمكنك شروط البرنامج بحسب ماتراه مناسباً. النتيجة: ملاحظة يجب ان يكون برنامج الواتس اب موجود في جهاز الكومبيوتر واهم ملاحظة هي يجب كتاب رقم الواتس اب الذي تريد ان ترسل له الرسالة كما يظهر في البرنامج، مثال: لتحميل الواتس اب من الرابط الاتي: https://www.whatsapp.com/download لا تنسوني ووالدي من صالح دعائكم. تم بحمد الله. Whatsapp-Message-Sender.rar
  3. السلام عليكم.. اداة صغيرة مكتوبة كـ مفتاح registry عند تشغيلها ستقوم باضافة خيار جديد في الزر الايمن للماوس وضيفته جلب مسار الملفات والمجلدات لسرعه الوصول لها في البرامج او غيرها.. الاداة ليست من كتابتي انما فقط قمت بالتعديل عليها.. سورس الاداة: Windows Registry Editor Version 5.00 ; ########################################## ; Application : Get files/directories path by right click windows ; Coded by : Dr.Hassanien (SEMO.Pa3x) ; Date : 28-2-2022 ; ########################################## [HKEY_CLASSES_ROOT\Allfilesystemobjects\shell\windows.copyaspath] "CanonicalName"="{707C7BC6-685A-4A4D-A275-3966A5A3EFAA}" "CommandStateHandler"="{3B1599F9-E00A-4BBF-AD3E-B3F99FA87779}" "CommandStateSync"="" "Description"="@shell32.dll,-30336" "Icon"="imageres.dll,-5302" "InvokeCommandOnSelection"=dword:00000001 "MUIVerb"="@shell32.dll,-30329" "VerbHandler"="{f3d06e7c-1e45-4a26-847e-f9fcdee59be0}" "VerbName"="copyaspath" بعد تشغيل الاداة اضغط كلك يمين على اي ملف في الكومبيوتر او اي مجلد وستظهر لك: بعد نسخ اي مسار قم بلصقه، مثال: تحميل الملف من المرفقات لا تنسوني ووالدي من صالح دعائكم. تم بحمد الله. AddToRightClickWindows.rar
  4. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته.. اقدم لكم اداة من برمجتي المتواضعة لتحويل اكواد الـ SQL الى VBA قبل كل شي، الاداة حصراً للمبرمجين الذين يستخدمون الكود في الادراج والتعديل والحذف وليس للأشخاص الذين يستخدمون الواجهة الرسومية للأكسس الخالية من الكود ماهي فائدة الأداة ولماذا استخدمها؟ حسناً، لو كان لدينا جدول اسمة tbl_movementes يقوم بتسجيل جميع الحركات التي تحدث ( اضافة , تعديل , حذف ) وهذا الجدول احتاجه في كثير من النماذج، فهل من المعقول ان اقوم بكتابة عبارة INSERT INTO في كل نموذج ؟ اكيد لا، سأقوم بكتابة Sub واقوم بإستدعاءه كل مرة اريد ان اضيف بها بيانات الى الجدول واختصاراً للوقت الطويل والأخطاء التي ربما ستحدث اثناء عملية التحويل، قمت بكتابة اداة تقوم بهذا الغرض الاداة وضيفتها فقط ( Insert , Update ) صورة الاداة: لنطبق على عملية اضافة بيانات جديد: 1- قم بفتح 2- ثم قم بأختيار الجدول الذي تريده، وقم بإدراج جميع الحقول، كما في الصورة 3- من النافذة العليا اختر النافذة تصميم وقم بتعديل نوع الاستعلام الى استعلام إلحاق وثم بإختيار نفس الجدول لكي يقوم بألحاق البيانات به. الآن لنرى النتيجة 3- الان قم بعرض اكواد الـ SQL 4- قم بنسخ جميع الاكواد كما في الصورة الاتية 5- الان قم بفتح الاداة، واختر النوع Insert، ثم الصق اكواد الـ SQL في مربع النص SQL 6- قبل عملية التحويل قم بإلغاء الأعمدة التي لا ترغب بها من القائمة على اليمين ( Column Remove ) مثلا سأقوم بألغاء العمود IsDeleted وذلك بالضغط على اسم العمود رسالة تخبرك بتأكيد عملية حذف العمود 7- اضغط على الزر Convert 8- تم تحويل الكود ونسخه، الان قم بلصقه في الأكسس واستخدمه الاستخدام النتيجة، تم ادراج البيانات بالجدول لنطبق على عملية تعديل البيانات: نفس الخطوات القديمة فقط من الاداة اختر نوع الاستعلام Update من المعروف ان عملية تعديل البيانات تتطلب معيار للتعديل WHERE COLUMN NAME = Number لذلك عندما نقوم بإنشاء الاستعلام نقوم بوضع عمود المعيار اخر عمود في الاستعلام هكذا من لديه ملاحظات أو اضافات تعطى للبرمج حصراً أحرم تعديل البرنامج بأحد ادوات الهندسة العكسية او نسبه لأي شخص تمت البرمجة حصرياً لمنتدى أوفسينا، اهداء الى معلمي العزيز @jjafferr تحياتي للجميع. SQL-VBA.rar
  5. بسم الله الرحمن الرحيم.. السلام عليكم ورحمة الله وبركاته.. بعد طول غياب عن الساحة بسبب ضروف الحياة والعمل.. اقدم لكم اداة صغيرة من برمجتي بلغة Visual Studio .NET تقوم بالتقاط الصور كاميرا الويب او اي كاميرا متصلة بالكومبيوتر ومن ثم خزنها في الجهاز الاداة قمت بربطها مع الاكسس، بحيث تقوم بتمرير براميتر من الاكسس الى الاداة وهذا البراميتر متمثل بـ مسار حفظ الصورة + واسم الصورة + صيغتها مثال: Dim SavedPath As String SavedPath = """" & CurrentProject.Path & "\Capture.png" & """" الاداة تستخدم مكتبات AForge للتحكم بالكاميرات. صورة الاداة: بمجرد ان تضغط زر Open Camera من الاكسس ستعمل الاداة مباشرة قم بترتيب الكاميرا الخاصة بك لاخذ لقطة مناسبة واضغط على الزر Snapshot ثم اضغط على الز save لحفظ الصورة. الاداة اخذت مني وقت 8 ساعات في البرمجة لذلك لا تنسوني ووالدي من صالح دعائكم. تم بحمد الله. SEMO_webCam.rar كلمات مفتاحية: التقاط صورة من الكاميرا، حفظ الصورة من الكاميرا، جلب الصورة من كاميرا الويب، جلب الصورة من الكاميرا وحفظها في قاعدة البيانات، حفظ الصور بقاعدة البيانات، خزن الصورة من الكاميرا كاميرا ويب قاعدة بيانات اكسس، اكسس كاميرا الويب، اكسس كاميرا، جلب الصورة من الكاميرا
  6. [ الموضوع ] ، [ الدرس الثالث ، الدوال ، ماهي ، كيف نعلن عنها ، ما نوعها ، ما اجزائها ] [ في سلسلة دروس البرمجة ] [ Vb.Net ] [ المستوى المتوسط ] - الدوال ( Functions ) ماهي ؟ الدالة / هو الامر الذي عند كتابتة ، ينفذ شيئا ما في اي وقت . مثال سريع ، لو احببنا ان نكتب [ Message ] هذه تسمى الدالة ( دالة الـ MsgBox ) ، طيب بعد ان كتبناها نرى النتيجة ، ظهر لنا صندوق الرسالة ، اذن فالدالة هي امر يتم استدعاءة في اي وقت ترغب به ليقوم بتنفيذ شيئا ما ، انت تحدده ، هذه كـ فكره عامه عن الدوال - انواع الدوال ( Type Functions ) ماهي انواعها ؟ تنقسم الدوال ، الى عدة اقسام من اهمها 1 - دوال ادخال النص واخراجه ، المتمثلة بـ اخراج النص ابسط مثال هو الـ [ MessageBox ] ، كما في الصورة الاتية ادخال النص ابسط مثال هو الـ [ InputBox ] ، كما في الصورة الاتية 2 - دوال التعامل مع المجلدات والملفات ، وتتمثل بـ 1 - ChDir ، تعمل هذه الدالة على تغيير الدليل الافتراضي الى دليل اخر على نفس محرك الاقراص " مثال عليها " 2 - ChDrive ، تعمل هذه الدالة على تغيير محرك القرص الحالي بمحرك قرص اخر " مثال عليها " 3 - CurDir ، تعمل هذه الدالة على ارجاع المسار الحالي " مثال عليها " 4 - Dir ، تعمل هذه الدالة للتحقق في حالة وجود الملفات بالمسار الذي انت تحدهه " مثال عليها " طلبنا منه ، ان يقوم بالتحقق من المسار [ \:C ] وان يقوم باحصاء كل المجلدات التي فيها ، فتظهر النتيجة على حسب ما طلبت منه على شكل [ Message ] الخ .. من باقي المجلدات في المسار المطلوب ، كلها سيعرضها على شكل [ Message ] 5 - FileCopy ، تعمل هذه الدالة على نسخ ملف من مكان الى مكان اخر " مثال عليها " 6 - FileDateTime ، تعمل هذه الدالة على تحديد تاريخ ووقت تم انشاء ملف او تعديل ملف ويستند تنسيق التاريخ والوقت المعروض على الاعدادات المحليه للنظام الخاص بك " مثال عليها " حددنا مسار ملف معين وطلبنا ان يخبرنا بتاريخ ووقت ان شاءة ، في [ Message ] 7 - FileLen ، تعمل هذه الدالة على ارجاع ملف البايت او بمعنى ادق قياس حجم الملف تبعا لنوع البيانات التي يحتويها " مثال عليها " لدي ملف في المسا [ \ ] اسمه [ najaf ] لاحظو معي كم حجمه حجمه [ 8 ] كيلو بايت ، بعد كتبنا اظهر لنا [ Message ] يخبرنا بحجم بايتات الملف 8 - GetAttr ، تعمل هذه الدالة على تحديد سمات ملف او مجلد ما انت تحدده " مثال عليها " 9 - SetAttr ، تعمل هذه الدالة على تغيير سمات الملف او المجلد الذي انت تحدده " مثال عليها " تقوم بتفعيل خيارات [ Hidden ] + [ Read-Only ] الخاصة باي ملف تحدده 10 - Kill ، تعمل هذه الدالة على حذف ملف من القرص الذي انت تحدده " مثال عليها " 11 - MkDir ، تعمل هذه الدالة على انشاء مجلد جديد بالاسم الذي تريده و بالمسار الذي تحدده انت " مثال عليها " 12 - RenameFile ، تعمل هذه الدالة على تغيير اي اسم ملف الى الاسم الذي تريده " مثال عليها " 13 - RmDir ، تعمل هذه الدالة على حذف المجلدات الفارغة التي انت تحدهها " مثال عليها " - دوال التحقق من نوع القيم ( Check Functions Of The Type Of Values ) وتتمثل بـ 1 - IsArray ، للتحقق من العديد من المتغيرات " مثال عليها " 2 - IsDate ، للتحديد ما اذا تمثل عدة متغيرات قيم ، التاريخ " مثال عليها " 3 - IsDBNull ، لتحديد ما اذا متغير يقيم الى DBNULL " مثال عليها " 4 - IsNothing ، لتحديد ما اذا كان المتغير مرتبط بكائن مع اي كائن ثاني " مثال عليها " 5 - IsNumeric ، لتحديد ما اذا كان يمكن تقييم محتويات المتغير كرقم " مثال عليها " 6 - IsReference ، ارجاع قيمة منطقية " مثال عليها " 7 - TypeName ، لارجاع نوع البيانات والمعلومات حول العديد من المتغيرات " مثال عليها " 8 - VarType ، للارجاع نوع البيانات والمعلومات حول تصنيف العديد من المتغيرات " مثال عليها " - دوال تحويل القيم ( Conversion functions between the values ) وتتمثل بـ 1 - CBool ، تعمل هذه الدالة على تحويل التعبيرات لقيم منطقية ، اذا كان [ 0 ] يرجع [ False ] " مثال عليها " اما اذا كانت اكبر من [ 0 ] مثلا [ 6 ] تعطي قيمه [ True ] " مثال عليها " 2 - CByte ، تعمل هذه الدالة على للتحويل الى بايت " مثال عليها " 3 - CChar ، تَعمل هَذه آلدآلة عَلى تَحويل آلحَرف آلآول مَن آلمُتغير آلى سَلسلة مَن نُوع CChar " مثآل عَليهآ " Char. 4 ، تعمل هذه الدالة كـ وسيط لادخال البيانات للدالة CChar لذا يجب ان تكون من نوع Char " مثال عليها " 5 - CDbl ، وتعمل هذه الدالة على تحويل نوع بيانات متغيرها الى عدد مضاعف الدقه Double " مثال عليها " 6 - CDec ، تعمل هذه الدالة على تحويل القيمة الرقمية الى قيمة عشرية " مثال عليها " 7 - CInt ، تعمل هذه الدالة على تحويل القيمة الى عدد صحيح " مثال عليها " 8 - CLng ، تعمل هذه الدالة على تحويل القيمة الى قيمة عددية من نوع Long " مثال عليها " 9 - CObj ، تعمل هذه الدالة على تحويل القيمة الرقمية الى كائن " مثال عليها " 10 - CShort ، تعمل هذه الدالة على تحويل القيمة الرقمية الى 11 - CSng ، تعمل هذه الدالة على تحويل القيمة الرقمية الى قيمة من نوع Single " مثال عليها " 12 - CStr ، تعمل هذه الدالة على تحويل القيمة الرقمية الى قيمة من نوع String " مثال عليها " 13 - CType ، تعمل هذه الدالة على تحويل القيم " مثال عليها " هذا فيما يخص الدوال " دوال ادخال النص واخراجه " ، " دوال التعامل مع المجلدات والملفات " " دوال التحقق من نوع القيم " ، " دوال التحويل بين القيم " تم بحمد الله ، SEMO.Pa3x
  7. السلام عليكم، كثيراً ما ارى طلبات "كيفية عمل صلاحيات المستخدمين" قمت بعمل مثال بطريقة مبسطة جدا لكيفية عمل هذه الصلاحيات في تحديد فتح النماذج لمن لا يعرف ماذا اقصد بصلاحيات المستخدمين, مثال: اليوزر A غير مسموح له بفتح فورم الاعدادات مثلاً، اما اليوزر B مسموح له بفتح فورم الاعدادات اي سؤال انا موجود. تحياتي لكم Permission.accdb
  8. السلام عليكم ورحمة الله وبركاته.. اقدم لكم اداة صغيرة من برمجتي وضيفتها تغيير اسم الدولة/المنطقة التي تعتمد عليها الكثير من البرامج خصوصاً العربية التي تعتمد الـ Unicode الأداة مكتوب بلغة Visual Studio .NET مبدأ عملها يحتاج ان تقوم بتمرير براميتر لها يحتوي على كود الدولة. عموما كتبت لكم مثال في الاكسس سورس الأداة: Imports System.Runtime.InteropServices Imports System.Threading Imports Microsoft.Win32 Imports System.Globalization Module Main 'C0ded bY: SEMO.Pa3x (: 'Date: 27-5-2021 : 03:26 PM Const subkey As String = "SYSTEM\CurrentControlSet\Control\Nls\Language\" Dim CodeArray As String() = {"af-ZA", "ar-AE", "ar-BH", "ar-DZ", "ar-EG", "ar-IQ", "ar-JO", "ar-KW", "ar-LB", "ar-LY", "ar-MA", "ar-OM", "ar-QA", "ar-SA", "ar-SY", "ar-TN", "ar-YE", "az-AZ", "az-AZ", "be-BY", "bg-BG", "bs-BA", "ca-ES", "cs-CZ", "cy-GB", "da-DK", "de-AT", "de-CH", "de-DE", "de-LI", "de-LU", "dv-MV", "el-GR", "en-AU", "en-BZ", "en-CA", "en-CB", "en-GB", "en-IE", "en-JM", "en-NZ", "en-PH", "en-TT", "en-US", "en-ZA", "en-ZW", "es-AR", "es-BO", "es-CL", "es-CO", "es-CR", "es-DO", "es-EC", "es-ES", "es-ES", "es-GT", "es-HN", "es-MX", "es-NI", "es-PA", "es-PE", "es-PR", "es-PY", "es-SV", "es-UY", "es-VE", "et-EE", "eu-ES", "fa-IR", "fi-FI", "fo-FO", "fr-BE", "fr-CA", "fr-CH", "fr-FR", "fr-LU", "fr-MC", "gl-ES", "gu-IN", "he-IL", "hi-IN", "hr-BA", "hr-HR", "hu-HU", "hy-AM", "id-ID", "is-IS", "it-CH", "it-IT", "ja-JP", "ka-GE", "kk-KZ", "kn-IN", "ko-KR", "kok-IN", "ky-KG", "lt-LT", "lv-LV", "mi-NZ", "mk-MK", "mn-MN", "mr-IN", "ms-BN", "ms-MY", "mt-MT", "nb-NO", "nl-BE", "nl-NL", "nn-NO", "ns-ZA", "pa-IN", "pl-PL", "ps-AR", "pt-BR", "pt-PT", "qu-BO", "qu-EC", "qu-PE", "ro-RO", "ru-RU", "sa-IN", "se-FI", "se-FI", "se-FI", "se-NO", "se-NO", "se-NO", "se-SE", "se-SE", "se-SE", "sk-SK", "sl-SI", "sq-AL", "sr-BA", "sr-BA", "sr-SP", "sr-SP", "sv-FI", "sv-SE", "sw-KE", "syr-SY", "ta-IN", "te-IN", "th-TH", "tl-PH", "tn-ZA", "tr-TR", "tt-RU", "uk-UA", "ur-PK", "uz-UZ", "uz-UZ", "vi-VN", "xh-ZA", "zh-CN", "zh-HK", "zh-MO", "zh-SG", "zh-TW", "zu-ZA"} Sub main() For Each arg As String In My.Application.CommandLineArgs 'check if arg exist in array ! Dim index As Integer = Array.IndexOf(CodeArray, arg) If index > 0 Then 'do change (: SetSystemNonUnicodeLanguage(CultureInfo.GetCultureInfo(arg)) End If Next End Sub Private Sub SetSystemNonUnicodeLanguage(ByVal cinfo As CultureInfo) Dim regkey = Registry.LocalMachine.OpenSubKey(subkey, True) regkey.SetValue("Default", cinfo.LCID.ToString("x4")) ' Reboot computer after timeout of 5 Shell("Shutdown -r -t 5") ' Switches: ' -l Log off profile ' -s Shut down computer ' -r Restart computer ' -f Force applications to close ' -t Set a timeout for shutdownCodeArray ' -m \\computer name (Shutdown remote computer) ' -i Show the Shutdown GUI End Sub End Module البرنامج: Option Compare Database Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Const SW_SHOWNORMAL = 1 Private Sub cmd_change_Click() Dim SetLocaleInfo_File As String Dim Parameters As String SetLocaleInfo_File = CurrentProject.Path + "\SetLocaleInfo.exe" Parameters = comb_countries ShellExecute 0, "runas", SetLocaleInfo_File, Parameters, vbNullString, SW_SHOWNORMAL End Sub ارفقت لكم جدول لإسماء الدولة ورموزها: Code Country af-ZA Afrikaans (South Africa) ar-AE Arabic (U.A.E.) ar-BH Arabic (Bahrain) ar-DZ Arabic (Algeria) ar-EG Arabic (Egypt) ar-IQ Arabic (Iraq) ar-JO Arabic (Jordan) ar-KW Arabic (Kuwait) ar-LB Arabic (Lebanon) ar-LY Arabic (Libya) ar-MA Arabic (Morocco) ar-OM Arabic (Oman) ar-QA Arabic (Qatar) ar-SA Arabic (Saudi Arabia) ar-SY Arabic (Syria) ar-TN Arabic (Tunisia) ar-YE Arabic (Yemen) az-AZ Azeri (Latin) (Azerbaijan) az-AZ Azeri (Cyrillic) (Azerbaijan) be-BY Belarusian (Belarus) bg-BG Bulgarian (Bulgaria) bs-BA Bosnian (Bosnia and Herzegovina) ca-ES Catalan (Spain) cs-CZ Czech (Czech Republic) cy-GB Welsh (United Kingdom) da-DK Danish (Denmark) de-AT German (Austria) de-CH German (Switzerland) de-DE German (Germany) de-LI German (Liechtenstein) de-LU German (Luxembourg) dv-MV Divehi (Maldives) el-GR Greek (Greece) en-AU English (Australia) en-BZ English (Belize) en-CA English (Canada) en-CB English (Caribbean) en-GB English (United Kingdom) en-IE English (Ireland) en-JM English (Jamaica) en-NZ English (New Zealand) en-PH English (Republic of the Philippines) en-TT English (Trinidad and Tobago) en-US English (United States) en-ZA English (South Africa) en-ZW English (Zimbabwe) es-AR Spanish (Argentina) es-BO Spanish (Bolivia) es-CL Spanish (Chile) es-CO Spanish (Colombia) es-CR Spanish (Costa Rica) es-DO Spanish (Dominican Republic) es-EC Spanish (Ecuador) es-ES Spanish (Castilian) es-ES Spanish (Spain) es-GT Spanish (Guatemala) es-HN Spanish (Honduras) es-MX Spanish (Mexico) es-NI Spanish (Nicaragua) es-PA Spanish (Panama) es-PE Spanish (Peru) es-PR Spanish (Puerto Rico) es-PY Spanish (Paraguay) es-SV Spanish (El Salvador) es-UY Spanish (Uruguay) es-VE Spanish (Venezuela) et-EE Estonian (Estonia) eu-ES Basque (Spain) fa-IR Farsi (Iran) fi-FI Finnish (Finland) fo-FO Faroese (Faroe Islands) fr-BE French (Belgium) fr-CA French (Canada) fr-CH French (Switzerland) fr-FR French (France) fr-LU French (Luxembourg) fr-MC French (Principality of Monaco) gl-ES Galician (Spain) gu-IN Gujarati (India) he-IL Hebrew (Israel) hi-IN Hindi (India) hr-BA Croatian (Bosnia and Herzegovina) hr-HR Croatian (Croatia) hu-HU Hungarian (Hungary) hy-AM Armenian (Armenia) id-ID Indonesian (Indonesia) is-IS Icelandic (Iceland) it-CH Italian (Switzerland) it-IT Italian (Italy) ja-JP Japanese (Japan) ka-GE Georgian (Georgia) kk-KZ Kazakh (Kazakhstan) kn-IN Kannada (India) ko-KR Korean (Korea) kok-IN Konkani (India) ky-KG Kyrgyz (Kyrgyzstan) lt-LT Lithuanian (Lithuania) lv-LV Latvian (Latvia) mi-NZ Maori (New Zealand) mk-MK FYRO Macedonian (Former Yugoslav Republic of Macedonia) mn-MN Mongolian (Mongolia) mr-IN Marathi (India) ms-BN Malay (Brunei Darussalam) ms-MY Malay (Malaysia) mt-MT Maltese (Malta) nb-NO Norwegian (Bokm?l) (Norway) nl-BE Dutch (Belgium) nl-NL Dutch (Netherlands) nn-NO Norwegian (Nynorsk) (Norway) ns-ZA Northern Sotho (South Africa) pa-IN Punjabi (India) pl-PL Polish (Poland) ps-AR Pashto (Afghanistan) pt-BR Portuguese (Brazil) pt-PT Portuguese (Portugal) qu-BO Quechua (Bolivia) qu-EC Quechua (Ecuador) qu-PE Quechua (Peru) ro-RO Romanian (Romania) ru-RU Russian (Russia) sa-IN Sanskrit (India) se-FI Sami (Northern) (Finland) se-FI Sami (Skolt) (Finland) se-FI Sami (Inari) (Finland) se-NO Sami (Northern) (Norway) se-NO Sami (Lule) (Norway) se-NO Sami (Southern) (Norway) se-SE Sami (Northern) (Sweden) se-SE Sami (Lule) (Sweden) se-SE Sami (Southern) (Sweden) sk-SK Slovak (Slovakia) sl-SI Slovenian (Slovenia) sq-AL Albanian (Albania) sr-BA Serbian (Latin) (Bosnia and Herzegovina) sr-BA Serbian (Cyrillic) (Bosnia and Herzegovina) sr-SP Serbian (Latin) (Serbia and Montenegro) sr-SP Serbian (Cyrillic) (Serbia and Montenegro) sv-FI Swedish (Finland) sv-SE Swedish (Sweden) sw-KE Swahili (Kenya) syr-SY Syriac (Syria) ta-IN Tamil (India) te-IN Telugu (India) th-TH Thai (Thailand) tl-PH Tagalog (Philippines) tn-ZA Tswana (South Africa) tr-TR Turkish (Turkey) tt-RU Tatar (Russia) uk-UA Ukrainian (Ukraine) ur-PK Urdu (Islamic Republic of Pakistan) uz-UZ Uzbek (Latin) (Uzbekistan) uz-UZ Uzbek (Cyrillic) (Uzbekistan) vi-VN Vietnamese (Viet Nam) xh-ZA Xhosa (South Africa) zh-CN Chinese (S) zh-HK Chinese (Hong Kong) zh-MO Chinese (Macau) zh-SG Chinese (Singapore) zh-TW Chinese (T) zu-ZA Zulu (South Africa) مدة العمل ( ساعة ونصف ) SetLocaleInfo.rar
  9. السلام عليكم ورحمة الله وبركاته.. اقدم لكم النسخة الثانية من برنامج ادارة عيادة الطبيب.. تم تطبيق أغلب ملاحظاتكم وأقتراحاتكم في النسخة السابقة النسخة تجريبية تغلق بعد فترة الغرض من طرحها لمعالجة العيوب والأخطاء لكي يتم طرحها فيما بعد.. الرجاء منكم ابداء ملاحظاتكم واقتراحاتكم واضافاتكم وهل النسخة تحتوي على أخطاء؟ لكي اقوم بتحسين النسخة القادمة كلمة المرور لفتح البرنامج = 313 المميزات الحالية: 1- التصميم responsive يدعم جميع الشاشات الكبيرة والصغيرة 2- طباعة الوصفة الطبية 3- اضافة الادوية ومجاميعها والملاحظات 4- تسجيل بيانات المريض والحجوزات 5- تسجيل المصروفات 6- تعديل الاعدادات 7- اضافة نوع الحجز: * فحص = لإضافة الادوية للمريض * استشارة = لإرسال استشارة لطبيب آخر * دخول = لإرسال المريض الى المستشفى تصحيحات كثيرة وتعديل لأخطاء كثيرة قمت بها مع اضافة المزيد من الشروط لحصر وتقليل الأخطاء، شكرا لكل شخص ابدى رأيه وملاحظاته في النسخة السابقة، وايضا أنتضر ملاحظاتكم في هذه النسخة مع الشكر والتقدير doctor.rar
  10. السلام عليكم ورحمة الله وبركاته.. اقدم لكم النسخة الأولى من برنامج ادارة عيادة الطبيب.. النسخة تجريبية تغلق بعد فترة الغرض من طرحها لمعالجة العيوب والأخطاء لكي يتم طرحها فيما بعد.. الرجاء منكم ابداء ملاحظاتكم واقتراحاتكم واضافاتكم وهل النسخة تحتوي على أخطاء؟ لكي اقوم بتحسين النسخة القادمة كلمة المرور لفتح البرنامج = 313 المميزات الحالية: 1- التصميم responsive يدعم جميع الشاشات الكبيرة والصغيرة 2- طباعة الوصفة الطبية 3- اضافة الادوية ومجاميعها والملاحظات 4- تسجيل بيانات المريض والحجوزات 5- تسجيل المصروفات 6- تعديل الاعدادات DOCTOR_FILES.rar
  11. السلام عليكم.. في درس اليوم سنقوم بحساب نسبة الربح من سعر الشراء وسعر البيع وسنقوم بحساب سعر البيع من خلال نسبة الربح -------------------------------------------------------------------------------------- المثال الأول: إذا تم شراء سلعة بسعر 450 دولار، وبيعها بسعر 500 دولار، فما هي نسبة الربح؟ الحل: القانون الرئيسي لنسبة الربح: (الربح/سعر الشراء)×100% أولاً: نحسب قيمة الربح لكي نعوضها في القانون في الأعلى الربح = سعر البيع - سعر الشراء 500-450 = 50 دولار. وبالتعويض في القانون الرئيسي: نسبة الربح = (50/450) × 100% = 11.11% -------------------------------------------------------------------------------------- أما لو اردنا حساب سعر البيع من خلال نسبة الربح: المثال الثاني: إذا تم شراء سلعة بسعر 10 دولار وكانت نسبة الربح 25%، فما هو سعر البيع؟ الحل: القانون الرئيسي لحساب سعر البيع من خلال نسبة الربح: (سعر الشراء * نسبة الربح) / 100 + سعر الشراء وبالتعويض في القانون الرئيسي: النتيجة = (10 * 25) / 100 + 10 = 12.5 تحياتي لكم..
  12. السلام عليكم.. في بلدي العراق لدينا أقل عملة نقدية وهي 250 دينار عراقي احفظو هذا الرقم جيداً لأننا سنعود اليه اردت ان اقوم بعمل برنامج للأقساط فكان مبلغ القسط الكامل هو ( 10,000 عشرة الآف دينار عراقي ) وكانت مدة الأقساط هي ( 3 شهور ) اذن نقوم بتقسيم المبلغ على المدة لكي يظهر لنا قيمة القسط لكل شهر وعند التقسيم ظهرت الكارثة مبلغ غريب!!!!!!!!!! فلا هو 250 دينار ولا هو 500 دينار لا يمكن دفعة.. ماهو الحل؟؟ قمت بكتابة كود لحل هذه المشكلة، للأمانة الكود ليس من كتابتي 100% بل بنسبة 60% Public Function RoundTo(d, roundRate, RoundType) As Double d = Math.Round(d, 7) If d <> 0 And roundRate <> 0 Then d = Ceiling(d) Dim num As Double num = d Mod roundRate If num > 0 Then If RoundType = 1 Then d = d + roundRate - num ElseIf RoundType = 2 Then d = d - num ElseIf RoundType = 3 Then If num >= roundRate / 2 Then d = d + roundRate - num Else d = d - num End If End If End If End If RoundTo = d End Function Public Function Ceiling(ByVal x As Double, Optional ByVal Factor As Double = 1) As Double ' X is the value you want to round ' Factor is the optional multiple to which you want to round, defaulting to 1 Ceiling = (Int(x / Factor) - (x / Factor - Int(x / Factor) > 0)) * Factor End Function الاستخدام: Private Sub cmd_calc_Click() Dim TotalPrice, Result As Long Dim Duration, i As Integer TotalPrice = 10000 Duration = 3 i = 1 Result = TotalPrice / Duration Do While i <= Duration MsgBox RoundTo(Result, 250, 2) i = i + 1 Loop End Sub ستظهر لنا النتيجة على شكل لووب مقسمة لإجزاء سيتم جبر النتيجة من 3,333333 الى 250 فتكون: 3,250 الف دينار لـ 3 دفعات ويمكنكم إستخدام الكود حسب العملة لديكم، بإستبدال 250 لإصغر قيمة عملة لديكم. تحياتي لكم
  13. السلام عليكم.. اقدم لكم حيلة قديمة ربما تفيدكم.. على سبيل المثال: لدينا 3 حقول ( العدد 1 ) , ( العدد 2 ) , ( النتيجة ) وأريد ان اقوم بعملية جمع للحقلين 1 و 2 وعرض النتيجة.. الآن عند كتابة رقم في الحقل ( العدد 1 ) وبعدها كتابة رقم في الحقل ( العدد 2 ) تظهر النتيجة مباشرة بدون الخروج من الحقل بمعنى إعطاء النتيجة مباشرة اثناء الكتابة Private Sub textbox1_Change() textbox3.Value = Nz(textbox1.Text, 1) + Nz(textbox2, 1) End Sub الفكرة كلها في اضافة الـ Value لحقل عرض النتيجة والخاصية Text للحقل المراد سحب النتيجة منه. تحياتي لكم.
  14. السلام عليكم، أحياناً تواجهنا مشكلة في الأكسس وهي تحول الارقام الى العربية خصوصاً اذا كان بجانب الرقم حروف عربية لذلك دعونا نختصر الوقت على العميل ونقوم بتعديل تنسيقات التاريخ والارقام..الخ برمجياً بدون الطلب من العميل تعديلها يدوياً اقدم لكم فنكشن للتعديل، يمكنكم التعديل والإضافة بحسب ماتجدوه مناسباً. Public Sub EditControlPanelInternational() 'Define a key registry path Dim strComputer Dim objRegistry Dim strKeyPath Dim strValueName Dim getValue Dim regKeyPath Dim strLocaleName, strCountry, strshortDateValue, strlongDateValue, strshortTimeValue, strlongTimeValue, strfirstDayOfWeekValue Const HKEY_CURRENT_USER = &H80000001 strComputer = "." Set objRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") regKeyPath = "Control Panel\International" strLocaleName = "en-US" strCountry = "United States" strshortDateValue = "yyyy-MM-dd" strlongDateValue = "dddd, MMMM d, yyyy" strshortTimeValue = "h:mm tt" strlongTimeValue = "h:mm:ss tt" strfirstDayOfWeekValue = "6" srtnativedigits = "0123456789" objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "LocaleName", strLocaleName objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sCountry", strCountry objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sShortDate", strshortDateValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sLongDate", strlongDateValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sShortTime", strshortTimeValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sTimeFormat", strlongTimeValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "iFirstDayOfWeek", strfirstDayOfWeekValue objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sNativeDigits", srtnativedigits Debug.Print "Successfully changed system regional settings." End Sub للأمانة الفنكشن من كتابة saf لذلك انا قمت بإضافة السطر srtnativedigits = "0123456789" objRegistry.SetStringValue HKEY_CURRENT_USER, regKeyPath, "sNativeDigits", srtnativedigits لتغيير تنسيق الأرقام من عربي إلى انجليزي ومن ثم قمت بنقله لكم.
  15. السلام عليكم ورحمة الله وبركاته،... كثيراً مانحتاج في برامجنا الى ( اسم مُدخل البيانات ) أي الذي قام بكتابة الفاتورة او تعديل أمر ما او طباعة ...الخ نريد أن نعرف من الشخص الذي قام بهذه العملية خصوصاً اذا كانت قاعدة البيانات قد تم ربطها بشكل شبكة ( سلسلة كومبيوترات متصلة بقاعدة البيانات ) كنا نستعمل الطريقة التقليدية أولا: بإنشاء جدول لتسجيل اسم المستخدم الحالي الذي يستخدم قاعدة البيانات في حال مروره بنموذج تسجيل الدخول ثانيا: نقوم بتخزينه في متغير Veriable من نوع String مثلاً وعند المرور بنموذج تسجيل الدخول يتم اسناد القيمة للمتغير في حال كان اليوزر والباسورد صحيحين Public CurrentUserName As String الكلام في الطريقتين صحيح، لكن في الطريقة الأولى سيبقى محتفظاً في اسم المستخدم حتى في حالة إغلاق الأكسس أجبارياً اما الطريقة الثانية فأن هذا المتغير سيفقد القيمة التي قمنا بتخزينها به عند ظهور أول رسالة خطأ من الأكسس جراء تطبيق أمر ما او أي عملية If قمت بكتابتها، بمجرد ظهور رسالة الخطأ ستختفي القيمة من المتغير CurrentUserName ونُصبح في مهب الريح ، حسناً لذلك سنقوم بإستخدام ( TempVars ) دعنا نسميها المخزن، نقوم بخزن اي قيمة بداخلها وتكون بهيئة ( Global Veriables ) يمكن استدعائها من أي مكان وسيتم تصفيرها بعد أغلاق الأكسس أجبارياً او إختيارياً ولن تمحى القيمة بعد ظهور رسالة خطأ كما أوضحت سابقاً. أضافة قيمة: TempVars.Add "CurrentUserName", "semo" إحضار القيمة: MsgBox TempVars("CurrentUserName") يمكنك إسناد الكثير من القيم لـ TempVars والإستفادة منها. لتفاصيل أكثر يمكنكم قراءة المقال من شركة مايكروسوفت: https://docs.microsoft.com/en-us/office/vba/api/access.tempvars.add أي سؤال أنا موجود، تحياتي لكم .
  16. السلام عليكم ورحمة الله وبركاته، كيف حالكم اخواني الأفاضل. مبارك عليكم حلول شهر رمضان المبارك أعاده الله علينا وعليكم باليمن والخير والبركات. اقدم لكم فنكشن لإحتساب المدة بين تاريخين سنة - شهر - اسبوع - ساعة - دقيقة - ثانية سؤال: ما الفائدة من هذا الفنكشن؟ بالدرجة الأولى سيُفيد أصحاب برامج الأقساط والتقسيط لإحتساب فترات التأخير والإستحقاق وغيرها. وربما هنالك استخدامات أخرى له، حسب احتياج كل شخص الفنكشن: Public Function MainElapsedTime(d1, d2) As String d1 = CDate(d1) d2 = CDate(d2) vSecs = DateDiff("s", [d1], [d2]) MainElapsedTime = ElapsedTimeAsTextRecur(vSecs) End Function Public Function ElapsedTimeAsTextRecur(ByVal pvSecs, Optional ByVal pvSecBlock) 'recursive time lapse given seconds Dim vTxt Dim iNum As Long Const kDAY = 86400 Const kSECpYR = 31536000 '60 sec = 1 min = 60 sec '60 min = 1 hour = 3,600 sec '24 hour = 1 day = 86,400 sec '07 days = 1 week = 604,800 sec '30 days = 1 month = 25,92,000 sec '12 months = 1 year = 31,536,000 sec 'YEARS If IsMissing(pvSecBlock) Then pvSecBlock = kSECpYR iNum = pvSecs \ pvSecBlock Select Case pvSecBlock Case kSECpYR 'yr sUnit = "years" If iNum > 0 Then vTxt = iNum & " Years " pvSecs = pvSecs - (iNum * pvSecBlock) End If vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 2592000) Case 2592000 'MO sUnit = "months" If iNum > 0 Then If iNum > 11 Then iNum = 11 vTxt = vTxt & iNum & " Months " pvSecs = pvSecs - (iNum * pvSecBlock) End If vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 604800) Case 604800 'WEEK sUnit = "weeks" If iNum > 0 Then If iNum > 3 Then iNum = 3 vTxt = vTxt & iNum & " Weeks " pvSecs = pvSecs - (iNum * kDAY * 7) End If vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 86400) Case kDAY 'day sUnit = "days" If iNum > 0 Then vTxt = vTxt & iNum & " Days " pvSecs = pvSecs - (iNum * kDAY) End If vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 3600) Case 3600 'hrs sUnit = "hrs" If iNum > 23 Then iNum = 23 If iNum > 0 Then vTxt = vTxt & iNum & " Hours " pvSecs = pvSecs - (iNum * pvSecBlock) End If vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 60) Case 60 'min sUnit = "mins" If iNum > 0 Then vTxt = vTxt & iNum & " Minutes " pvSecs = pvSecs - (iNum * pvSecBlock) End If vTxt = vTxt & ElapsedTimeAsTextRecur(pvSecs, 1) Case Else sUnit = "secs" If pvSecs > 0 Then vTxt = vTxt & pvSecs & " Seconds" End Select ElapsedTimeAsTextRecur = vTxt End Function الإستخدام بسيط جدا في الإستعلامات او في النماذج او التقارير كالآتي: MainElapsedTime("Here your date", Date()) --------------------------------------------------- Example: MsgBox MainElapsedTime("6/3/2020", "14/4/2021") النتيجة: هنا انا قمت بمقارنة تاريخين فقط بدون أوقات، سأقوم الآن بمقارنة تاريخ مع وقت MsgBox MainElapsedTime("2/02/2019 12:07:16 pm", "13/04/2021 1:08:6 am") النتيجة: للأمانة الكود ليس من كتابتي 100%، فقط انا قمت بالتعديل عليه ليصبح بشكل افضل.. تحياتي وانتضرو مفاجئتي في الموضوع القادم
  17. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته في هذا الدرس سأقدم نظرة عامة، ومُقدمة على التعابير القياسية 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 ماعليك فقط ان تبحث قليلاً وستجد الباترن المطلوب ☺️ بالتوفيق للجميع.
  18. السلام عليكم ورحمة الله وبركاته.. الكثير يجهل امكانية الأكسس في جعل البرامج بشكل responsive أي انه: لو كانت لديك شاشة كبيرة سيتغير شكل برنامجك وتوزيع الأزرار والعناصر لتتناسب مع حجم الشاشة ولو كانت الشاشة صغيرة ايضا ستتغير اماكن العناصر لكي تتناسب مع طبيعة الشاشة وعدم فقدان أي عنصر او ضياعه عندك تغيير الشاشات. قبل البدء، سأقدم لكم مثال على ما اقصده: هذا اخر مشاريعي في الأكسس وهو يتغير تبعاً لأختلاف الشاشات. لنبدأ: سأقوم بوضع Button في منتصف الشاشة بحيث لا يتغير مكانه لو تغير حجم الشاشة ثم قم بعملية الأدراج من جميع الأماكن ( يسار, يمين, أعلى , أسفل ) بحيث يصبح كالأتي: ثم من الطرف اليمين، نختار الأرتساء الأفقي ( كلاهما ) وكذلك الحال بالنسبة لليسار كذلك الحال نطبق على الأعلى والأسفل لكن هذه المرة سوف نعدل الأرتساء العمودي وكذلك بالنسبة للأعلى جرب الآن وسوف ترى ان الـ Button سيبقى في الوسط مهما تغير حجم الشاشة لو وضعت شاشة كبيرة أو صغيرة سيظل بنفس مكانه في الوسط. أي سؤال أنا موجود، تحياتي لكم.
  19. السلام عليكم، لو اردنا ان نقوم بحفظ السجلات المحددة في النموذج الفرعي سنلجئ لعمل CheckBox في الجدول ومن ثم نقوم بعمل استعلام يقوم بفلترة جميع الـ Checkbox التي تكون قيمتها True ومن ثم نقوم بحفظها. لكن! ماذا لو كانت قاعدة البيانات تعمل بنظام الشبكة ( Multi Users ) اذا قام المستخدم رقم 1 بوضع علامة صح على مثلا مادة ( برتقال ) وقام المستخدم رقم 2 بوضع علامة صح على مثلا مادة ( رمان ) عندما يضغط اي مستخدم على حفظ البيانات فـ ستحفظ البيانات وتكون النتيجة خاطئة لان البيانات ليست هي المطلوبة انا اخترت ( برتقال ) فأتتني النتيجة ( برتقال + رمان ) وكذا بالنسبة للمستخدم الثاني والثالث وغيرهم، ممن يعملون على قاعدة البيانات بوقت واحد، صراحة واجهتني هالمشكلة لكن وجدت الحل لها كما انني رأيت موضوع للأخ ابا جودي يتكلم عن هذه المشكلة ارفقت لكم طريقة مختلفة في تحديد السجلات وهي الضغط على مُحدد السجلات للأمانة الطريقة ليست كلها من برمجتي الحقوق لـ arnelgp انا فقط قم اضافة وتعديل بعض الامور البسيطة تحياتي لكم RecordSelectorClick.accdb
  20. السلام عليكم.. في البداية شكرا لكل من قام بالرد على موضوعي السابق في وقتنا الحاضر ارى ان اغلب البرامج في السوق هي من هذا النوع وللأسف لم اجد التفاعل الكبير معها، خصوصا في موضوعي في الأعلى عموما، قمت ببرمجة برنامج صغير لإدارة المخزن، وانتضر منكم التجربة للوقوع على الأخطاء ومحاولة تصحيحها علماً، ان النسخة مؤقتة وسوف تُغلق بعد تصحيح الأخطاء. باسورد فتح البرنامج = 313 تحياتي للجميع. store_manager.rar
  21. السلام عليكم.. في موضوعي هنا شرحت طريقة منع الحفظ بواسطة التاب، طريقة مملة صراحة وممكن الأغلب لا تعجبهم.. وانا اتصفح بخيارات الفورم وجدت خيار في قائمة ( غير ذلك ) قم بتغيير الخيار من كافة السجلات الى السجل الحالي وسلامتكم. تحياتي, حسنين
  22. السلام عليكم، كما في العنوان شرح استخدام دالة TerminateProcess لقتل العمليات.. اولا: الدوال المُستخدم بالشرح TerminateProcess , FindWindow , GetWindowThreadProcessId , CloseHandle , OpenProcess تصريح الدالة: Declare Auto Function TerminateProcess Lib "KERNEL32.DLL" (ByVal hProcess As IntPtr, ByVal uExitCode As UInteger) As Boolean الدالة تحتاج الى براميترات 2 الاول: مقبض العملية الثاني: قيمة رقمية، نضع 0 لتمثل قتل العملية فيكون الاستدعاء بالشكل العام هكذا TerminateProcess(hwd, 0) hwd= تمثل المقبض ------------------------------------------------------------ كيفية الحصول على مقبض للعمليات ؟؟ ------------------------------------------------------------ هناك عدة طرق اسهلها، استخدام دالة FindWindow تصريح الدالة: Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer استدعاء الدالة: Dim hwd As IntPtr = FindWindow(Nothing, "WindowTitle") الدالة تحتاج براميترات 2 الاول: اسم كلاس النافذة بامكانك كتابة استخراج اسم الكلاس بواسطة اداة AutoIt Window Info او اداة ++Spy التي تأتي مع فيجوال دوت نت. البراميتر الثاني: عنوان النافذة (العنوان المكتوب فوق النافذة للبرنامج) بأمكانك كتابة احد هذه البراميترات وتعويض البراميتر الثاني بـ Nothing ---------------------------------------------------------------------------------------------------- او استخدام طريقة اكثر بساطة وبدون api ------------------------------------------------------------ For Each x As Process In Process.GetProcessesByName("NameYourProcess") MsgBox(x.Handle) Next بعد ان تعلمنا كيفية جلب المقبض للعملية ، نأتي الى تكملة شرحنا في استدعاء الدالة صرح الدوال الاتية مع الستركشر الخاص بدالة OpenProcess Declare Auto Function TerminateProcess Lib "KERNEL32.DLL" (ByVal hProcess As IntPtr, ByVal uExitCode As UInteger) As Boolean <DllImport("user32.dll", SetLastError:=True)> _ Private Shared Function GetWindowThreadProcessId(ByVal hwnd As IntPtr, ByRef lpdwProcessId As Integer) As Integer End Function Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As ProcessAccessFlags, bInheritHandle As Boolean, processId As UInt32) As IntPtr <DllImport("kernel32.dll", SetLastError:=True)> _ Private Shared Function CloseHandle(ByVal hHandle As IntPtr) As Boolean End Function <Flags> Public Enum ProcessAccessFlags As UInteger All = &H1F0FFF Terminate = &H1 CreateThread = &H2 VirtualMemoryOperation = &H8 VirtualMemoryRead = &H10 VirtualMemoryWrite = &H20 DuplicateHandle = &H40 CreateProcess = &H80 SetQuota = &H100 SetInformation = &H200 QueryInformation = &H400 QueryLimitedInformation = &H1000 Synchronize = &H100000 End Enum استدعاء الدالة وقتل العملية: Dim TPID, TPHWD As Integer ' Get the process ID. TPID = 0 GetWindowThreadProcessId(HWND, TPID) ' Replace HWND with your handle process ' Open the process. TPHWD = OpenProcess(ProcessAccessFlags.Synchronize Or ProcessAccessFlags.Terminate, 0, TPID) ' Terminate the process. TerminateProcess(TPHWD, 0) ' Close the process. CloseHandle(TPHWD) استبدل HWND بمقبض العملية اي: Dim TPID, TPHWD As Integer ' Get the process ID. TPID = 0 GetWindowThreadProcessId(FindWindow(Nothing, "Untitled - Notepad"), TPID) ' Replace HWND with your handle process ' Open the process. TPHWD = OpenProcess(ProcessAccessFlags.Synchronize Or ProcessAccessFlags.Terminate, 0, TPID) ' Terminate the process. TerminateProcess(TPHWD, 0) ' Close the process. على سبيل المثال طبقت على المفكرة اي سؤل اني موجود تحياتي تم بحمد الله ، SEMO.Pa3x
  23. اقدم لكم الشرح المفصل لكيفية حماية برنامجك من الكسر وصد الكراكرز من عملية تكريكة مبدا عمل الحماية تقوم بالتحقق من ، القطع الاتية .. [ MOTHER BORED ID ] - [ CPU ID ] - [ MAC ADDRESS ] - [ HWID ] لم افهم ؟ اعطيك مثال بسيط ، الان انا قمت ببرمجة برنامج واريد اعطاء لشخص اسمه [ احمد ] لكن ! اخاف ان اعطيه البرنامج فيقوم بنشره ، بهذه الطريقة سالجئ لحماية برنامجي على قطع الجهاز الخاصة بـ [ احمد ] المتمثلة بالهاردوير والمذربورد وغيرها [ الادوات المطلوبة / لعمل الحماية ] [ 1 ] برنامج Net. اي اصدار انا طبقت على الاصدار 2012 [ 2 ] حساب بموقع PasteBin.com [ 3 ] مكتبة System.Management [ 4 ] فنكشنات التحقق من قطع الجهاز ، مكتوبة بلغة [ Net. ] اولا نقوم بتسجيل عضوية بموقع [ PasteBin ] رابط التسجيل [ هنا ] اتمام التسجيل ، ظهور رسالة تخبرك بالتوجه نحو بريدك لتفعيل العضوية بعد عملية التفعيل ظهور رسالة تخبرك بنجاح التفعيل الان نقوم بتسجيل الدخول ثم ، نقوم بفتح الفيجوال ستوديو واختيار مشروع جديد ، ثم نقوم باضافة [ TextBox1 ] + [ Button1 ] من قائمة الادوات ليصبح المشروع كالاتي .. الان نقوم باضافة مكتبة الـ [ System.Management] من خيارات المشروع ، كلك يمين ثم نتوجه الى النافذة [ Refernces ] ثم نقوم بكتابة اسم المكتبة في مربع البحث [ System.Mangament ] ثم نضغط موافق الان نقوم بالنقر المزدوج على الـ [ Form1 ] ونقوم بمسح كل الاكواد ونلصق هذه الاكواد Imports System.Management Imports System Imports System.Text Imports System.Security.Cryptography Imports System.Net Public Class Form1 Dim HW As New SEC_Informations Dim HDD As String Dim CPU As String Dim MB As String Dim MAC As String Dim hwid As String = Strings.UCase(HW.getMD5Hash(CPU & HDD & MB & MAC)) Public Class SEC_Informations '..................................... '>> ReCoder : SEMO.Pa3x '>> Skype : Security.Najaf '..................................... Friend Function GetProcessorId() As String Dim strProcessorId As String = String.Empty Dim query As New SelectQuery("Win32_processor") Dim search As New ManagementObjectSearcher(query) Dim info As ManagementObject For Each info In search.Get() strProcessorId = info("processorId").ToString() Next Return strProcessorId End Function Friend Function GetMACAddress() As String Dim mc As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration") Dim moc As ManagementObjectCollection = mc.GetInstances() Dim MACAddress As String = String.Empty For Each mo As ManagementObject In moc If (MACAddress.Equals(String.Empty)) Then If CBool(mo("IPEnabled")) Then MACAddress = mo("MacAddress").ToString() mo.Dispose() End If MACAddress = MACAddress.Replace(":", String.Empty) Next Return MACAddress End Function Friend Function GetVolumeSerial(Optional ByVal strDriveLetter As String = "C") As String Dim disk As ManagementObject = New ManagementObject(String.Format("win32_logicaldisk.deviceid=""{0}:""", strDriveLetter)) disk.Get() Return disk("VolumeSerialNumber").ToString() End Function Friend Function GetMotherBoardID() As String Dim strMotherBoardID As String = String.Empty Dim query As New SelectQuery("Win32_BaseBoard") Dim search As New ManagementObjectSearcher(query) Dim info As ManagementObject For Each info In search.Get() strMotherBoardID = info("SerialNumber").ToString() Next Return strMotherBoardID End Function Friend Function getMD5Hash(ByVal strToHash As String) As String Dim md5Obj As New System.Security.Cryptography.MD5CryptoServiceProvider Dim bytesToHash() As Byte = System.Text.Encoding.ASCII.GetBytes(strToHash) bytesToHash = md5Obj.ComputeHash(bytesToHash) Dim strResult As String = "" For Each b As Byte In bytesToHash strResult += b.ToString("x2") Next Return strResult End Function End Class Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load CPU = HW.GetProcessorId() HDD = HW.GetVolumeSerial("C") MB = HW.GetMotherBoardID() MAC = HW.GetMACAddress() TextBox1.Text = (hwid) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim w As New WebClient Dim cpuids As String() = Split(w.DownloadString("Your Link"), "|") Dim cur As String = hwid For Each c As String In cpuids If cur = c Then GoTo authed End If Next MessageBox.Show("1 - Make sure of the title of [ Hardware ] Is not prohibited" & ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "2 - Make sure your Internet connection" & ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "3 - If you find other problems contact on [ Skype : Security.Najaf ]", "Warning message", MessageBoxButtons.OK, MessageBoxIcon.Error) Environment.Exit(0) authed: MessageBox.Show("Has been successfully activated version" & ChrW(13) & ChrW(10) & ChrW(13) & ChrW(10) & "Thank you for using this program", "Welcome Message", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub End Class الان نقوم بتشغيل المشروع ، نلاحظ سيظهر لنا رقم طويل نقوم بنسخة ثم نقوم بالذهاب لموقع [ PasteBin ] ونقوم بكتابة مشاركة جديدة نقوم بكتابة الرقم الذي قمنا بنسخه ، مع تعديل خيارات المشاركة ثم نقوم بالضغط على كلك يمين على كلمة [ RAW ] ونختار نقوم بالرجوع لمشروعنا ونستبدل كلمة [ Your Link ] بالرابط الجديد الان قم باعطاء برنامجك للعميل ، وقل له ان يشغله ، بعد ان يقوم العميل بتشغيل البرنامج سيظهر له الرقم الطويل يقوم باعطاءك اياه لتقوم انت بوضعه بالموقع وسيعمل برنامجك بدون اي مشاكل اما عند الاشخاص الغير مصرح لهم باستعمال البرنامج الان السؤال كيف ساقوم باضافة اكثر من رقم عميل بالموقع ؟ الجواب بين كل عميل واخر افصل بينهم بالـ [ | ] مثال بسيط على العملية .. نصائح لحماية معقدة اكثر ، قم بضغط البرنامج بحماية [ SafeEngine ] او [ Consufer ] او غيرها من باقي الحمايات العنيدة .
  24. السلام عليكم ورحمة الله وبركاته.. اليوم سأشرح لكم الدالة StrConv ولأي الامور تستخدم. الدالة حصرا تتعامل مع النصوص ( String ) ووضيفتها التحويل بين الاحرف الانجليزية ( كبير , صغير ) الدالة تأخذ 3 براميترات: البراميتر القيمة الوصف vbUpperCase 1 تحويل جميع الحروف الى حروف كبيرة vbLowerCase 2 تحويل جميع الحروف الى حروف صغيرة vbProperCase 3 تحويل الحرف الاول من كل كلمة الى كبير وباقي حروف الكلمة الى حروف صغيرة vbUnicode 64 تحويل النص الى سلسلة الـ UNICODE vbFromUnicode 128 تحويل النص من سلسلة UNICODE الى تنسيقات اخرى مثال: StrConv ("officena semo pa3x", 1) Result: "OFFICENA SEMO PA3X" StrConv ("OFFICENA SEMO PA3X", 2) Result: "officena semo pa3x" StrConv ("OFFICENA SEMO PA3X", 3) Result: "Officena Semo Pa3x" الاستخدام في الاستعلام يكون: الاستخدام في داخل محرر الـ VBA يكون: StrConv([CategoryName],3) تحياتي للجميع.. SEMO.Pa3x
  25. في كثير من الاحيان، نلجأ الى استخدام الدالة IF أو غيرها من دوال الشروط للتحقق من قيم رقمية. ملاحظة: الدالة تتحقق من الارقام فقط. مثلا لو كان الحقل يتحوي القيمة 1 اظهر لي رسالة جيد واذا كان الحقل يحتوي القيمة 2 اظهرلي رسالة متوسط واذا كان الحقل يحتوي القيمة 3 اظهر لي رسالة ضعيف في الوضع الطبيعي VBA داخل النماذج يكون If txt_Status = 1 Then MsgBox "جيد" ElseIf txt_Status = 2 Then MsgBox "متوسط" ElseIf txt_Status = 3 Then MsgBox "ضعيف" Else MsgBox "لا توجد قيمة مطابقة" End If وفي الاستعلام يكون Check_Value: IIf([text_Status]=1;"جيد";IIf([text_Status]=2;"متوسط";IIf([text_Status]=3;"ضعيف";"لا توجد قيمة مطابقة"))) اما الدالة Choose مختصرة وسهلة اكثر. Nz(Choose(txt_Status, "Good", "Semi-Good", "Bad"), "No Value !") تقوم الدالة بعرض مكان القيمة الصحيحة بين القيم الموضوعه حسب الحقل الموجود txt_Status تحياتي لكم. حسنين
×
×
  • اضف...

Important Information