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

محمد طاهر عرفه

إدارة الموقع
  • Posts

    8,498
  • تاريخ الانضمام

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

  • Days Won

    36

كل منشورات العضو محمد طاهر عرفه

  1. الحل بطريقة أخري ( بالكود ) ضع الدالة التالية فى أي وحدة نمطية Function date2(Mydate) If Mydate <= #12/31/2003# Then date2 = "yes" If Mydate > #12/31/2003# Then date2 = "No" If Mydate = "" Or IsNull(Mydate) Then date2 = "No" End Function ثم استخدمها فى الحقل المستنتج كالتالي kk2: date2([Delivery_Date])
  2. السؤال : كيف نقوم بعمل استنتاج لقيمة حقل فى الاستعلام بطريقة مركبة أي اذا كان تاريخ التسليم خاليا أو اذا كان أكير من 31-12-2003 تكون قيمة الحقل المستنتج Kk تساوي No و اذا كانت القيمة أقل من 31-12-2003 و ليست خالية تكون قيمة الحقل المستنتج kk تساوي Yes الاجابة : kk: IIf((IsNull([Delivery_Date]) Or [Delivery_Date]>#12/31/2003#),"NO","Yes")
  3. بالنسبة للحقول الاضافية من الممكن أن تستخدمي فيها Last بدل Max و يرجي مراجعة مواضيع الاستعلامات هنا http://www.officena.net/ib/index.php?showtopic=228
  4. القصود هو عمل تخصيص كاننا نضيف ايقون جديد أدوات تخصيص أوامر Tools Customize Commands ثم نسحب له قائمة جديدة الي الاعلي new menu ثم من مجموعة الخطوط Fonts نختار الخط الذي نريد و نسحبه فتصبح لدينا فائمة بها الخطوط الفضلة فقط
  5. حملي هذا البرنامج http://www.rarlabs.com/download.htm و هو يتعامل بكفائة مع امتدادي ال ZIP , RAR
  6. السلام عليكم يرجي عدم توجيه السؤال لشخص محدد ، بحسب قواعد المشاركة فهذا قد يحرمك من اجابة أفضل من شخص آخر بالنسبة للسؤال علامة ال ! تفصل بين كائن ، و الكائن الذي يحويه بمعني Forms!Form1![mm] و قد يغني عنها ال النقطة me.mm فهذا يشير الي كائن مربع النص المسمي mm النموذج form1 و للتعامل مع خاصية visible للمربع mm : لا يوجد بديل للنقطة me.mm.visible = true Forms!Form1.form.mm.visible = true أي ان الكائنات يمكن أن يفصلها علامة تعجب و نقطة ، و لكن ال ! هي الاصل أما الخصائص ، فلابد أن يسبقها نقطة مع تحياتي
  7. مرفق المثال به استعلامين الاول قد يغني و الثاني فى حالة الحاجة الي بيانات اضافية من جدول آخر بعد تحديد السجلات المطروبة فى الاستعلام الاول Query.rar
  8. الأخوة الكرام يرجي عدم نشر طلبات الارسال علي البريد فاذا أراد الأخ صاحب الملف نشره ، فليتفضل بنشره للجميع حبث أن تبادل المعلومات علي البريد مخالف لقواعد المشاركة
  9. أخي الكريم معرفة اسم قرص السي دي و التعامل معه علي هذا الاساس افضل من محاولة تغييره فكانك تقول بالكود: الملف رقم 1 علي السي دي أيا كان حرفه لانك ستستنج الحرف بالكود و هذا أفضل كثيرا من: الملف 1 علي ال E و تحاول تغيير رمز السي دي الي E أوعتقد أن تغيير الحرف اذا كان متاحا ، فسيكون أكثر صعوبة فيما قبل الويندوز اكس بي لذا أنصحك بان تعيد التفكير فى الطلب ، فاستنتاج الرمز أفضل بمراحل و اذا فيه مواضيع أخري بخلاف حرف السي دي ، فيرجي طرحها فى مشاركات مستقلة و هذا لا يمنع أن يوافيك احد الاخوة بتغيير الحرف ، و لكن نحن نراه ليس بالحل الافضل ، و عن نفسي اذا اريد هذا ساكتفي باستنتاج الرمز حيث أراه لاافضل و الانسب مع تحياتي
  10. هذا الموضوع جمعه أبو حمود --------------------------------- و هو لاضافة قيمة الي الجدول المبني عليه قائمة عند عدم وجودها فى الجدول الموضوع : وهذه خمس طرق للإضافة : أولاً : طريقة للإضافة الى القائمة بدون الحاجة لإظهار نموذج : 1- ضع التزام بالقائمة إلى نعم 2- في حدث عند عدم الوجود في القائمة ضع الإجراء التالي : On Error GoTo HandleErr Dim db As Database Dim strSQL As String Const فاصلة = """" strSQL = "Insert into اسم الجدول (اسم حقل بيانات القائمة في الجدول) Values " _ & "(" & فاصلة & NewData & فاصلة & ")" Set db = CurrentDb If MsgBox("هل ترغب في إضافة هذا البند إلى القائمة ؟", vbYesNo, "تسجيل بند جديد") = vbYes Then db.Execute strSQL Response = acDataErrAdded Else Response = acDataErrDisplay End If ExitHere: Exit Sub HandleErr: Select Case Err Case Else MsgBox Err & ": " & Err.Description, , "خطأ" End Select Resume ExitHere 3- حدد كلمتي "اسم الجدول" ثم غيرهما الى اسم الجدول الذي تأخذ القائمة البيانات منه ، لاحظ أنه إذا كان اسم الجدول مركب من كلمتين فأكثر فضعه بين قوسين مربعين مثال : [جدول الأسماء] . 4- حدد عبارة "اسم حقل بيانات القائمة في الجدول" واستبدلها باسم الحقل في الجدول ، انتبه اسم الحقل في الجدول الذي تأخذ القائمة البيانات منه . 5- إذا أردته أن يضيف مباشرة دون رسالة فأزل العبارة الشرطية If . ثانيا : طريقة مع فتح النموذج على سجل جديد وعند كتابة البيانات وإغلاقه من قبل المستخدم تظهر القيمة في الحقل مباشرة : في حدث عند عدم الوجود في القائمة اكتب مع تعديل الأسماء : Response = acDataErrContinue If MsgBox("البند غير موجود بالقائمة ." & vbCrLf & _ "هل ترغب في إضافته الى القائمة ؟", vbYesNo, "بند غير موجود") = vbYes Then [اسم القائمة على النموذج] = DFirst("[حقل مصدر البيانات]", "[اسم الجدول]") DoCmd.OpenForm "النموذج الذي سيتم إدخال البيانات فيه", , , , , acDialog, "gotonew" Me![اسم القائمة على النموذج].Requery [اسم القائمة على النموذج] = DLast("[حقل مصدر البيانات]", "[اسم الجدول]") DoCmd.GoToControl "اكتب الحقل الذي تود الانتقال إليه بعد إدخال البيانات في القائمة" End If في حدث عند التحميل للنموذج اكتب : If Me.OpenArgs = "gotonew" Then DoCmd.GoToRecord , , acNewRec ثالثاً : طريقة للإضافة مع إظهار النموذج والإضافة إليه تلقائيا ثم إغلاقه وكتابة الكلمة أو العبارة المضافة في الحقل والانتقال الى الحقل التالي : ملاحظة لن ترى النموذج لسرعة الإجراء . في حدث عند عدم الوجود في القائمة اكتب : If MsgBox("البند غير موجود بالقائمة ." & vbCrLf & _ "هل ترغب في إضافته الى القائمة ؟", vbYesNo, "بند غير موجود") = vbYes Then Response = acDataErrAdded DoCmd.OpenForm "اسم النموذج الذي ستضاف البيانات فيه", , , , acAdd, acDialog, NewData Else Response = acDataErrContinue End If وفي حدث عند التحميل للنموذج المذكور سابق اكتب : If Not IsNull(Me.OpenArgs) Then Me![اسم الحقل المبنيه عليه القائمة] = Me.OpenArgs DoCmd.Close End If يعيب هذه الطريقة أنك إذا كنت تفتح هذا النموذج مع تحديد OpenArgs من نموذج آخر غير النموذج الذي تم فتح هذا النموذج منه فسوف تتم إضافة القيمة التي تحملها OpenArgs تلقائيا (لغزعبارة غامضه) ولتوضيح ذلك : لنفرض أن اسم النموذج الذي فيه القائمة "نموذج الذي توجد فيه القائمة" والنموذج الذي ندخل فيه البيانات اسمه "نموذج تسجيل بيانات القائمة" لو طبقنا كل الكلام الوارد في ثالثا ستتم الإضافة بدون مشاكل ، ولكن لو كان لدينا نموذج آخر بأي اسم يحتاج هذا النموذج الى فتح "نموذج تسجيل بيانات القائمة" لأي غرض آخر غير الإضافة الى القائمة وكان يستخدم OpenArgs فالنتيجة ستتم إضافة قيمة OpenArgs إلى بيانات القائمة لأن النموذج عنده قصر نظر فلا يفرق بين النماذج أرجو أن تكون المسألة قد وضحت ، وكحل لذلك يمكنك استخدم دالة IsLoaded للتأكد من كون النموذج "نموذج الذي توجد فيه القائمة" مفتوح ، وإليك دالة Isloaded : Public Function IsLoaded(ByValstrformname As String) As Integer Const CondesignView = 0 Const ConObjectClosed = 0 IsLoaded = False If SysCmd(acSysCmdGetObjectState, acForm, strformname) <> ConObjectClosed Then If Forms(strformname).CurrentView <> CondesignView Then IsLoaded = True End If End If End Function ولمعرفة هل نموذج مفتوح أم لا اكتب : If IsLoaded("اسم النموذج المطلوب التأكد من كونه مفتوحاً") Then بقيه الإجراء ... ويعدل حدث التحميل ليكون كالتالي : If IsLoaded("اسم النموذج المطلوب التأكد من كونه مفتوحاً") Then If Not IsNull(Me.OpenArgs) Then Me![اسم الحقل المبنيه عليه القائمة] = Me.OpenArgs DoCmd.Close End If end if ملاحظة : لدي طريقة أخرى للتأكد من كون نموذج مفتوح أم لا ، وكذلك طريقة للتأكد من كون التقرير مفتوحا ، إذا رغبها أحد كتبتها . هناك تشبه الطريقة السابقة ولكن باستخدام متغير عام . رابعا : باستخدام DAO في حدث عند عدم الوجود في القائمة ضع الكود التالي : Dim db As Database Dim rst As Recordset If MsgBox("البند غير موجود بالقائمة ." & vbCrLf & _ "هل ترغب في إضافته الى القائمة ؟", vbYesNo, "بند غير موجود") = vbYes Then ' Response = acDataErrAdded Set db = Application.CurrentDb Set rst = db.OpenRecordset("اسم الجدول الذي تأخذ القائمة البيانات منه") rst.AddNew rst![اسم الحقل المبنيه عليه القائمة] = NewData rst.Update rst.Close db.Close Response = acDataErrAdded [اسم القائمة على النموذج]= DLast("[حقل بيانات القائمة في الجدول]", "[اسم الجدول]") Else Response = acDataErrContinue End If End Sub خامساً : باستخدام ADO في حدث عند عدم الوجود في القائمة اكتب If MsgBox("البند غير موجود بالقائمة ." & vbCrLf & _ "هل ترغب في إضافته الى القائمة ؟", vbYesNo, "بند غير موجود") = vbYes Then Dim rst As New ADODB.Recordset rst.Open "[جدول الأسماء]", CurrentProject.Connection, _ adOpenStatic, adLockOptimistic rst.AddNew rst![اسم الحقل المبنيه عليه القائمة] = NewData rst.Update rst.Close Response = acDataErrAdded [اسم القائمة على النموذج]= DLast("[حقل بيانات القائمة في الجدول]", "[اسم الجدول]") Else Response = acDataErrContinue End If ======================================= هذه هديه خاصة لك أخوي حارث ولا يهون الجميع : ======================================= إظهار البند التالي في قائمة منسدلة عند النقر المزدوج ضع في وحدة نمطية عامة الدالة التالية : Public Function عرض_بنود_القائمة(قائمة As ComboBox) Dim مجموع_الإدخالات As Byte, رقم_فهرس_حالي As Byte مجموع_الإدخالات = قائمة.ListCount If مجموع_الإدخالات = 0 Then DoCmd.Beep MsgBox "لايوجد أي بند مسجل في القائمة .", vbMsgBoxRight + vbMsgBoxRtlReading + vbInformation, "قائمة فارغة" Exit Function End If If قائمة.ListIndex <> -1 Then رقم_فهرس_حالي = قائمة.ListIndex End If If رقم_فهرس_حالي <> مجموع_الإدخالات And قائمة.ListIndex <> -1 Then قائمة = قائمة.ItemData(رقم_فهرس_حالي + 1) Else قائمة = قائمة.ItemData(0) End If If قائمة.ListIndex = -1 Then قائمة = قائمة.ItemData(0) End Function وضع الاستدعاء التالي لها في حدث عند النقر المزدوج للقائمة : Call عرض_بنود_القائمة(Me![اسم القائمة])
  11. اذا يوجد حقل معرف للادخالات اليومية ، فيمكنك عمل استعلام تجميع يقوم بالتجميع لكل طالبة رقم الطالبة Group By و رقم الادخال Max ووصف التقرير Last هذا طبعا اذا كانت الادخالات تتم بالترتيب ، اي ان أخر تقرير معرفه أكبر من الذي قبله فينتج استعلام به فقط رقم الطالبة و رقم آخر ادخالاتها أو نقوم بعمل استعلامين الاول استعلام تجميع للحصول فقط علي رقم آخر ادخال لكل طالبة و به رقم الطالبة Group By و رقم الادخال Max ثم نقوم بعمل استعلام آخر مبني علي هذا الاستعلام و جدول الادخالات و نربط بين MaxID و حقل ال ID فى جدول الادخالات و نضيف ما نشاء من حقول بالاضافة الي حقلي الاستعلام الاصلي
  12. السلام عليكم الطرق التي أعرفها ل كسر ال mde سواء من محرر البيزيك أو باداة خارجية ، لا تسترجع الاكواد فقط الكائنات أما اذا بالنوذج أو التقرير أو الموديول أكواد ، فهي مازالت محمية علي ما أعرف فهل ما تعرفه يخالف ذلك ؟؟
  13. السلام عليكم شكرا علي الموضوع المهم (y) أولا : القدرة علي التحويل الي ملف تنفيذي ، المهم ليس هو نوع الملف و لكن خصائصه ، فمع ال ACCESS RUN TIME يصبح ال MDE كانه ملف تنفيذي ثانيا : محدوديته علي الشبكة و السعة التخزينية هذا واقع ، و لكن 95% من الاستخدامات هي للمؤسسات الصغيرة و المتوسطة و هنا لا نواجه هذه المشاكل خصوصا مع التصميم السليم و التعامل مع البيانات بمرجلية ( كل سنة مثلا فى ملف ) و أما اذا زاد عن هذا فسيكون للاكسيس ايضا مكان كواجهة للتطبيق مع تخزين البيانات فى خادم sql العملاق ( مشروع أكسيس و ليس ملف اكسيس ) ثالثا : الرقم السري و الحماية : كسر حمايات الاكسيس شكلي ، فاكواد البرمجة فى ال MDE مازالت محمية و لم نسمع عن من وصل اليها علي عكس البيزيك الذي توجد عدة طرق لعمل DECOMBILE للملفات التنفيذية و أخيرا يطيب لي هذا الاقتباس من مشاركة للأخ المزيني فى الفريق العربي
  14. شكرا للاخ عبد الله علي الاكواد الجميلة و بخصوص الضغط يرجي مراجعة هذا الموضوع http://www.officena.net/ib/index.php?showtopic=1417
  15. هذا مثال للاخ أبو هاجر به ضغط الملفات بامتداد ZIP cop_zip_access_exe_ahg.zip
  16. السلام عليكم بعمل Puplishing يتم تكوين الملفات علي مجلد فى الجهاز و بعد ذلك تقوم برفعها علي الموقع باستخدام اي برنامج ftp و اعتقد أن هذا افضل من النشر المباشر من حيث السرعة
  17. اختيار رقم عشوائي http://www.officena.net/ib/index.php?showt...ic=1016&hl=عشوا
  18. هل كتبت القيمة المراد توزيعها فى الخلية الفعلة قبل تشغيل الماكرو مثلا اكتب 1000 ثم و انت مازلت فى نفس الخلية التي بها ا 1000 شغل الماكرو و اختار 10 فترات
  19. الموضوع غير منتشر لأنه مكلف و متخصص مقارنة بالحماية بالكود أي أنه هناك كلفة لقطعة الدنجل نفسها علي عكس الكود ، لذا فأغلب الناس يلجأون الي الحماية بالكود كما أنه حتي الدنجل ، يمكن التغلب عليه بواسطة المخترقين ببرامج الاختراق وذلك بفك شيفرة البرامج ثم اكتشاف المكان الذي يتم فيه استدعاء البيانات من الدنجل و عمل bypass له ( هذا فيما يخص تطبيقات الملفات التنفيذية بالبيزيك ) أما فى الاكسيس فقد يكون الموضوع أصعب فى فك حمايته ، و لكن ستبقي عقبة تكلفته و التخصص. و يوجد منه ما يركب علي ال parallel port او علي ال usb و هذه وصلات عن موضوع الدنجل ، لعل فيها بعض الفائدة http://eng.8m.com/tuter3.html http://www.cybcity.com/eng/progpro.html http://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?dongle http://networking.webopedia.com/TERM/D/dongle.html http://www.keylok.com/?source=google http://www.nwfusion.com/columnists/2002/0121gibbs.html http://info.astrian.net/jargon/terms/d/dongle.html http://www.faqs.org/docs/jargon/D/dongle.html
  20. http://www.al-ebda3.info/ib/index.php?show...t=0entry24943 :d
  21. وهذا الكود من أجل تغيير لون و حجم و خط التشكيل فقط لمجموعة خلايا و يمكن تغيير اللون و الحجم من الكود الفكرة أني اضطررت لاعداد لوحة بها أناشيد من أجل أطفالي ليضعوها فى الفصل و بعد كتابتها بالتشكيل ـ لم يعجبني أن التشكيل له نفس لون الكتابة و تغييره ممل جدا آمل أن يكون مفيدا مع تحياتي ملاحظة : تم حذف الملف و اضافته لمكتبة الأكود بعد تحميله 294 مرة الموضوع فى المكتبة : تحميل الملف من المكتبة:
×
×
  • اضف...

Important Information