-
Posts
1,366 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
19
Community Answers
-
sandanet's post in مساعدة في نقل اكواد الى وحدة نمطية was marked as the answer
تفضل اخي الكريم .. أتمنى ان يكون هذا طلبك
بالنسبة لسؤالك
فهو يعتمد على درجة تعقيد برنامجك وطريقة تنفيذ الافكار فيه والاكواد التي تستعملها وما الى ذلك من امور .. فنقل الاكواد بشكل عام الى وحدة نمطية لايؤثر بحد ذاته على شيء
تحياتي
b (2).accdb
-
sandanet's post in تحويل النموذج إلى ملف pdf was marked as the answer
نعم أخي الكريم يمكن عمل ذلك عن طريق الكود التالي
DoCmd.OutputTo acOutputForm, "yourform", acFormatPDF, CurrentProject.Path & "\" & Format(Date, "dd-MM-yyyy ") & ".pdf", False تضع الكود السابق تحت زر امر على النموذج .. ستجد انه قام بحفظ الفورم بصيغة pdf في نفس مسار البرنامج لديك
ملاحظة: اذا اردت ان يفتح الملف بعد الحفظ غير false الى true
كما بامكانك تصدير الفورم يدوياً كما في الصورة
تحياتي
-
sandanet's post in تحويل النموذج إلى ملف pdf was marked as the answer
نعم أخي الكريم يمكن عمل ذلك عن طريق الكود التالي
DoCmd.OutputTo acOutputForm, "yourform", acFormatPDF, CurrentProject.Path & "\" & Format(Date, "dd-MM-yyyy ") & ".pdf", False تضع الكود السابق تحت زر امر على النموذج .. ستجد انه قام بحفظ الفورم بصيغة pdf في نفس مسار البرنامج لديك
ملاحظة: اذا اردت ان يفتح الملف بعد الحفظ غير false الى true
كما بامكانك تصدير الفورم يدوياً كما في الصورة
تحياتي
-
sandanet's post in تحويل النموذج إلى ملف pdf was marked as the answer
نعم أخي الكريم يمكن عمل ذلك عن طريق الكود التالي
DoCmd.OutputTo acOutputForm, "yourform", acFormatPDF, CurrentProject.Path & "\" & Format(Date, "dd-MM-yyyy ") & ".pdf", False تضع الكود السابق تحت زر امر على النموذج .. ستجد انه قام بحفظ الفورم بصيغة pdf في نفس مسار البرنامج لديك
ملاحظة: اذا اردت ان يفتح الملف بعد الحفظ غير false الى true
كما بامكانك تصدير الفورم يدوياً كما في الصورة
تحياتي
-
sandanet's post in تقييد المستخدم لكتابة نص "عربي" في TextBox was marked as the answer
السلام عليكم ورحمة الله وبركاته
تحية طيبة وبعد ...
كل عام وأنتم بخير وبصحة وسلامة إن شاء الله .. اتمنى ان يكون عام 2021 عام خير على أمة محمد أجمعين.
بالنسبة لموضوعي الذي احببت مشاركتكم إياه فهو نادر مايستخدم ولكن قد يحتاجه احد ما كما احتجت له أنا وهو عملية إجبار المستخدم على ادخال كلمة في مربع نص على ان تكون الكلمة بالعربي وليس بالانجليزي وفي نفس الوقت عدم السماح له بإدخال ارقام في مربع النص وهو الامر عتبر غير شائع الاستعمال في الاكسس لكون ان المستخدم دائماً يكون هو المسؤول عن إدخالاته .. لكن في بعض الأحيان قد تحتاج الى فرض قيود صارمة على المستخدمين العابثين ومنعهم من حرية الاختيار عند ادخال بيانات معينة واجبارهم على ادخال ارقام او حروف انجليزي فقط او عربي .. الخ .
إليكم الكود التالي الذي يجبر المستخدم على الكتابة بالعربي فقط في مربع النص .. يتم وضعه في حدث "عند الضغط على مفتاح"
Select Case KeyAscii Case 48 To 57, 65 To 90, 97 To 122 ' Numbers and english letters KeyAscii = 0 Exit Sub End Select الارقام من 48 الى 57 هي للأرقام والباقي للحروف الانجليزية
تحياتي
-
sandanet's post in كسر حماية الرقم السري لأكواد فيجوال بيسك was marked as the answer
اساتذتي الكرام تحية طيبة لكم
انا رأيي الشخصي ان صيغة الـ accde هي الحق الوحيد الذي يمتلكه المبرمج في حماية اكواده عندما يريد نشر برنامجه على الانترنت .. اما من يقفل الاكواد وينشر قاعدة البيانات بصيغة accdb فلايحق له الاعتراض على من يصل للأكواد.
اما من ناحية البرنامج الذي تمت ازالته فهو بالتأكيد ستكون فائدته اكثر من مضاره لسبب واحد وهو اغلب المبرمجين ينسون الارقام السرية التي وضعوها لعدة اسباب وهذا ما حصل معي سابقا وقد فقدت اكواد مهمة وقتها مما اضطرني للبحث عن طريقة لكسر قاعدة البيانات في المواقع الاجنبية حيث هنالك الحرية في طرح مثل تلك البرامج
تحياتي
-
sandanet's post in معرفة عدد مرات الدخول الى التقارير والنماذج was marked as the answer
تفضل اخي الكريم
test.accdb
-
sandanet's post in مشكلة في تحويل قاعدة البيانات was marked as the answer
للأسف لا املك نفس الاصدار لكني اعتقد ان عملية تحويل قاعدة البيانات الى accde هي نفسها في الاصدارات الاقدم من 2019
بعد عمل compile للأكواد والتأكد من خلو برنامجك من الأخطاء قم بعمل ضغط واصلاح اولاً ومن ثم توجه الى "حفظ ونشر" في قائمة ملف ومن ثم اختار انشاء accde
-
sandanet's post in اريد شرح EOF بالتفصل was marked as the answer
أخي الكريم من المعروف برمجياً انه يجب تحديد نهاية السجلات قبل إجراء عملية MoveNext فإذا لم تحدد نهاية السجلات فانك ستحصل على خطأ لذلك يتم استخدام EOF للإشارة الى نهاية السجلات وهي تعني "end of"
ويتم استخدامها كالتالي:
If Not rst.EOF Then rst.MoveNext حيث ان rst تمثل مجموعة السجلات في الجدول
إليك هذا المثال ايضاً
Set rs = CurrentDb.OpenRecordset("select * from Table1 ") Do While rs.EOF = False rs.Edit " do something " rs1.MoveNext Loop المثال يبين ان الحلقة التكرارية do تستمر بتنفيذ العمليات البرمجية على كل سجل مادامنا لم نصل لنهاية السجلات في الجدول اي مادامت end of table1 = false فعندما نصل لنهاية السجلات ستصبح end of table1 = true وعندها ستتوقف الحلقة التكرارية
وهذا مثال آخر مشابه للذي قبله
Set rst = dbs.OpenRecordset("SELECT * FROM Table1", dbOpenDynaset) Do While Not rst.EOF " do something " rst.MoveNext Loop عوضاً عن القول للبرنامج نفذ الحلقة التكرارية مادامت نهاية السجلات false فان المثال الاخير يقول للبرنامج نفذ الحلقة التكرارية مادمت غير واصل لنهاية السجلات بعد
مثال آخر: هنا نجد ان البرنامج يبدأ بتنفيذ الأوامر البرمجية من أخر سجل في الجدول ويتحرك الى ان يصل الى أول سجل
Set rst = dbs.OpenRecordset("SELECT * FROM Table1", dbOpenDynaset) rst.MoveLast Do While Not rst.BOF " do something " rst.MovePrevious Loop أتمنى ان تكون الفكرة واضحة
تحياتي
-
sandanet's post in حماية قاعدة البيانات مشكلة was marked as the answer
تابع احدث طرق الحماية هنا
وفي طريقة اخرى وهي اخفاء الجداول عن طريق الكود واستخدام الاستعلامات الغير مرئية او استعلامات sql وكذلك قفل الوحدات النمطية برقم سري وبعدها تحول قاعدة البيانات الى accde
اضمن لك حماية قوية جداً
-
sandanet's post in طريقة إخفاء عرض التصميم was marked as the answer
حول البرنامج الى صيغة Accde بذلك تمنع الدخول الى النماذج بوضع التصميم وكذلك عدم امكانية الدخول الى الاكواد ايضا
-
sandanet's post in تحويل الاستعلام الى كود was marked as the answer
تفضل اخي الكريم هذا برنامج يحول عبارة الـ sql الى vba
SQL2VBA.accdb
-
sandanet's post in تحويل قاعدة البيانات الى ملف تنفيذي was marked as the answer
أخي الكريم أمير في الاكسس لايوجد برنامج خارجي لعمل ذلك وإنما يتم عمل ذلك من خلال الاكسس نفسه
اذا كنت تعمل على اكسس 2007 فما فوق فتستطيع تحويل قاعدة البيانات من Accdb الى Accde من الاكسس نفسه كما في الصورة المرفقة واطمئن لايوجد طريقة لاختراق اكوادك
لكن اذا اردت حماية جداول بياناتك ايضاً فهناك عدة طرق إما عن طريق إخفاء الجداول بالكود وإظهارها بالكود أيضاً او عن طريق قفل قاعدة البيانات برقم سري واستخدام ملف آخر وظيفته تمرير الرقم السري لقاعدة البيانات لكي تفتح وهي طريقة مضمونة في الحماية بنسبة عالية فلايمكن استيراد شيء من القاعدة او الإطلاع على محتواها بدون معرفة الرقم السري
تابع الموضوع هذا اذا اردت تجربة الطريقة
https://www.officena.net/ib/topic/98020-طريقتي-في-حماية-قاعدة-البيانات-من-تفعيل-الشفت-وحماية-الاستعلامات-و-وحدات-المايكرو-وكلمة-السر-للقاعدة-الخلفية/?tab=comments#comment-596888
-
sandanet's post in فتح قاعدة اخرى من القاعدة الحالية was marked as the answer
بعد إذن أستاذي القدير صالح .. إليك التعديلات أخي @eng aoff
database1.accdb database2.accdb
-
sandanet's post in أعادة تشغيل ملف أكسس was marked as the answer
اخي @qathi تفضل
DatabaseRestartV1.2.accdb DatabaseRestartV1.2.mdb
المصدر :
http://blog.nkadesign.com/2008/05/06/ms-access-restarting-the-database-programmatically/
-
sandanet's post in تطبيق تغيير الالوان حسب المعطيات لحجز الموعد was marked as the answer
يسعدني ان اكون أول من يعلق على هذا العمل الجميل فبارك الله فيك هذه الطريقة مفيدة في عمل التنبيهات المرئية .
أخي الكريم بالنسبة للمثال فإن خانة الوقت يوجد بجانبها منتقي التوايخ وهو لاعلاقه له بالوقت وهذا يمكن إزالته من خصائص مربع النص نفسه
ثانياً هل يمكنك تطوير الفكرة وذلك بجعل وقت الحجز يكون من وقت كذا الى وقت كذا فإن تم اختيار وقت يقع ضمن الوقت المحجوز فإنه يظهر باللون الأحمر
-
sandanet's post in عدم ظهور السجل المحذوف بالنموذج was marked as the answer
بعد امر الحذف استعمل الامر Me.requery او refresh
-
sandanet's post in مطلوب تعديل لحذف محتويات حقل دون حذف حقول نفس السجل was marked as the answer
تفضل جرب المرفق
db1.zip
-
sandanet's post in مساعدة .. رسالة تمكين المحتوى was marked as the answer
تفضل هذا الملف يلغيها بشكل دائم
شغل هذا الملف مرة واحدة فقط.zip
-
sandanet's post in المساعدة فى مشكلة إختفاء جميع اكواد البرنامج was marked as the answer
قم بوضعه في اي حدث سواء كان حدث عند فتح نموذج او اي حدث اخر تريد
-
sandanet's post in حماية قاعدة بيانات الاكسس من النسخ was marked as the answer
اخي الكريم الموضوع بكل بساطة هو حماية برنامجك من النسخ على جهاز آخر
الحماية المتبعة في المثال هي الاولى من نوعها في الوطن العربي على حسب علمي المتواضع وفكرة المثال هي الاعتماد على قراءة الارقام التسلسلية لثلاثة قطع من جهاز الكومبيوتر ودمجها مع بعض وتوليد رقم لنسخة البرنامج حيث يظهر هذا الرقم للمستخدم عندما يحاول تشغيل البرنامج على جهاز آخر غير مصرح له بذلك سوف يضطر الى شراء رقم التفعيل منك .. طبعا لايهم اذا ما قام العميل بحفظ الكود في ورقة خارجية ام داخلية لان كود التفعيل حتى وان تسرب لأي شخص آخر فلن يعمل معه لان كود التفعيل ذلك خاص بالجهاز الذي تم ارسال رقمه التسلسلي لك
طبعا فكرة الحماية جائت من الحماية القديمة المتبعة في اغلب البرامج والتي كانت تعتمد على قطعة واحدة فقط في الجهاز .. في الواقع ان قطعة واحدة فقط لاتكفي لعمل الحماية فاذا كانت الحماية معموله على رقم الهارد فيمكن للمستخدم نقل الهارد لجهاز آخر غير مصرح له بالعمل على البرنامج كما ان مشكلة الاعطال قد تسبب بفقدان البرنامج فلو عطل الهارد وكانت الحماية معمولة على رقم الهارد عندئذ سيضطر المستخدم الى طلب رقم تفعيل جديد وهنا تكمن المشكلة فلو كنت في مكان بعيد وراسلك المستخدم يطلب رقم تفعيل جديد بسبب عطل الهارد فانت لاتعرف مدى مصداقيته في ذلك .. لذلك وجب ايجاد حماية ثلاثية تقرأ مجموعة قطع مع بعضها وهنا توجد ميزة وهي حتى لو تلفت قطعة مثلاً تلف الهارد فعند شراء المستخدم لهارد جديد فسيعمل معه البرنامج مباشرة ولا يطالبه برقم تفعيل جديد لان البرنامج قام بالتأكد من بقية القطع ووجد انها مطابقة لهذا الجهاز اي بمعنى ان هذا الجهاز مصرح له بالعمل على البرنامج
المقصود برقم النسخة هو الرقم الذي يظهر لدى المستخدم عندما يكون البرنامج غير مصرح له بالعمل على جهازه
رقم نسخة يختلف من جهاز الى آخر كما ان رقم التفعيل الذي ترسله للمستخدم لايعمل الا على الجهاز الذي تم استخراج رقم النسخة منه
المطلوب منك هو تبديل واجهة اسم المستخدم والرقم السري فهي افتراضية فقط وهي تأتي بعد نجاح تفعيل البرنامج .. انت قم بوضع واجهة برنامجك مكانها
بالنسبة لنسخ البرنامج على حاسوب اخر فلا تقلق لايمكن تشغيل برنامجك على جهاز غير مصرح به
تحياتي
-
sandanet's post in فهم كود معين was marked as the answer
بعد إذن اساتذتي الكرام ..أخي الكريم أبو أحمد أولاً رمضان كريم عليك وعلى جميع الأخوة والأساتذة الكرام في هذا المنتدى الرائع.. ثانياً الكود الذي وضعته انت هو كالتالي : للعلم فإنه هنالك وحدة نمطية خاصة بتشفير البيانات وفك تشفيرها يجب ان تكون موجودة في قاعدة البيانات التي جلبت منها الكود السابق وجزء من هذه الوحدة النمطية هو الكود التالي الخاص بفك التشفير
Function decode(a, b As String) As String On Error Resume Next Dim R, i As Integer, s, u As String u = getcode(a, b) i = Val(Mid(u, 1, 1)) + 1 u = Mid(u, i + 1, Len(u) - i) If Len(u) Mod 3 <> 0 Then u = Mid(u, 1, Len(u) - 1) s = "" For R = 1 To Len(u) - 2 Step 3 s = s + Chr(Val(Mid(u, R, 3))) Next decode = s أما دالة التشفير فهي كالتالي :
Function incode(a As String, b As String) As String Dim R, i As Integer, s, u As String 1: u = "" s = ctrs(a, 3) If Len(s) Mod 2 = 1 Then s = s + Trim(str(Int(8 * Rnd(-Timer)))) i = 3 * Rnd(-Timer) + 1 For R = 1 To i u = Chr(100 * Rnd(-Timer) + 155) + u Next u = Trim(str(i)) + u u = u + s u = getcode(u, b) If decode(u, b) = a Then incode = u Else GoTo 1: End If End Function اما بقية اكود الوحدة النمطية فهي كالتالي :
Function getcode(a, b As String) As String On Error Resume Next Dim L, R As Integer, c As Long, q As String c = 0 For R = 1 To Len(b) c = c + Asc(Mid(b, R, 1)) * (10 ^ R) Next q = str(c) c = 0 For R = 1 To Len(q) c = c + Val(Mid(q, R, 1)) Next q = "" For R = 1 To Len(a) L = 256 - Asc(Mid(a, R, 1)) - R - Len(a) If L + c > 255 Then q = q + Chr(L - c) Else q = q + Chr(L + c) End If Next getcode = q End Function Function ctrs(s As String, Y As Byte) As String Dim R, i As Integer, u, T As String u = "" For R = 1 To Len(s) T = Trim(str(Asc(Mid(s, R, 1)))) For i = 1 To Y - Len(T) T = "0" + T Next i u = u + T Next ctrs = u End Function وطبعاً يجب ان يكون التشفير وفك التشفير مستند على معيار التشفير (بمعنى آخر الرقم الخاص بك او النص الذي بدونه لايمكن فك التشفير عن البيانات .. هذا الرقم او النص هو الذي يتم تمريره للدالة لكي تشفر البيانات)
للتوضيح .. عنما تريد تشفير رقم موجود في جدول تستخدم الأمر التالي
incode(Table1.[impnumber],10) كما تلاحظ فإننا استدعينا كود التشفير incode ومررنا إليه الحقل impnumber الموجود في جدول Table1 وقلنا له اجعل مفتاح التشفير هو الرقم 10 وفائدة ذلك هو لما يقوم شخص بسرقة بياناتك المشفرة ويحاول فك تشفيرها باستخدام الدالة decode فهو لن يعرف مفتاح التشفير المستخدم وبذلك لن يحصل على البيانات
وهنا سوف تستخدم الأمر decode بنفس الطريقة السابقة للحصول على الرقم الأصلي كالتالي
decode(Table1.[impnumber],10)
في الكود الذي ارفقته انت لاحظ ان المبرمج استخدم مفتاح التشفير التالي
DLookup("[text3]", "text2")
ارجو ان يكون الشرح وافي
تحياتي