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

Ahmed.IQ

الخبراء
  • Posts

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

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

مشاركات المكتوبه بواسطه Ahmed.IQ

  1. السلام عليكم ورحمة الله وبركاته

     
    بدأت بعمل برنامج مبيعات لسوبر ماركت وعند عمل الفاتورة كانت هناك مشكلة تحديث اجمال الفاتورة في رأس الفاتورة يجب ان اذهب الى حقل واضغط عليه ليتم تحديث اجمالي الفاتورة فجاءت فكرة تحديث اجمالي الفاتورة عن طريق الاستعلام لكن واجهتني مشكلة اخرى هيا سرعة المعالجة حيث ان التحديث يتم قبل ان يتم احتساب المجموع في الحقل المسؤول عن الجمع . لذا بحثت عن تايمر ووجدته مشروح لدى اخ بارك الله فيه قمت بستخدام التايمر واصبح تحديث اجمالي الفاتورة في السجل يتم خلال واحد ثانية :) اذا كان هناك طرق اخرى افضل ياريت الافادة للجميع

     

    تحديث اجمالي الفاتورة عن طريق التايمر.accdb

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

    On Error GoTo Err:
    DoCmd.OpenForm "t", acDesign, , , , acHidden
    Dim db As DAO.Database
    Dim frm As Form
    Dim newBt As Control
    Dim i As Long, j As Long
    
    Set frm = Application.Forms(1)
    
    'For i = 0 To 1
    For j = 1 To 1
        Set newBt = CreateControl("T", acCommandButton, Left:=100 + 3000, Top:=500)
        Set newBt = Nothing
    Next j
    'Next i
    DoCmd.Close acForm, "T", acSaveYes
    Err:
    MsgBox Err.Number

     

    • Like 1
  3. تفضل كود لانشاء زر جديد بشرط ان يكون النموذج في وضع التصميم ويمكن ان ينشاء الزر من نموذج اخر 

    On Error GoTo Err:
    Dim db As DAO.Database
    Dim frm As Form
    Dim newBt As Control
    Dim i As Long, j As Long
    
    Set frm = Application.Forms(1)
    
    'For i = 0 To 1
    For j = 1 To 1
        Set newBt = CreateControl("أسم النموذج", acCommandButton, Left:=100 + 3000, Top:=500)
        Set newBt = Nothing
    Next j
    'Next i
    Err:
    MsgBox Err.Number

    الكود كان يعمل الضافة زرين بنفس المستوى الان يضيف زر  واحد

    • Like 1
  4. اخواني الكرام شكراً لتعبكم لكن الفكرة هيا .

    كيف راح نقوم بحفظ المجموع في جدول رأس الفاتورة بعد كل اضافة للاصناف تتم في النموذج الفرعي .

    الطريقة التي تم ذكرها من قبلكم انا اعرفها هيا عمل حقل غير منظم وجعل مصدرة هوا حقل في النموذج الفرعي مسؤول عن جمع المبالغ  

  5. شوفي اخي افضل طريقة تعمل حقل غير منظم في النموذج الرئيسي وتعمل مصدرة حقل الجمع في النموذج الفرعي .

    بعدين تروح تعمل استعلام تحديث لحقل التوتل في الجدول 1 بشرط رقم الفاتورة.

    بعدها في حدث بعد التحديث او عند التغير لحقل الصنف تشغل استعلام التحديث وراح يحدث لك القيمة بعد كل مرة تختار صنف 

    اخي ابو زاهر لم يحدث المجموع في النموذج الرئيسي .

    بارك الله بك انا حليتها بطريقة مطولة اشوي

  6. نفس المشكلة الي عندي ..

    محتاج ان اظهر نتيجة المجموع مبلغ الفاتورة لحقل منظم في رأس الفاتورة بالاعتماد على الحقل في ذيل الفاتورة الي هو نموذج فرعي بحاول فيه من الصبح ما ضبط معي :)

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

    • Like 1
  7. جرب الكود التالي

    me.text1 = السنة

    me.text3 = الشهر واليوم

    Dim fs, cf, strFolder
    strFolder = CurrentProject.Path & "\" & "Image"
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.FolderExists(strFolder) = False Then
    Set cf = fs.CreateFolder(strFolder)
    If fs.FolderExists(strFolder) = True Then
    MsgBox "'" & strFolder & "'لم يتم انشاء المجلد"
    Else
    MsgBox "'" & strFolder & "'تم انشاء المجلد"
    End If
    End If
    strFolder = CurrentProject.Path & "\Image" & "\" & "" & Me.Text1 & ""
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.FolderExists(strFolder) = False Then
    Set cf = fs.CreateFolder(strFolder)
    If fs.FolderExists(strFolder) = True Then
    MsgBox "'" & strFolder & "'تم انشاء المجلد "
    Else
    MsgBox "'" & strFolder & "'لم يتم انشاء المجلد"
    End If
    End If
    strFolder = CurrentProject.Path & "\Image\" & Me.Text1 & "" & "\" & "" & Me.Text3 & ""
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.FolderExists(strFolder) = False Then
    Set cf = fs.CreateFolder(strFolder)
    If fs.FolderExists(strFolder) = True Then
    MsgBox "'" & strFolder & "' تم انشاء المجلد"
    Else
    MsgBox "'" & strFolder & "'لم يتم انشاء المجلد"
    End If
    End If

     

  8. الحقل المخفي راح نستخدمه في تسمية المجلد حسب السنين والكود الي تقصده 

    =Year(Date())

    اذا كان هوا الي تقصده فا راح نعتمد عليه بستخراج السنة حسب وقت الكومبيوتر يعني السنة في الكومبيوتر تقره 2018 راح يكون الحقل بداخله 2018 ولازم تحط الكود هذا في مصدر الحقل

  9. حسب الحدث الي انت محتاجة بخصوص المسار الكود يقرة حسب مكان قاعدة البيانات لو انت تحتاج الى مسار ثابت استغنى عن المسار الافتراضي لقاعدة البيانات وضع المسار الي انت تحدده .

    بخصوص التسمية سهله اجعل الكود عند الفتح النموذج وجعل لك حقل مخفي وعطية اسمه مثل YearName يكون مصدر بياناته =Year(Date()) وبدل حقل test ضع الكود التالي

    "" &  Me.YearName & "" راح ياخذ يحفظ لك الفايل بأسم السنة

  10. فقط تقوم بتكرار الكود حسب رغبتك

    Dim fs, cf, strFolder
    strFolder = CurrentProject.Path & "\" & "Image"
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.FolderExists(strFolder) = False Then
    Set cf = fs.CreateFolder(strFolder)
    If fs.FolderExists(strFolder) = True Then
    MsgBox "'" & strFolder & "' تم انشاء المجلد في المسار التالي "
    Else
    MsgBox "'" & strFolder & "'لم يتم انشاء المجلد"
    End If
    End If
    strFolder = CurrentProject.Path & "\Image" & "\" & "test"
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.FolderExists(strFolder) = False Then
    Set cf = fs.CreateFolder(strFolder)
    If fs.FolderExists(strFolder) = True Then
    MsgBox "'" & strFolder & "' تم انشاء المجلد في المسار التالي "
    Else
    MsgBox "'" & strFolder & "'لم يتم انشاء الملجد"
    End If
    End If

     

    • Like 1
  11. هذا كود اننشاء مجلد واحد

    Dim fs, cf, strFolder
    strFolder = CurrentProject.Path & "\" & "Image"
    Set fs = CreateObject("Scripting.FileSystemObject")
    If fs.FolderExists(strFolder) = False Then
    Set cf = fs.CreateFolder(strFolder)
    If fs.FolderExists(strFolder) = True Then
    MsgBox "'" & strFolder & "' تم انشاء المجلد في المسار"
    Else
    MsgBox "'" & strFolder & "'لم يتم انشاء المجلد في المسار"
    End If
    End If

     

    • Like 1
  12. السلام عليكم ورحمة الله

    المرفق صورة لشكل ليست بوكس او ساب فورم لكن حاولت وبحثت عن طريقة للتصميم بهذا الشكل لم اجد خصوصا الازرار للنتقال من اليمين الى اليسار بحيث يظهر جميع النتائج الموجوده باليست بوكس بدل ان تنزل السكوير او ترفعه تحولها يمين او يسار

     

    ليست بوكس.jpg

  13. شكراً اخ ابو زاهر .

    المشكلة كانت في ان الكود لو تم عمل التحديث من خلال حقول في النموذج غير منضمة سيتوقف عن عمل الدورة الكاملة في السجل , لذا قمت بتعديل بعض الامور ولاستغناء عن الحقول في النموذج وعمل التحديث عن طريق الكود .

    حاليا يقوم بتحديث حقلين بنفس السجل الكمية والسعر حسب متوسط السعر المرجح ويعمل بشكل جديد لو كان هناك اكثر من كود في النموذج

    وهذا شكل الكود النهائي .

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

    
    On Error GoTo enderr
     DoCmd.SetWarnings False
    'النموذج
    Set Rs = Forms![form1]![F_ReceiptDetails].Form.RecordsetClone
    'الجدول للتحري
       Set RsEdit = CurrentDb.OpenRecordset("T_items")
    
    Rs.MoveFirst
    'دوران
    Do While Not Rs.EOF
         RsEdit.MoveFirst
    'دوران للجدول
       Do Until RsEdit.EOF
       'اذا وجد السجل
        If RsEdit!ID = Rs!IDIt Then
        'تحرير
             RsEdit.Edit
             RsEdit!Stok = RsEdit!Stok + Rs!Quantity
             RsEdit!AmountRe = ((RsEdit!Stok - Rs!Quantity) * (RsEdit!AmountRe) + (Rs!Amount * Rs!Quantity)) / RsEdit!Stok
             RsEdit.Update
       End If
       RsEdit.MoveNext
       Loop
    
    
    Rs.MoveNext
    Loop
    Set Rs = Nothing
    Set RsEdit = Nothing
    DoCmd.SetWarnings True
    MsgBox " تم تحديث البينات ", vbInformation, "تم "
    Exit Sub
    enderr:
    MsgBox " لم يتم تحديث البيانات ", vbInformation, "لم يتم التعديل"
    DoCmd.SetWarnings True
    

     

    • Like 1
  14. ابو زاهر شكرا على الرد اخي .

    اخذ نفس الكود لكن الوب لا يعمل يحدث اول سجل ويتوقف لم اعرف ما هيا المشكلة

    النموذج الرئيسي اسمه form1 النموذج الفرعي اسمه F_ReceiptDetails

    الجدول اسمه T_items الجداول التي احتاج الى تعديلها داخل الجدول stok  وا amount

    الحقول التي سيتم اخذ المعلومات الجديده منها لغرض تحديث الحقول في الجدول هيا stoknew  و amountnew  بشرط ان id داخل الجدول يساوي idit داخل النموذج الفرعي

    وهذا الكود بعد التعديل عليه

    On Error GoTo enderr
     DoCmd.SetWarnings False
    'النموذج
    Set Rs = Forms![form1]![F_ReceiptDetails].Form.RecordsetClone
    'الجدول للتحري
       Set RsEdit = CurrentDb.OpenRecordset("T_items")
    
    Rs.MoveFirst
    'دوران
    Do While Not Rs.EOF
         RsEdit.MoveFirst
    'دوران للجدول
       Do Until RsEdit.EOF
       'اذا وجد السجل
        If RsEdit!ID = Me.F_ReceiptDetails!IDIt Then
        'تحريره
             RsEdit.Edit
             RsEdit!Stok = Me.F_ReceiptDetails!Stoknew
             RsEdit.Update
    
    '         RsEdit.Edit
    '         RsEdit!AmountRe = Me.F_ReceiptDetails!Amountnew
    '         RsEdit.Update
       End If
       RsEdit.MoveNext
       Loop
    
    
    Rs.MoveNext
    Loop
    Set Rs = Nothing
    Set RsEdit = Nothing
    
    MsgBox " تم تعديل السجلات الى الجدول بنجاح ", vbInformation, "تم "
    Exit Sub
    enderr:
    MsgBox " خطا في البيانات ", vbInformation, "لم يتم التعديل"
    
     DoCmd.SetWarnings True

     

  15. السلام عليكم ورحمة الله

    عندي جدول اصناف وفيه عدة حقول منها حقل السعر وحقل الكمية 

    عندي نموذج مستمر ممكن افتح في النموذج الواحد خمسة اصناف او اكثر ودخل الكميات المشتراة واسعارها الجديده

    محتاج انو اعمل استعلام تحديث يعمل عن طريق زر ويحدث الكميات الموجوده في النموذج واكيد بالاعتماد على كود الصنف يحدث الكمية انا عملت استعلام لكنه يقوم بتحديث اول قيمة فقط 

    يعني ياخذ اول قيمة من النموذج المستمر ويتوقف ويترك باقي الاصناف لا يقوم بتحديثها .

    هل هناك نجعل استعلام التحديث يحدث كافة الاصناف الموجوده بالنموذج وليس اول صنف فقط؟

     

    • Like 1
  16. السلام عليكم ورحمة الله وبركاته

    عندي سؤال كيف يمكن ان اصدر بيانات جدول الى عدة صفحات داخل اكسيل او عدة اكسيلات 

    لو فرضنا عند بيانات بجدول وكانت البيانات الموجوده في الجدول تحتوي على ترقيم والبيانات الموجوده 1000 سجل

    لو احتاجت الى حفظ من 1 الى 250 في الصفحة الاولى او الاكسيل الاول 

    ومن 251 الى 500 في الصفحة الثانية او الاكسيل الثاني

    ومن 501 الى 750 في الصفحة الثالثة او الاكسيل الثالث

    ومن 751 الى 100 في الصفحة الرابعة او الاكسيل الرابع 

    هل هناك طريقة لتصدير البيانات من الجدول الى الاكسيل بهذه الطريقة ؟

×
×
  • اضف...

Important Information