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

كشكول VBA ... متجدد


أبو آدم

الردود الموصى بها

إخوتي الأعزاء

هناك أفكار وكودات تمر علينا ونستخدمها ، قد تكون مهمة وقد تكون صغيرة الشأن (نظن أحيانا) ، ولكنها تلزمنا في لحظة ما ، بسيطة ، معقدة، تلزم،لا تلزم

وعلى جميع الأحوال .... ، يلزمها دفتر ملاحظات صغير في جيب القميص أو أجندة نستلها من المكتب لندون بها ، وهذا وذاك يجمعهما فكرة الكشكول.

وهذا كشكول ...

ندون به ما يمر بالخاطر ... فكرة راودتي من رد لأخي ورفيق دربي أبا خليل

ونبدأ بعون الله ورعايته ... وباسمه نصول ونجول

ودمتم

.....................

أرجو من اخوتي المساهمة بالتعبير عن إستفادتهم من الموضوع ومشاركاته وأجزائه المتلاحقة بإذن الله .

وذلك بالضغط على زر التقدير في أسفل يسار المشاركة التي يكون قد استفاد منها أو أعجبته أو إستخدم ما تحوى

attachicon.gifThanks.jpg

وشكرا للجميع تقديركم وتشجيعكم لي للمتابعة ....

 

PIC-514-1349659307.gif

uooo10.gif

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

  • 4 months later...
  • 1 year later...
  • 10 months later...
  • 3 weeks later...
في ١٩‏/٩‏/٢٠١١ at 08:10, أبو آدم said:

خطأ # ، Error#

نتيجة مزعجة نحصل عليها في النماذج والتقارير
السبب:
في الحقول التي نقوم بها بأي عملية إحتساب ( sum , count) حين لا يكون هناك سجلات ومعلومات لاحتسابها تظهر هذه النتيجة المزعجة..

الحل في النماذج 2003:
بدلا من استخدام


=Sum([Amount])

نستخدم


=IIf([Form].[Recordset].[RecordCount] > 0, Sum([Amount]), 0)

الحل في التقارير 2007:


=IIf([Report].[HasData], Sum([Amount]), 0))

أما في 2007 فالامر مختلف ، فهو لا يقبل هذا الكود ، ويلزم إنشاء وحدة نمطية ندرج فيها :
 


Public Function FormHasData(frm As Form) As Boolean
    'Purpose:   Return True if the form has any records (other than new one).
    '		   Return False for unbound forms, and forms with no records.
    'Note:	  Avoids the bug in Access 2007 where text boxes cannot use:
    '			   [Forms].[Form1].[Recordset].[RecordCount]
    On Error Resume Next    'To handle unbound forms.
    FormHasData = (frm.Recordset.RecordCount <> 0&)
End Function

وفي مصدر السجلات لمربع النص في النموذج نضع الكود:
 


=IIf(FormHasData([Form]), Sum([Amount]), 0)

وبذلك تنتهي المشكلة ونتخلص من نتائج الخطأ المزعجة ، """ وإذا عرف السبب سهل الحل وبطل العجب """
...........

ممكن شرح على اوفيس 2013

 

رابط هذا التعليق
شارك

  • 2 weeks later...

للتراجع عن عملية الحفظ للسجل الحالي في النموذج

و عند حدث ( قبل التحديث ) ... نضع الكود التالي :

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.Dirty = True Then
If MsgBox("Do you wish to save the changes?", vbQuestion +
vbYesNo, "Save Record?") = vbNo Then
Cancel = True
Me.Undo
End If
End If
End Sub

 

  • Like 1
رابط هذا التعليق
شارك

مع فائق تقديري لهذا الجهد المبارك أتمنى من الأستاذ آدم أن يضع عناوين لهذه الكشاكيل في المشاركة الأولى ويربطها بمواضعها  حتى تساعدنا في الوصول إلى المعلومة دون الحاجة إلى قراءة كافة المشاركات

  • Like 2
رابط هذا التعليق
شارك

حياك الله ابا ابراهيم

أحب انا منك ان تتابع وتمر على المشاركات ، فمرورك و اخوتك الطيبون يسرنا ، علنا ننال مزيد أجر من تكرار مروركم

سرني و ابهجني مرورك

شكرا

رابط هذا التعليق
شارك

حفظ السجل عبر الكود من النموذج

من الافكار الدارجة لتجنب الحفظ التلقائي

يستخدم لحفظ جزء او كل معلومات السجل من النموذج لجدول آخر

خلف زر الأمر CmdSave إستخدم الكود التالي

Private Sub CmdSave_Click()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("Table2")
With rst
     .AddNew
     .Fields("strCode") = TxtCode.Value
     .Fields("strName") = TxtName.Value
     .Fields("strDate") = TxtDate
     .Update
 End With
End Sub

 

رابط هذا التعليق
شارك

  • 2 weeks later...

ممكن حد يترجملي الكود ده

Sub LoopFillRange()
'   Fill a range by looping through cells
    Dim CellsDown As Long, CellsAcross As Long
    Dim CurrRow As Long, CurrCol As Long
    Dim StartTime As Double
    Dim CurrVal As Long

'   Change these values
    CellsDown = 500
    CellsAcross = 200
   
    Cells.Clear
'   Record starting time
    StartTime = Timer

'   Loop through cells and insert values
    CurrVal = 1
    Application.ScreenUpdating = False
    For CurrRow = 1 To CellsDown
        For CurrCol = 1 To CellsAcross
            Range("A1").Offset(CurrRow - 1, CurrCol - 1).Value = CurrVal
            CurrVal = CurrVal + 1
        Next CurrCol
    Next CurrRow

'   Display elapsed time
    Application.ScreenUpdating = True
    MsgBox Format(Timer - StartTime, "00.00") & " seconds"
End Sub

 

رابط هذا التعليق
شارك

  • 4 weeks later...
  • 2 months later...
  • 5 months later...

الموضوع رائع ومفيد جدا

وانشاء الله نستفيد منه

ولى طلب اريد كود استخدمه للفورم لشاشة مبيعات او مشتريات بها بيانات مثل رقم الفاتورة والتاريخ وتفاصيل الفاتورة من الأصناف عاوز بنفس حقول الادخال تبقى هي نفسها المستخدمه في البحث عن رقم فاتورة اى نفس الشاشة ادخال وبحت بنفس الحقول ومربعات النص بدون إضافة اى شىء

ولكم جزيل الشكر

رابط هذا التعليق
شارك

  • 2 years later...

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information