AbuuAhmed
الخبراء-
Posts
979 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
16
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو AbuuAhmed
-
هذه محاولة جرب وخبرنا إلا إذا أردت النتيجة شهور فقط وبكسر عشري غيرنا لك طريقة الحل. التاريخ_02.accdb
-
حياك الله أخينا سيد رجب، واستغفر الله العظيم، يكفينا أن نعرف منك أن محاولتنا في الحل حازت على رضاك، ونصيحة من أخيك الصغير لا تمجد في أحد، هذه أمور بسيطة وسترى العشرات من الزملاء ممن يقدم لك مثل هذه الحلول وأكثر. وربنا يسعدك ويوفقك.
-
إليكم حلاً لمشكلة تعليق قاعدة البيانات في الذاكرة
AbuuAhmed replied to ابوخليل's topic in قسم الأكسيس Access
وهذا كود لإنهاء مهمة أكسس، من جلبي وتصرفي: Sub Kill_msAccess() Dim oServ As Object Dim cProc As Variant Dim oProc As Object Set oServ = GetObject("winmgmts:") Set cProc = oServ.ExecQuery("Select * from Win32_Process") For Each oProc In cProc 'Rename MSACCESS.EXE in the line below with the process that you need to Terminate. 'NOTE: It is 'case sensitive If oProc.Name = "MSACCESS.EXE" Then MsgBox "KILL" 'used to display a message for testing pur oProc.Terminate 'kill exe End If Next End Sub -
الترتيب لن يخادع دالة DLast 🙂
-
إذا أردت الشهور للسنة الناقصة (غير المكتملة) فاستخدم المعادلة كالتالي: Me.tmonth = DateDiff("m", Me.Date1, Me.date2) Mod 12
-
إليك المثال حساب مدة اخر ترقية_02.xlsx
-
هل يمكنكم رفع نسخة بإصدار 2007 أو أقل؟
-
استخراج البيانات من QR هيئة الضريبة والزكاة
AbuuAhmed replied to Lamyaa's topic in قسم الأكسيس Access
راجعت الكود ولاحظت أن اسم المحل قد يتسبب في فشل عملية البحث لو احتوى على الداش "-" فأقترح تبديل سطر واحد في الكود كالتالي: 'pos = InStr(1, QR, "-") pos = InStrRev(QR, "-", -1) - 3 -
أقترح باستخدام DMax بدلا من DLast تفاديا لأخطاء ادخالات الموظفين، فـ DLast تأخذ القيم حسب ترتيب اضافتها للجداول. والمعذرة لكم.
-
هذا إجراء للزر في حدث عند النقر Private Sub cmdDelet_Click() Dim Records As Long Dim Msg As String Dim ctl As Control Dim TableName As String On Error Resume Next TableName = "tblTable1" Set ctl = Me.n If Trim(Nz(ctl, "")) = "" Then MsgBox "الحقل فارغ .. يجب أن يحتوي على قيمة ما", , "عفوًا" ctl.SetFocus GoTo ExitSub End If Records = DCount("*", TableName, "n=" & ctl) If Records = 0 Then MsgBox "لا يوجد سجلات بنفس القيمة لحذفها", , "عفوًا" GoTo ExitSub End If Msg = "سوف يتم حذف " & Records & " سجلات نهائيا الآن" If vbOK = MsgBox(Msg, vbOKCancel + vbDefaultButton2, "تأكيد") Then Err.Clear DoCmd.RunSQL "Delete * from [" & TableName & "] where n=" & ctl & ";" If Err.Number = 0 Then MsgBox "تم الحذف" Else MsgBox Err.Description, , Err.Number End If End If ExitSub: Set ctl = Nothing End Sub Database32_02.accdb
-
استخراج البيانات من QR هيئة الضريبة والزكاة
AbuuAhmed replied to Lamyaa's topic in قسم الأكسيس Access
جربي المرفق الجدول يحتاج إلى تحجيم حقلي الكيوآر واسم المحل أما بقية الحقول أنا قمت بتعديلها. ZatkaQR.a_02.accdb -
لا تضيف أي أمر جديد ، فقط قم بزيادة الحرفين لكل أوامر مناداة Sendkeys - تخلص من الأوامر التي لها علاقة بلوحة المفاتيح بالحذف تماما الموجودة في البرنامج SendKeys "{NUMLOCK}" ثم قم بتعديل الأوامر الأخرى بإضافة الحرفين إليها والتي كانت هكذا: SendKeys "{}" إلى هذا الشكل بعد التعديل: mySendKeys "{}" والسبب لأن هذه الأوامر هي سبب المشكلة ونحتاج إلى استئصالها من الأساس ولا داعي أبدا أبدا لاستعمال أمر لوحة المفاتيح.
-
من تساهل الفجوال قبول تمرير هذه القيم بين الأنواع بدون دوال التحويل مع أنها مع أكثر اللغات أخطاء ومرفوضة حتى قبل التشغيل. Sub TypesTest() Dim L As Long Dim B As Byte Dim S As String L = 255 B = L S = B B = S End Sub
-
وهذا من تساهل الفيجوال 🙂 فبعض اللغات تجبرك على أن يكون النوع تماما كما المطلوب، في الفجوال لو وضعت قيمة Long في Byte ستقبل ما دامت القيمة لا تزال في حدود نطاق البايت من 0..255 ولكن بمجرد خروج القيمة عن النطاق سوق تصطدم برسالة خطأ. أمور كثيرة تعمل "بالبركة" ولكن لا يؤمن نتائجها ومع كثرة الاستخدام والتجارب تأتي المفاجآت ويضطر المبرمج إلى التصحيح. لا بد من الاحتراز بدراسة النطاق لكل متغير/نوع على مستوى الفيجوال أو الجداول، الآن عرفنا منكم مشكورين أن هناك نوع أكبر من Long وهو Large Number وأعتقد هو مساو للـ LongLong في النطاق، لم أدقق.
-
اعمل مديول وما عليك إلا إضافة حرفي "my" في بداية استدعاء Sendkeys لتصبح mySendkeys
-
ماهو أكبر نوع حقل في جداول النسخ 64 بت؟ يفترض أن يكون هناك نوع LongLong أحتاج إلى جواب هذا السؤال. عموما يفترض من يستخدم دوال API أن يبدل النوع من Long إلى LongLong أو يستخدم ما يشبه المحول LongPtr فهو يقوم بالتبديل بين Long و LongLong حسب نواة الأكسس. وشكرا للجميع.
-
أيها أصح لإغلاق مجموعة السجلات Recordset (موضوع للنقاش)
AbuuAhmed replied to AbuuAhmed's topic in قسم الأكسيس Access
أشكركم على المشاركات الكريمة والساهمة في إثراء الموضوع معلومات التي من حفظي 🙂 ولم أراجعها: rst.Close set rst = Nothing set dbs = Nothing هذا أكثر احترازا وما عليها زود أما هذه: set rst = Nothing set dbs = Nothing أما هذه ففيها الكفاية وتقوم بنفس الخيار السابق تماما، حيث تمرير "Nothing" لمجموعة السجلات تقوم بالإغلاق والإفراع بمعنى 2 في واحد. أما هذه: rst.Close set dbs = Nothing فهي محل شك بالنسبة لي وكنت أمارسها سنين طويلة وكان بخلدي أن لغة الفجوال تتكفل بعملية الإفراع بمجرد الخروج من الإجراء أو الدالة لكل محتواه وإلى الآن لم أتأكد ولكن هو سلوك للغة نفسها بعض اللغات تترك عملية التحكم بالذاكرة للمبرمج كاملة وعليه أن يتعامل معها بكل حذر حتى عند الإعلان عن متغير سوف تراه يحمل قيمة عشوائية ولا بد قبل التعامل معه من "تصفيره" وإلا سترى نتائج غير متوقعة بعكس الفجوال فكل المتغيرات تراها ابتداء "نظيفة" لا تحتاج إلى "تصفير". وقياسا على أن "الحاوية" تشمل المحتويات في عملية الإغلاق والتفريغ فكنت أعتقد أن تمرير "Nothing" إلى قاعدة البيانات سوف يقوم بتفريغ مجموعة السجلات أيضا ولكن بعد التجربة الشخصية تبين خطأي ويمكنكم أن تجربوا فأنا قمت بإفراغ القاعدة وظلت المجموعة نشطة. عليه أرى أن خيار الإغلاق Close خياريا لاحترازية أكبر ويكفي عملية التفريغ ولكن عند إعادة استعمال المجموعة لابد من اغلاقها أولا وقبل فتحها من جديد لمجموعة سجلات جديدة. والخلاصة فأنا سأعتمد هذه: set rst = Nothing set dbs = Nothing وتحياتي لكم. -
جرب مثال الأستاذ أكسسنا بعد التصرف بإضافة حدث عند التغيير حسب طلبك كبير وتصغيرمربع النص_02.mdb
-
ممكن التعديل على كود المثال باستخدام حدث عند التغيير ينادى زر التحجيم. حاول تعملها وإن شاء تنجح معك وإلا سأقوم أنا بالتعديل الليلة في وقت متأخر إن شاء الله
-
لا يا عزيزي ، هو يعطيك العرض والإرتفاع بعد التحجيم وهي نتيجة إضافية على النتيجة المطلوبة وهو التحجيم، جرب مرة ثانية. بدل حجم الخط وباقي الخصائص مثل ثم اضغط تحجيم مرة أخرى وهكذا، إذا ضغطت 1000 مرة على زر تحجيم وهو على نفس الخصائص فلن تغييرا.
-
استخدم هذا الإجراء بدلا من الأصل (من جلب الأستاذ جعفر) ولن تشاهد هذه المشكلة مرة أخرى. Sub mySendKeys(String_ As String, Optional Wait As Boolean = False) Dim WshShell As Object Set WshShell = CreateObject("WScript.Shell") WshShell.SendKeys String_, Wait Set WshShell = Nothing End Sub
-
في بالي حاليا فكرتين: أولهما عمل جدول من حقل واحد نوع بايت ونضع فيه مسلسل من 0 إلى 255 وهذا الجدول يبقى مصاحبا لقاعدة البيانات ويصلح أن يكون متعدد الاستخدامات، فمثلا أنا أستخدم هذه الفكرة في برامج المخازن لعمل فاتورة ثابتة الطول بغض النظر عن عدد سجلاتها. ويمكن مضاعفة العدد باستخدام استعلام التوحيد وأعتقد سيكون كافيا مع ملاحظة أن استعلام التوحيد كذلك محدود في عدد الجداول أو الاستعلامات المطلوب توحيدها. والفكرة الأخرى الاستعانة بالإكسل. أحتاج جوابك حتى أبدأ الليلة ببلورة الفكرة وتطبيقها إن شاء الله.
-
أيها أصح لإغلاق مجموعة السجلات Recordset (موضوع للنقاش)
AbuuAhmed replied to AbuuAhmed's topic in قسم الأكسيس Access
سأعود للموضوع بعد مضي 24 ساعة من كتابته لترك فرصة للمتداخلين. -
سأعود الليلة لأقرأه إن شاء الله