اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

Hawiii

03 عضو مميز
  • Posts

    209
  • تاريخ الانضمام

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

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

  1. نسيت أنبهك لتعريف تنسيق/تحديد نوع الصناديق/المربعات لتجنب مشاكل التحويل وتجنب الحصول على نتائج غير متوقعة. PaymentDate, d1 , d2 تنسيق تاريخ و n1 تنسيق رقم.
  2. حسب ما فهمت : Private Sub Command33_Click() Dim d3 As Date Dim nm As Byte 'NextMonth d3 = Me.PaymentDate nm = IIf(Day(d1) >= Day(d3), 1, 0) If Me.XFrame = 1 Then Me.d2 = DateSerial(Year(d1), Month(d1) + nm, Day(d3)) Else Me.d2 = DateSerial(Year(d1), Month(d1) + 1, Day(d1)) End If Me.n1 = d2 - d1 End Sub
  3. مثال أجنبي قديم نشره أحد عمالقة الأكسس "أبو هاجر" في منتدى الأكسس بموقع الفريق العربي للبرمجة. ملف مدير النظام LogUsersOff_be.accdb يقوم فيه بتبديل قيمة حقل Logoff في الجدول Settings كل قواعد البيانات على الشبكة مربوطة بهذا الجدول للإختبار: - افتح نسخة مدير النظام وبدل قيمة الحقل إلى No ودعها مفتوحة. - ثم افتح نسخة المستخدم LogUsersOff.accdb ودعها مفتوحة. - ارجع لنسخة مدير النظام وبدل قيمة الحقل إلى Yes - ارجع لنسخة المستخدم وانتظر ، ستتلقى رسالة تنبيه ثم بعد مضي فترة المهلة ستقفل النسخة. - حاول تفتح نستخة المستخدم بعد أن آغلقت تلقائيا ، ستتلقى رسالة أن البرنامج تحت الصيانة. - لن يتمكن المستخدمون من فتح البرنامج حتى يبدل مدير النظام قيمة الحقل إلى No. جربوه. LogUsersOff.rar
  4. أخي لا أعرف ما السبب ، أعتقد لو تطرح سؤالك في منتدى الوورد أفضل ، أنا لم أستخدم أكواد الـ VBA للوورد ولا أعرف طريقة الإختيار والإنتقال. - إذا كل النتائج تخرج على الخيار الأول فهناك خلل في مصدر الشهادة ، فدائما قيمتها "دبلوم عالي"!! - جرب تبدل الهاء آخر كلمة "دكتوراه" بتاء مربوطة. - ضع قبل كود case سطر فحص قيمة الشهادة للتأكد من القيمة مثل: MsgBox x.selection.insertafter.الشهادة Select Case x.selection.insertafter.الشهادة Case "دبلوم عالي" '... Case "ماجستير" '... Case "دكتوراة" '... End Select
  5. ملاحظات: - هذه تسمى تعبير إف وليست دالة - قد يكون عتدك خطأ املائي فـ دكتوراة بالتاء المربوطة وليس بالهاء. - استخدم Select case أسهل وأوضح في الاستخدام مثل: Select Case x.selection.insertafter.الشهادة Case "دبلوم عالي" '... Case "ماجستير" '... Case "دكتوراة" '... End Select
  6. استخدم دالة Replace مرتين ، مرة لإزالة "." والأخرى لتبيدل "," بـ "." Num = Replace(Num, ".", "") Num = Replace(Num, ",", ".") وتستطيع جمعهما في سطر واحد: Num = Replace(Replace(Num, ".", ""), ",", ".")
  7. حسب طلبك بسطر واحد يمكنك الحصول على المطلوب: (ToDate - Birthdate + 1) / 365.2425 ويمكن استخدامه داخل دالة للعمر كالتالي: Function CalAge(Birthdate As Variant, Optional ByVal ToDate As Date = -657434) As Double CalAge = -1 If IsNull(Birthdate) Then Exit Function Birthdate = CDate(Birthdate) If ToDate = -657434 Then ToDate = Date If ToDate < Birthdate Then Exit Function CalAge = (ToDate - Birthdate + 1) / 365.2425 End Function ويمكنك مناداة الدالة بإدخال تاريخ الميلاد فقط أو بالميلاد وتاريخ النهاية معا. ملاحظة : كل دوال العمر التي تعطيك النتائج بالسنة والشهر واليوم الموجودة بأوفيسنا أو بالمنتديات الأجنبية وحتى مثال مايكروسوف أكسس لا تعطي نتائج 100% فلا تتعب نفسك في البحث والمقارنات وبنظري المتوفر مع أخطاءها البسيطة تفي بالغرض.
  8. أستطيع أن أستمر وأفند كلامك ولكن لا جدوى منه ، وإن كان الحق معي فلن ينصفني أحد من الأعضاء وأن أنصفني أحدهم فلن يستطيع البوح بما في قلبه وسيكون الاصطفاف مع معالي المقام. جعفر و عمان ، اسمان يمنعاني من اغضابك وترى الضرب تحت الحزام فيها مخالفة رياضيا.
  9. أخي جعفر ، دعك من أعصابي .. يعني واضح من كتابتي أني معصب وآكل في بعضي!! الآعضاء اللي يشاهدون من حقهم يعروفن أجوبة على أسئلتي التي وجهتها لك .. فهل هي ملاحظتي سليمة أم خاطئة. وعلى فكرة ربما أنا أكبر منك عمرا وما أدراك؟ وربما لي خبرة سابقة في إدراة منتديات سابقة وأستطيع أقهم في سلوكيات ونفسيات الأعضاء والمشرفين بشكل احترافي أيضا. وما كل ما يعرف يقال. وردا على سؤالك الأخير ، لا أدري إذا هذه المشكلات موجودة في ملف الوورد أو هي استجدت مع عملية اللصق في الأكسس. ومع طول هذا الموضوع أنا أنوقع لو هناك سجلات أكثر فستظهر مشكلات أكثر ، فدائما المفاجآت (المشكلات غير المتوقعة) سوف تترك طلب التعديل على المعالجة مفتوحا بشكل دائم.
  10. لا حول ولا قوة إلا بالله. أخي جعفر .. أنا قلت أنك أضفت سطرين (للتجارب) وليس الكود الذي أضاف ، هل ملاحظتي هذه صحيحة؟ وإذا كانت غير صحيحة فهل آخر كلمتين (مكان مكان) كانت في أصل النص؟ وإذا كانت للتجارب فهل (مكان الأولى والفراغ بينها وبين نقطة نهاية السطر سليمة؟ وأنا لما كتبت كلامي لست باحثا عن أخطائك لتقليل جهدك وعملك ولأرجح عملي على عملك بل كان ردا على صاحب الموضوع وعدم موضوعيته في الردود. الأخ @nssj جيدة طريقتك في (التجمل) ومحاولتك أن تكون مثاليا في ردودك ولكن للأسف لم تنجح في ذلك ، لاحظ أن ردي الأخير به حل لمشكلة كنت تعاني منها وقد قدمته لك بطريقتين ولم تمر على هذا الحل في ردك بل كان تركيزك في إبراز الأخطاء كما تراها بعينك. ومن الإنصاف والمثالية أن تذكر المحاسن كما تذكر المساوئ. ملاحظات: - وأنا أعمل على الكود تركيزي على السجل الأول على اعتبار أن كل السجلات بنفس النسق والتنسيق وكنت أمرر باقي السجلات بشكل سريع. - تبديلي للقوسين بقوس واحد اجتهادا مني أن هذا هو الصحيح وليس مشكلة في الكود. - أنك تقارن بنص الأكسس بعد معالجته مرة أخرى مع الوورد ، هذه واحدة من مشاكلك والتي لن تنتهي. - بالنسبة لأول سطرين كنت في معالجتي السابقة أظهرهما في نفس سطر النص ولكن لما رأيت حلول الأخ جعفر وعدم تعليقك عليها فاعتقدت أنك تريد أن تظهر الأرقام التي داخل الأقواس كل منها في سطر منفصل كما معالجتي الأخيرة. ترجع تقول لي لما ألصقها في الوورد تعطي نتائج مختلفة ، وما دخلنا بالوورد!! ، ربما لو تنسخها في الإكسل ستختلف أو في ملف نصي سوف تختلف أيضا حسب طبيعة البرنامج ومواصفاته. 🙂
  11. لم تحل عزيزي ولو تركز قليلا سوف ترى أن الأستاذ جعفر أضاف سطرين في آخر السجل الأول ولم ينجح الكود في التعامل معهما. عند الرغبة في تعطيل رسائل التأكيد للاستعلامات اعمل التالي: - افتح Access Options - اختر Advanced - اختر Confirm - أزل إشارة الصح من Action queries أو يمكنك تركه وتعطل الرسائل في أول الكود بعبارة DoCmd.SetWarnings False كالتالي: Sub CleanTable(Table As String, Field As String) Dim i As Byte DoCmd.SetWarnings False '---------------------- DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],'" & vbNewLine & "','');" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],'{{','{');" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],'}}','}');" '---------------------- DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Trim([" & Field & "]);" For i = 1 To 3 DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],' ',' ');" Next i '---------------------- DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],'} {','}" & Chr(13) & "{');" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],'} ','}" & Chr(13) & "');" '---------------------- DoCmd.SetWarnings True End Sub أسطر4.rar
  12. لم تحل المشكلة 100%. وهذه كذلك آخر مشاركة لي في هذا الموضوع. طلبتك ترفق صورة ولم تفعل ، فيبدو لي أنك تريد الحل من شخص محدد. موفق أخي.
  13. @nssj أرح نفسك ولا تحول الكود إلى استعلام!!. ولماذا متمسك بالاستعلام؟!! أما رسائل التأكيد فيمكنك أن تبحث في المنتدى عن كيفية إيقاف الرسائل . وأي مسافات التي لم تحذف؟! زودنا بصورة لو سمحت. ركز على حل مسألتك واترك الكيفية عىل من يقدم لك الحل.
  14. Sub CleanTable(Table As String, Field As String) DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],'" & vbNewLine & "','');" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],' ',' ');" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Trim([" & Field & "]);" End Sub 'لاستدعاء كود تنظيف الجدول Private Sub CmdCleanTable_Click() Call CleanTable("مسند", "nass") End Sub إن شاء الله يكون حلا نهائيا.
  15. حياك الله يا أخونا الكريم ، لو بحثت في المنتدى سوف ترى هذا الحل موجود (الحل/الفكرة وليس المثال). حياك أخي جعفر سوف أضيف سطرا إضافيا وأرفعه بعد قليل.
  16. هناك 3 حروف/رموز (المسافة) وقيمة الآسكي لها 32 وإزالتها بدالة Trim و (سطر جديد) والآسكي له 13 + 10 ويمكن إزالته بدالة Replace إما رمز رمز (على دفعتين) كما مثالي أو إثنينهما مجتمعين على دفعة واحدة. وفي مثالي السابق استخدمت عبارة SQL لعمل استعلام تحديث لإزالة هذه الرموز ويمكن تجربته. أما أنا فاعذروني لن أقوم بعمل أمثلة وسوف تقتصر مداخلاتي على إشارات أو كتابة أكواد ومن يريد التعاون يستطيع توظيفها في مثال وتقديمها للسائل.
  17. محاولة كباقي المحاولات ليس به ما يضيف للتفقيط للعرب توجد حلول للتفقيط في هذا المنتدى أفضل منه بكثير منها على سبيل المثال: - أوسع نطاقا. - أكثر احترافية في كتابة الكود. - يراعي قواعد اللغة العربية. - يتعامل مع كل العملات. وشكرا لكم على إثراء المنتدى بالأمثلة المتعددة.
  18. دالة Trim() تؤدي وظيفة دالتي: LTrim() و RTrim() مجتمعتين.
  19. لم أجرب أكواد الأساتذة ، ولكن من خلال المشاهدة كود الأخ جعفر يبدو لي صحيحا. عموما جرب هذا الكود: Sub CleanTable(Table As String, Field As String) DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Trim([" & Field & "]);" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],'" & Chr(10) & "','');" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],'" & Chr(13) & "','');" End Sub 'لاستدعاء كود تنظيف الجدول Private Sub CmdCleanTable_Click() Call CleanTable("سند", "nass") End Sub
  20. إذن بما أن الفائدة تمت والحمد لله فليغلق هذا الموضوع ، وإذا أتي حل عبقري فليطلب إعادة فتحه وإضافة الحل. تحياتي للجميع.
  21. في الاقتباس حل التجميع والتخزين وأقترح في الكتابة للأسماء المركبة استخدام الشرطة السفلى إن صح التعبير "_" كـ : محمد_علي ، بو_سعد .. وهكذا وسيمنع كتابة المسافة وتحويلها مباشرة إلى (أندر سكور) وعند التفكيك تحول إلى مسافة. هكذا يخزن الاسم في الجدول : أبو_الوليد|محمد_علي|صالح|الشاكر وفي العرض بعد المعالجة سيكون : أبو الوليد محمد علي صالح الشاكر وإذا لا تهمكم مساحة التخزين فاحفظوها منفصلة كما الإدخال وارتاحوا من مشاكل التجميع والتفكيك.
  22. زيادة الخير خيرين مع الاعتذار من الأساتذة الذين سبقوني ، فكما يقال : كل الطرق تؤدي إلى روما Sub MissingDatesAdd() Dim dbs As Database Dim rst As Recordset Dim LastDate As Long Dim Rows As Long Dim NewRow As Long Dim Count As Long Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Table1", dbOpenDynaset) rst.Sort = "DAT" Set rst = rst.OpenRecordset With rst .MoveFirst LastDate = !DAT .MoveNext Do While Not .EOF LastDate = LastDate + 1 Rows = CLng(!DAT) If Rows > LastDate Then Rows = Rows - LastDate Count = Count + Rows For NewRow = 1 To Rows .AddNew !DAT = LastDate + NewRow - 1 !Test = "Was missing" .Update Next NewRow LastDate = !DAT End If .MoveNext Loop End With rst.Close Set dbs = Nothing MsgBox "تم إضافة " & Count & " سجلا" End Sub
  23. أنزلت المثال الأخير في مشاركة الحلواني ورأيت فكرة الجدول وطريقة الربط جميلة مع ملاحظة أن التعامل مع الجداول ستسبب بطء في المعالجة ومع ذلك هي الأضمن وخوصوصا عند الحاجة لإضافة سجلات أخرى. مثلا ستحتاجون إلى إضافة "آل ال" لأسماء مثل آل الطيب وأكيد ستظهر الكثير من الأسماء وعليه للبرامج غير المفتوحة يجب إتاحة الفرصة للمستخدم للإضافة.
×
×
  • اضف...

Important Information