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

Moosak

أوفيسنا
  • Posts

    2,034
  • تاريخ الانضمام

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

  • Days Won

    51

كل منشورات العضو Moosak

  1. عمي @ابوخليل 🙂 ممكن تكرما توضح لنا كيف تقوم بعمل الملف التنفيذي ؟ .. وكيفية إعطائه أمر الاستبدال ؟ .. وهل تختلف الطريقة عندما يكون التنصيب للمرة الأولى وعندما تكون للتحديث فقط ؟
  2. الحين بصراحة هذولا الأداتين ريحني وصرت لا أستغني عنهما في برامجي .. ومع التجربة على أرض الواقع فعلا ارتحت جدا في تحديث البرامج وتنزيلها وتوزيعها على أجهزة المستخدمين .. 🙂 صرت أتحكم بكل شي من جهازي المربوط على نفس الشبكة .. أو أرسل ملف التحديثات لمدير البرنامج وبكل سهولة يضيف ملف التحديث الجديد والبرنامج بنفسه يقوم بكل شي .. وهذولا الأداتين هم : 1- الإتصال التلقائي بقاعدة البيانات الخلفية ، وتخزين مكان قواعد الجداول اللي يرتبط بها البرنامج تلقائيا . 2- تحديث نسخة الواجهات للمستخدمين أوتوماتيكيا ، فقط بنقرات بسيطة يقوم البرنامج باستبدال الواجهات القديمة بالجديدة بدون ما يشعر المستخدم. 3 - ومع هذي الأداتين طورت طريقة لإغلاق البرنامج عند المستخدمين وفتح شاشة للإنتظار لهم بدل الإغلاق الكلي للبرنامج ، وذلك في حال أردت التعديل على نسخة الجداول ، أو لمجرد إغلاق البرنامج عنهم ( مزاج المدير ) 😅 الشغل كان عليها متعب وممتع في نفس الوقت لحد ما وصلت لنيجة مرضية ولله الحمد 🙂 وبالنسبة للتحديثات في نسخة الجداول واردة جدا .. ومريت بنفسي بضروف مشابهة لكن لحد الآن ما حصل نقل كبير للبيانات .. لكن هناك أفكار لإرسال أوامر التعديلات لقاعدة الجداول برمجيا عن طريق ملف أكسس آخر .. يقوم بعملية إضافة الجداول ودمج البيانات وغيرها ... وهذا كله متاح في ال VBA فقط تحتاج لصبر ومحاولة 😊
  3. هذه لها حل والحمد لله وقد طورت لها نظام يستطيع التعرف على القاعدة الخلفية والإرتباط بها أوتوماتيكيا 🙂 وقد تحاورت حينها مع كبير المهندسين @jjafferr في هذا الموضوع .. وأتمنى أن يسعفني الوقت لإفراد شرح مستقل بها إن شاء الله ..
  4. ليش متشائم ؟ 😅🖐🏼️ يوجد طرق عديييييييييدة وليست طريقة واحدة .. 😏 مثلا هذي طريقتي في عمل تحديثات وتوزيعها على جميع الأجهزة الرتبطة أوتوماتيكيا .. ولكنها طريقة قديمة وعملت لها تحديثات .. وأنوي تنزيل موضوع جديد إن شاء الله بآخر التحديثات 🙂
  5. ما تغير شيء .. فقط حركة بسيطة للعناصر .. ولم يتم التوسيط هاك ملف بصيغة 2003 ‏‏‏‏‏‏AA - 3-4 (2003).mdb
  6. وعليكم السلام ورحمة الله وبركاته أخي العزيز ..🙂 ستجد في المنتدى العديد من المواضيع التي تتكلم عن الإرسال بالجيميل وهي ناجحة بحمدالله .. أنظر هنا مثلا وهنا مثلا :
  7. اللهم آمين وإياكم أخي رشيد 🤲🏼🌹
  8. وعليكم السلام ورحمة الله وبركاته 🙂 نعم يوجد .. ضع الأوامر التي تريدها في public sub وناديها من حيث شئت في البرنامج ..
  9. ومسائك سعيد أخي @TQTHAMI 🙂 أضفت لك الحقل IsAdmin في الجدول وهذه الأسطر في الكود : Dim IsAdmin As Boolean .... .... IsAdmin = DLookup("IsAdmin", "users", "[id] =" & Forms![FrmSign]!a) .... .... .... .... If IsAdmin = True Then DoCmd.OpenForm "frm2" Else DoCmd.OpenForm "frm1" End If .... .... مثال (2).accdb
  10. قام أخي @kanory بالواجب جزاه الله خيرا 🙂 ولكن لدي ملاحظتين : 1- أعتقد أنه من الخطأ الاعتماد على اسم المستخدم لمعرفة إن كان هو المشرف أو مستخدم عادي .. فلو تم تغيير الاسم في الجدول لن يعمل معك الكود .. وأقترح أن تضيف حقل جديد من نوع (نعم/لا) يكون اسمه IsAdmin مثلا .. وعليه تبني الكود . 2- ما أجمل الكود عندما يكون مرتب بطريقة سهلة القراءة .. أولا سترتاح أنت في كتابته وتعديله والرجوع إليه .. وثانيا ستريح من يأتي بعدك لتعديله وفهمه لاحقا 🙂 .. لاحظ الفرق الآن بعد أن كان مكدسا كله على جهة اليسار 🙂 : 3- والثالثة مجانية من عندي 😎 غير اسم حقل الاسم إلى UserName مثلا .. لأن كلمة Name وحدها محجوزة للأكسس..
  11. وعليكم السلام ورحمة الله وبركاته 🙂 تفضل : شعار.accdb
  12. السلام عليك أخي النجاشي 🙂 جرب المرفق أخي العزيز .. قمت بعمل الكثير من التنسيقات للخلايا بحيث تم ربطها مع بعض لكي تتحرك جميعها ككتلة واحدة .. ثم أضفت مربعات على يسارها جميعا ، تكبر وتصغر تلقائيا حسب عدد الحقول .. وهذه هي الجزئية التي أضفتها في الكود ( الدالة GenerateDate ) لكي تتحكم بأحجام المربعات (w1 - w2 - w3) Dim w ' لحساب عدد الخلايا المخفية For x = 1 To 50 If Me("D" & x).Caption = "" Then w = w + 1 Me("s" & x).Width = 0 Me("DDDD" & x).Width = 0 Me("D" & x).Width = 0 Me("day" & x).Width = 0 Me("SUM" & x).Width = 0 End If Next w = 50 - w Me.w1.Width = (700 * w) Me.w2.Width = (700 * w) Me.w3.Width = (700 * w) وطبيعي جدا أن يكون هناك اختلافات في النتائج من جهاز لآخر وهذا يعتمد حسب حجم الشاشة .. لذلك إذا وجدت إزاحة كبيرة للخلايا عندك فقم باللعب في الرقم ( 700 ) الذي في الكود تكبيرا أو تصغيرا حسب الحاجة ‏‏‏‏‏‏AA - 3-4 .accdb
  13. ما قصدته لك هو شرح الكود وتطبيقه .. 😅 فالفكرة واضحة كوضوح النهار 🙂
  14. السلام عليكم 🙂 طبعا استعنت بالذكاء الصناعي لكتابة هذا الكود لك أخي ناصر 🙂 ولكي يتم تنفيذه بشكل جيد يجب أن تتحقق عدة شروط : - أن تكون هناك صياغة معينة لأرقام الهواتف في ملفات الوورد مثل : ###-####(###) مثلا .. وذلك لتخبر الكود عن ماذا يبحث بالضبط . - أن تحدد المكان الذي ستحفظ فيه الأرقام بعد استجلابها .. وكيف ستنسب كل رقم إلى صاحبه ؟ أنا أخبرته هنا أن يفتح مجموعة ملفات الوورد الموضوعة في مسار معين الواحد تلو الآخر ويبحث فيها عن أرقام الهواتف ثم ينسخها ويلصقها في جدول "Telephone_Tbl" وتحديدا في الحقل "TelephoneNumber" .. بدون تخصيصه لاسم معين .. وهذا هو الكود نقلته بدون تعديل .. وذلك للتجربته فعليا عندك وإخبارنا بالنتائج .. أو أعطنا عينة من الملفات التي عندك وقاعدة بياناتك لنجرب عليها 🙂 Sub ImportTelephoneNumbers() ' Define variables Dim objWord As New Word.Application Dim objDoc As Word.Document Dim objRange As Word.Range Dim objFolder As String Dim objFile As String Dim objTelephoneNumber As String Dim db As DAO.Database Dim rs As DAO.Recordset ' Set the folder path where the Word documents are stored objFolder = "C:\Path\To\Word\Documents" ' Open the Access database and recordset Set db = CurrentDb() Set rs = db.OpenRecordset("Telephone_Tbl") ' Loop through all files in the folder objFile = Dir(objFolder & "\*.docx") Do While objFile <> "" ' Open the Word document Set objDoc = objWord.Documents.Open(objFolder & "\" & objFile) ' Loop through the document and find all telephone numbers For Each objRange In objDoc.StoryRanges objRange.Find.Execute FindText:="(###) ###-####", MatchWildcards:=True Do While objRange.Find.Found objTelephoneNumber = objRange.Text objTelephoneNumber = Replace(objTelephoneNumber, "(", "") objTelephoneNumber = Replace(objTelephoneNumber, ")", "") objTelephoneNumber = Replace(objTelephoneNumber, " ", "") objTelephoneNumber = Replace(objTelephoneNumber, "-", "") rs.AddNew rs("TelephoneNumber").Value = objTelephoneNumber rs.Update objRange.Find.Execute Loop Next objRange ' Close the Word document objDoc.Close False ' Get the next file in the folder objFile = Dir() Loop ' Clean up and close objects rs.Close Set rs = Nothing Set db = Nothing objWord.Quit Set objWord = Nothing End Sub
  15. أحسنت أبو أحمد .. شكرا لك 🌹🙂 حبذا شرح بسيط لكيفية التطبيق 👍🏼🙂
  16. أخي @مهند محسن أطلع على مرفقي .. فيه يتم تحديث البيانات في الجدول كما ذكرت 🙂
  17. وعليكم السلام 🙂 سبقتني إليها أخي أحمد 😄 وهذه مشاركتي .. 🙂 Database1 (3).rar
  18. عمي قاسم .. أحياناً نستغرب من وجود بعض الأوامر المتاحة في ال VBA حتى تدور الحاجة إليها 🙂 مثلي تماما .. كنت مستغرب من الحاجة لأمر فتح النموذج في وضع التصميم ؟!! حتى علمت أن هناك أكواد تسهل عملية إضافة عناصر للنموذج وتسميتها فتسهل لك أيما تسهيل .. أما بالنسبة لعمل المفاتيح الأساسية لجدول معين حسب ما أتصور يفيد عندما تريد عمل تعديلات على جداول ملف قاعدة البيانات الخلفية BE عن بعد للعميل مثلاً دون الحاجة لنقله عندك .. فبأوامر الNBA سيتم التغيير بسهولة 🙂
  19. جرب وأخبرنا إن نجحت عندك ؟ 🙂 وأنصحك أيضا بفحص الملف ببرنامج المهندس جعفر 👍🏼
  20. أخي صابر .. ربما يكون ملف ال be معطوب لديك وتحتاج لإصلاحه أو استبداله تماماً .. هل جربت فتحه لديك في جهازك قبل توزيع البرنامج ؟ هذا أحد روابط محاولة إصلاح الأخطاء لمهندس القدير جعفر :
×
×
  • اضف...

Important Information