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

ابوخليل

أوفيسنا
  • Posts

    12,448
  • تاريخ الانضمام

  • Days Won

    231

كل منشورات العضو ابوخليل

  1. اولا لن تتمكن من رفع من مستواك التعليمي وخبرتك البرمجية ما دمت تستخدم الحروف العربية في البرمجة حينما اكتب كودا محكما يشتمل على حروف عربية .. حينما ارجع اليه بعد فترة لا يمكنني فهمه ولا ماذا يعمل معذرة .. لا اكف عن طبعي في اسداء النصائح ، مع علمي بأنها ثقيلة على المتلقي . على كل حال تم تحقيق طلبك بفتح النموذج المحدد بناء على العقدة tree2.accdb
  2. وهذا حل مشابه لما تفضل به اخوي موسى مع بعض الاضافات Private Sub txt1_AfterUpdate() Dim i As String Me.txt1.SetFocus i = Me.txt1.Value i = Replace(i, "عبد", "عبد" & " ") Me.txt1 = i End Sub الاسماء المركبة2.accdb
  3. انا اعتراضي على العنوان : اكسس والتعامل مع ملفات Dll مهما غيرت امتدادها فاكسس ينظر الى ما بداخلها ويعرف انها جداول اكسس من سنوات عديدة مضت ولا زلت وانا استخدم هذه الطريقة .. ليس من باب الحماية بل من باب منع العبث ويمكننا تسميته تمويه وليس حماية اي ان المستهدف هو الشخص المتصفح المستعجل الذي يفتح الملفات بحثا عن شيء ما . مثلا يريد فتح واجهات البرنامج فيخطيء ويفتح قاعدة الجداول
  4. انا غيرت في المسميات في مثالك كانت الاسماء : نوع CRJ CRI BOEING BOENIG AIRBUS AIRBUS CRJ BOING ARBUS ويبدوا ان فيها اخطاء املائية في الاسماء الثلاث .. وانت قلت : ( انها ثلاث انواع ولكن الارقام تختلف) لذا قمت بتصحيح الاسماء لاحظ BOEING كلها مختلفة عن بعضها .. والبقية مثلها اذا هذه الاخطاء الاملائية موجودة عندك في الأصل وتريد تطبيق فكرتك فيلزمك التالي : عمل حقل يحمل صفة محددة واحدة لهذه الاسماء مثلا .. BOEING ثلاث اسماء مختلفة يجب ان تضع امامها رقما او نصا واحدا .. اي انك تجعلها متشابهه في الصفة ولنقل تضع امام كل واحدة رقم 1 وهكذا تعمل مع بقية الاسماء ... ويكون تطبيق الكود على هذه الصفة كيف تعرف ان الاسماء مختلفة ؟ اعمل استعلام تجميعي لحقل الاسم Group By من جدول TBL_T_TYPE_PLANE
  5. وحماية ثالثة .. ان يحميك الله من كل سوء ، ويطيل عمرك على طاعته
  6. على اعتبار اننا نتكلم عن حماية التصميم .. ليتك قرأت ما كتبته بتمعن .. ابدا لا دخل للدوال والمعادلات بالجداول .. وممكن الجداول مفتوحة بدون حماية ، وازيدك من الشعر بيت .. تستلم مفتاح التسجيل ملكا لك مدى الحياة ، ولكنك لن تتمكن من نقل البرنامج الى كمبيوتر آخر وتشغيله
  7. اهلا ابا طارق لاحظت انك موضوعك هذا مكرر عن موضوعك السابق وكان الأولى ان تتابع هناك على كل حال خذ مني هذه الفوائد : 1- الترقيم التلقائي هو ملك للجدول ولأكسس وليس للمبرمج .. ولا ينصح العبث به .. وغالبا يستخدم كمفتاح له ، ومن هذا الرقم يمكننا اكتشاف عدد السجلات المحذوفة 1- الترقيم التلقائي يصعب تغييره او التعديل عليه الا بكود خاص ونلجأ اليه غالبا عند ادراج ارقام مفقودة . الخلل عندك من البداية حيث جعلت ترقيم الجدول التلقائي رقما للفاتورة . الارقام لا تعني شيئا بجانب البيانات المصاحبة .. اذا غرضك من هذا التعديل هو ترتيب العرض فأرى انه يمكنك معالجة وضعك باضافة حقل ترقيم بجانب رقم الفاتورة وتعمل فيه الترتيب الذي تريد ثم تستخدم الفرز والترتيب بناء على هذا الرقم
  8. شكرا لك استاذ عمر على المداخلة واحسنت في عرض هذه الفكرة ، وطريقة تنفيذها .. ويعتبر هذا العمل زيادة عالية في حماية بيانات العميل .
  9. عدت اجربه مرة اخرى المثال يعمل كما طلبت على اكمل وجه ملحوظة : بعد كل اختيار انقر على تنفيذ يجب الاختيار اولا ليتم الانتقال الى سجل جديد ويتم تنفيذ الامر AAAA2.rar
  10. اعتذر اخي الكريم عن الخطأ في المرفق فقد اختلط علي تفضل المرفق الصحيح AAAA2.accdb
  11. عثرت لك على هذا .. ولم اجربه Sub SavePDFAsPng(sPathToPDF As String, sPathToPNG As String) Dim oPres As Presentation Dim oSh As Shape ' Height/Width are hardcoded here ' You could get trickier and bring the PDF into any presentation ' once to get its proportions, delete it, set the slide size to the same ' proportions, then re-insert the PDF Dim sngWidth As Single Dim sngHeight As Single sngWidth = 612 sngHeight = 792 Set oPres = Presentations.Add With oPres With .PageSetup ' set it to 8.5x11 .SlideHeight = sngHeight ' 11in * 72 points per inch .SlideWidth = sngWidth End With .Slides.AddSlide 1, .SlideMaster.CustomLayouts(1) With .Slides(1) Set oSh = .Shapes.AddOLEObject(0, 0, sngWidth, sngHeight, , sPathToPDF) Call .Export(sPathToPNG, "PNG") End With .Saved = True .Close End With End Sub Sub TestSavePDFAsPng() Call SavePDFAsPng("C:\Temp\MyTest.pdf", "C:\Temp\MyTest.PNG") End Sub
  12. ادرج ptrsafe ليصبح Declare PtrSafe Function apisndPlaySound Lib "winmm" Alias "sndPlaySoundA" (ByVal filename As String, ByVal snd_async As Long) As Long
  13. السلام عليكم خير الكلام ما قل ودل . اللهم صل على محمد وآله وصحبه . بسبب ملاحظتي لحرص البعض _خاصة المستجدين _ على مسألة الحماية واستخدام طرق معقدة والبحث عن الجديد والأقوى احببت ان انشر تجربتي وخبرتي في هذه المسألة كأيسر وكذلك اقوى طريقة . الحماية من جهتين : 1- حماية البيانات وهي الجداول .. وهذه تهم المستخدم ( العميل) 2- حماية البناء ..( التصميم بما يشتمل من اكواد وغيرها ) وهذه تهم المبرمج ----------------------------------- الجهة الأولى : 1- اكسس ضعيف جدا في حماية جداوله .. لأن اي مستخدم مهما ضعفت صلاحياته يمكنه التمكن من الجداول ( نسخ / تغيير / حذف) 2- اي شخص يملك قاعدة بيانات اكسس يمكنه الوصول الى الجداول ما لم يتم حمايتها بكلمة مرور اكسس 3- ينطبق هذا على القواعد المقسمة حيث يجب تفعيل كلمة مرور اكسس على الواجهات الأمامية قبل عرض كلمة مرور المستخدم ، والا ستكون الجداول في متناول اليد . نأتي للجهة الثانية وهي ما يخص المبرمج : من خلال تجارب وخبرة سنوات افضل طريقة تريح المبرمج وكذلك العميل وبعيدا عن غرس الملفات والريجستري والفلاش : الاعتماد على رقم سيريال واحد من عتاد الجهاز ( قرص صلب / معالج / اللوحة الأم ) بشرط ان يكون الرقم اساسي خاصة القرص الصلب لا يتغير عند عمل التهيئة . فكون الرقم اساسي لا يتغير يفيد العميل عندما يقوم بتهيئة القرص ، وهو مريح ايضا للمبرمج ( يوجد كثير من المواضيع هنا في هذا المنتدى تشرح عملية استخلاص ارقام القطع الداخلية لجهاز الحاسب .. ابحث ) الخطوات : --------------------------------- - استخراج واستخلاص الارقام من السيريل ( غالبا يأتي مختلط بارقام وحروف) سيظهر هذا الرقم للعميل في فورم التسجيل واسفله حقل لادخال رقم النسخة ------------------------------- - نعمل دالة1 = استقطاع جزء محدد من النتيجة .. مثلا خمسة ارقام او اربعة ارقام من اليمين او من اليسار ( استقطاع ثابت) - نعمل دالة2 = اجراء معادلة على دالة1 ، مثلا ( دالة1 (x) 1234567 + 53954 ) ------------------------------- - عندما يرسل العميل رقم السيريل ويطلب رقم النسخة نقوم بعمل المعادلة ومن ثم نرسلها للعميل نتيجة هذه المعادلة ستبقى ملك دائم لجهاز حاسب واحد ما دام على قيد الحياة -------------------------------------------------------------------------------------------------------------- ما ذكرته اعلاه هو للنسخة الدائمة .. أما النسخة المؤقته فأقوم بعملها كالتالي : يجب ان يكون العمل مقسم الى واجهات وجداول . يجب ان اتعامل مع العميل على اساس نسختين من الواجهات : مؤقتة / دائمة الفرق بين الواجهة المؤقتة والواجهة الدائمة .. هي زيادة سطرين بشرطين في المؤقتة 1- الشرط 1: لن تفتح المؤقتة الا مع وجود الأنترنت شغال 2- نضع سطرا نحدد تاريخ توقف البرنامج ( يتم جلب التاريخ من الانترنت ) لنفرض انتهت مدة التجربة بعد شهر او شهرين .. وتم الشراء .. هنا نرسل الواجهة الدائمة للصق والاستبدال . هنا نكون حافظنا على بيانات العميل المدخلة وعلى حقوقنا البرمجية ----------------------------------------------------- نقطة اخيرة : سيتبادر الى الذهن ! اين يحفظ رقم النسخة ؟ لأن البرنامج سيطلبه عند كل اقلاع ؟ الجواب : ما دام رقم النسخة ملكا للجهاز فيمكن حفظه في اي مكان ، مثلا في حقل في جدول بشرط ان يحتوي الجدول على سجل واحد فقط او يمكن حفظه في ملف نصي بجانب قاعدة البيانات وهذه الطريقة الاخيرة هي الافضل بل تجب اذا تم توزيع الواجهات على اكثر من جهاز .. والسبب ان كل جهاز سيكون له رقمه الخاص هذا ما لدي آمل تجدوا فائدة
  14. لا شيء .. فاللغة العربية بحر .. " سددوا وقاربوا " .. والمقاربة هنا جميلة .. ما يخرج عن السياق لا يصل عدد اصابع اليد الواحدة
  15. تم تحقيق طلبك الأول الافضل تجعل طلبك الثاني في موضوع مستقل جديد لأنه يخص التقارير ABC2.accdb
  16. يبدو ان قيمة me.type_in_ara في المثال تختلف عن قيمتها في برنامجك حاول ان ترفع مثالا مطابقا تماما لما هو موجود في برنامجك
  17. نرجوا الاهتمام مستقبلا بكتابة العنوان المناسب لوصف الموضوع . تم تعديل العنوان
  18. تفضل حسب طلبك وشرحك بالصورة بالضبط علما بعد رفعي لهذه الاجابة تبين لي ان Other غير منضبط وبحاجة لضبط خاص Private Sub TYPE_IN_ARA_AfterUpdate() Dim i As Integer i = DCount("TYPE_IN_ARA", "TBL_IN_ARA", "TYPE_IN_ARA=" & Me.TYPE_IN_ARA) If TYPE_IN_ARA = 1 Then Me.AI = i + 1 ElseIf TYPE_IN_ARA = 2 Then Me.BO = i + 1 ElseIf TYPE_IN_ARA = 3 Then Me.CR = i + 1 Else Me.OTHER = i + 1 End If End Sub ABC2.accdb
  19. غير مفهوم .. ليش تقرير واستعلام وتاريخ ... فعلى شرحك اعلاه يكون آخر سجل يحمل مجموع عدد مرات التكرار يعني ادخلت حرف A عشرين مرة في عشرين سجل .. هنا السجل ألأخير سيحمل رقم 20 صح ؟
  20. الاصل الذي يجب اتباعه هو تسجيل فترة الانقطاع سواء كانت داخل العقد او بين العقود وفي حالتك يجب اولا ايجاد طريقة لتحويل الاعمدة الى صفوف ثم تعمل مقارنة .. بين تاريخ نهاية العقد وتاريخ بداية العقد الذي يليه
  21. تفضل حسب ما فهمت على الاقل هذه الفكرة تفيدك ABC.accdb
  22. 1- اضبط هوامش التقرير بحيث تكون مناسبة 2- يجب تحجيم عرض المحتوى .. شيئا فشيئا والتجربة كل مرة حتى تختفي الرسالة القصد ان لا يكون اتساع وعرض الحقول في السجل اكبر من عرض التقرير الافتراضي ... لأن عرض التقرير الافتراضي لا يتغير الا عند تغيير حجم الورق فهو يمثل صورة طبق الأصل للورقة التي تم اختيارها للطباعة عليها .
  23. فائدة جميلة .. قد تخفى على الفطن
  24. لا اعلم عن طريقتك او فكرتك بعد الحروف في السجلات لماذا لا تستخدم دالة Dcount لعد هذه الحروف في السجلات ؟ ويمكنك وضع هذه النتيجة في اي مكان تريده
×
×
  • اضف...

Important Information