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

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

قام بنشر

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

za-AKSAT-Pro-LAST- (1).rar

قام بنشر

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

مرفق لك الملف لتجربة العمل

111.rar

قام بنشر
2 ساعات مضت, Hamtoooo said:

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

مرفق لك الملف لتجربة العمل

111.rar 53.66 kB · 5 downloads

السلام عليكم شكرا لمجهودك 

لو امكن عايز استخدم 

NOT IN

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

قام بنشر
3 ساعات مضت, Foksh said:

جرب فكرتي أخي الكريم @ahmedabuzena ,,

 

za-AKSAT-Pro-LAST- (1).accdb 744 kB · 3 downloads

اخي الكريم جزاكم الله خيرا انا نسخت الكود وفعلا لا يتم تكرار السجلات لكن في مشكلتين

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

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

يعني لو ادرجت 50 فاتورة يجب ان اذهب لكل فاتوره واضغط على الزر

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

الف شكر على اهتمامك ومساعدتى في انتظار الحل وجزاكم الله خيرا

قام بنشر

بسيطة ، ولا يهمك ، انتظرني في التعديل المطلوب 😇

قام بنشر
منذ ساعه, ahmedabuzena said:

اخي الكريم جزاكم الله خيرا انا نسخت الكود وفعلا لا يتم تكرار السجلات لكن في مشكلتين

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

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

يعني لو ادرجت 50 فاتورة يجب ان اذهب لكل فاتوره واضغط على الزر

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

الف شكر على اهتمامك ومساعدتى في انتظار الحل وجزاكم الله خيرا

اتفضل

 


    Dim sql As DAO.Recordset
    Dim strAmount As String
    Dim Amount As Double
    Dim i As Integer
    Dim exists As Boolean
    Dim rsCheck As DAO.Recordset

    Set sql = CurrentDb.OpenRecordset("G2", dbOpenDynaset)

    Amount = Round(Forms![f1]![المبلغ] / Forms![f1]![NO], 2)
    strAmount = NoToTxt(Amount, "دينار", "فلس")

    ' Check if records already exist for the same invoice number
    For i = 0 To Forms![f1]![NO] - 1
        exists = False
        Set rsCheck = CurrentDb.OpenRecordset("SELECT * FROM G2 WHERE [رقم] = " & Forms![f1]!X & " AND [التاريخ] = #" & Format(DateAdd("m", i, Forms![f1]![Date]), "yyyy/mm/dd") & "#", dbOpenDynaset)
        If Not rsCheck.EOF Then
            exists = True
        End If
        rsCheck.Close
        
        If Not exists Then
            With sql
                .AddNew
                    ![رقم] = Forms![f1]!X
                    ![التاريخ] = DateAdd("m", i, Forms![f1]![Date])
                    ![المبلغ] = Round(Forms![f1]![المبلغ] / Forms![f1]![NO], 2)
                    ![المبلغ كتابه] = strAmount
                    ![القسط] = "لم يتم الدفع"
                .Update
            End With
        End If
    Next i
    
    sql.Close
    Forms("f1").Requery

 

قام بنشر
10 ساعات مضت, ابو جودي said:

اتفضل

 


    Dim sql As DAO.Recordset
    Dim strAmount As String
    Dim Amount As Double
    Dim i As Integer
    Dim exists As Boolean
    Dim rsCheck As DAO.Recordset

    Set sql = CurrentDb.OpenRecordset("G2", dbOpenDynaset)

    Amount = Round(Forms![f1]![المبلغ] / Forms![f1]![NO], 2)
    strAmount = NoToTxt(Amount, "دينار", "فلس")

    ' Check if records already exist for the same invoice number
    For i = 0 To Forms![f1]![NO] - 1
        exists = False
        Set rsCheck = CurrentDb.OpenRecordset("SELECT * FROM G2 WHERE [رقم] = " & Forms![f1]!X & " AND [التاريخ] = #" & Format(DateAdd("m", i, Forms![f1]![Date]), "yyyy/mm/dd") & "#", dbOpenDynaset)
        If Not rsCheck.EOF Then
            exists = True
        End If
        rsCheck.Close
        
        If Not exists Then
            With sql
                .AddNew
                    ![رقم] = Forms![f1]!X
                    ![التاريخ] = DateAdd("m", i, Forms![f1]![Date])
                    ![المبلغ] = Round(Forms![f1]![المبلغ] / Forms![f1]![NO], 2)
                    ![المبلغ كتابه] = strAmount
                    ![القسط] = "لم يتم الدفع"
                .Update
            End With
        End If
    Next i
    
    sql.Close
    Forms("f1").Requery

 

الف شكر بخصوص عدم التكرار اشتغل تمام

بس عايز بالضغط على زر ابدأ اضافة الاقساط ان يتم الاضافة لجميع الفواتير مرة واحدة 

مش لازم اذهب لكل فاتورة واضغط على الاضافة

جزاكم الله خيرا

INSTALLMENT APPEND2.rar

قام بنشر
15 ساعات مضت, ahmedabuzena said:

الف شكر بخصوص عدم التكرار اشتغل تمام

بس عايز بالضغط على زر ابدأ اضافة الاقساط ان يتم الاضافة لجميع الفواتير مرة واحدة 

مش لازم اذهب لكل فاتورة واضغط على الاضافة

جزاكم الله خيرا

INSTALLMENT APPEND2.rar 430.69 kB · 1 download

السلام عليكم لو كن غير جائز ما اطلبه ارجو إبلاغي وجزاكم الله خيرا

قام بنشر
منذ ساعه, ahmedabuzena said:

السلام عليكم لو كن غير جائز ما اطلبه ارجو إبلاغي وجزاكم الله خيرا

وعليكم السلام 

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

Dim sql As DAO.Recordset
Dim rsInvoice As DAO.Recordset
Dim strAmount As String
Dim Amount As Double
Dim i As Integer
Dim exists As Boolean
Dim rsCheck As DAO.Recordset
Dim strSQL As String
Dim invoiceNumber As String
Dim invoiceDate As Date
Dim totalInstallments As Integer
Dim currentInstallmentDate As Date

' فتح مجموعة السجلات للتعامل مع جدول الفواتير
Set rsInvoice = CurrentDb.OpenRecordset("SELECT * FROM Faturas", dbOpenDynaset)

' فتح مجموعة السجلات للتعامل مع جدول الأقساط
Set sql = CurrentDb.OpenRecordset("G2", dbOpenDynaset)

' التكرار على كل سجل فاتورة في جدول الفواتير
Do Until rsInvoice.EOF
    invoiceNumber = rsInvoice![رقم]
    invoiceDate = rsInvoice![Date]
    totalInstallments = rsInvoice![NO]
    
    ' حساب المبلغ وتنسيقه
    Amount = Round(rsInvoice![المبلغ] / totalInstallments, 2)
    strAmount = NoToTxt(Amount, "دينار", "فلس")
    
    ' التكرار على كل قسط للفاتورة الحالية
    For i = 0 To totalInstallments - 1
        exists = False
        currentInstallmentDate = DateAdd("m", i, invoiceDate)
        
        ' تحقق مما إذا كان السجل موجودًا بالفعل
        strSQL = "SELECT * FROM G2 WHERE [رقم] = '" & invoiceNumber & "' AND [التاريخ] = #" & Format(currentInstallmentDate, "yyyy/mm/dd") & "#"
        
        Set rsCheck = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
        
        If Not rsCheck.EOF Then
            exists = True
        End If
        rsCheck.Close
        Set rsCheck = Nothing
        
        ' إذا لم يكن السجل موجودًا، قم بإضافة سجل جديد
        If Not exists Then
            With sql
                .AddNew
                    ![رقم] = invoiceNumber
                    ![التاريخ] = currentInstallmentDate
                    ![المبلغ] = Amount
                    ![المبلغ كتابه] = strAmount
                    ![القسط] = "لم يتم الدفع"
                .Update
            End With
        End If
    Next i
    
    rsInvoice.MoveNext
Loop

' إغلاق مجموعة السجلات وتحديث النموذج
sql.Close
Set sql = Nothing
rsInvoice.Close
Set rsInvoice = Nothing
Forms("f1").Requery

 

قام بنشر
5 ساعات مضت, ابو جودي said:

وعليكم السلام 

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

Dim sql As DAO.Recordset
Dim rsInvoice As DAO.Recordset
Dim strAmount As String
Dim Amount As Double
Dim i As Integer
Dim exists As Boolean
Dim rsCheck As DAO.Recordset
Dim strSQL As String
Dim invoiceNumber As String
Dim invoiceDate As Date
Dim totalInstallments As Integer
Dim currentInstallmentDate As Date

' فتح مجموعة السجلات للتعامل مع جدول الفواتير
Set rsInvoice = CurrentDb.OpenRecordset("SELECT * FROM Faturas", dbOpenDynaset)

' فتح مجموعة السجلات للتعامل مع جدول الأقساط
Set sql = CurrentDb.OpenRecordset("G2", dbOpenDynaset)

' التكرار على كل سجل فاتورة في جدول الفواتير
Do Until rsInvoice.EOF
    invoiceNumber = rsInvoice![رقم]
    invoiceDate = rsInvoice![Date]
    totalInstallments = rsInvoice![NO]
    
    ' حساب المبلغ وتنسيقه
    Amount = Round(rsInvoice![المبلغ] / totalInstallments, 2)
    strAmount = NoToTxt(Amount, "دينار", "فلس")
    
    ' التكرار على كل قسط للفاتورة الحالية
    For i = 0 To totalInstallments - 1
        exists = False
        currentInstallmentDate = DateAdd("m", i, invoiceDate)
        
        ' تحقق مما إذا كان السجل موجودًا بالفعل
        strSQL = "SELECT * FROM G2 WHERE [رقم] = '" & invoiceNumber & "' AND [التاريخ] = #" & Format(currentInstallmentDate, "yyyy/mm/dd") & "#"
        
        Set rsCheck = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
        
        If Not rsCheck.EOF Then
            exists = True
        End If
        rsCheck.Close
        Set rsCheck = Nothing
        
        ' إذا لم يكن السجل موجودًا، قم بإضافة سجل جديد
        If Not exists Then
            With sql
                .AddNew
                    ![رقم] = invoiceNumber
                    ![التاريخ] = currentInstallmentDate
                    ![المبلغ] = Amount
                    ![المبلغ كتابه] = strAmount
                    ![القسط] = "لم يتم الدفع"
                .Update
            End With
        End If
    Next i
    
    rsInvoice.MoveNext
Loop

' إغلاق مجموعة السجلات وتحديث النموذج
sql.Close
Set sql = Nothing
rsInvoice.Close
Set rsInvoice = Nothing
Forms("f1").Requery

 

اخى الكريم شكرا على مجهودك بعد التطبيق ظهر هذا الخطأ ما هو الحل

Capture.PNG

Capture1.PNG

INSTALLMENT APPEND4.rar

قام بنشر
20 ساعات مضت, ahmedabuzena said:

اخى الكريم شكرا على مجهودك بعد التطبيق ظهر هذا الخطأ ما هو الحل

Capture.PNG

Capture1.PNG

INSTALLMENT APPEND4.rar 432.41 kB · 0 downloads

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

قام بنشر
6 ساعات مضت, ahmedabuzena said:

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

كمشاركة جانبية ..

لا وجود للجدول او الاستعلام faturas :excl:

قام بنشر
منذ ساعه, Foksh said:

كمشاركة جانبية ..

لا وجود للجدول او الاستعلام faturas :excl:

فعلا هو مفيش جدول باسم faturas المفروض G1

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

INSTALLMENT APPEND5.rar

قام بنشر
10 ساعات مضت, Foksh said:

كمشاركة جانبية ..

لا وجود للجدول او الاستعلام faturas :excl:

انا غيرت كل اسماء الحقول في جدول G1 AND G2 علشان اللخبطه وتفادي تشابه الاسماء في الجدولين وحاولت امشي مع الكود لمعرفة السبب وبردة لم يعمل يا ريت لو تقدر تساعدنى في حل المشكلة

INSTALLMENT APPEND6.rar

قام بنشر
17 دقائق مضت, ahmedabuzena said:

انا غيرت كل اسماء الحقول في جدول G1 AND G2 علشان اللخبطه وتفادي تشابه الاسماء في الجدولين وحاولت امشي مع الكود لمعرفة السبب وبردة لم يعمل يا ريت لو تقدر تساعدنى في حل المشكلة

INSTALLMENT APPEND6.rar 432.64 kB · 0 downloads

أعتذر عن التأخر بالرد ، ولكن لم أكن متواجداً عند الكمبيوتر يا صديقي ، إن كان في العمر بقية إن شاء الله حشوف الملف . 🤗 .

قام بنشر (معدل)
14 ساعات مضت, Foksh said:

أعتذر عن التأخر بالرد ، ولكن لم أكن متواجداً عند الكمبيوتر يا صديقي ، إن كان في العمر بقية إن شاء الله حشوف الملف . 🤗 .

Private Sub أمر8_Click()
Dim sql As DAO.Recordset
Dim rsInvoice As DAO.Recordset
Dim strAmount As String
Dim Amount As Double
Dim i As Integer
Dim exists As Boolean
Dim rsCheck As DAO.Recordset
Dim strSQL As String
Dim invoiceNumber As String
Dim invoiceDate As Date
Dim totalInstallments As Integer
Dim currentInstallmentDate As Date

' فتح مجموعة السجلات للتعامل مع جدول الفواتير
Set rsInvoice = CurrentDb.OpenRecordset("SELECT * FROM g1", dbOpenDynaset)

'  فتح مجموعة السجلات للتعامل مع جدول الأقساط
Set sql = CurrentDb.OpenRecordset("G2", dbOpenDynaset)

' التكرار على كل سجل فاتورة في جدول الفواتير
Do Until rsInvoice.EOF
    invoiceNumber = rsInvoice![G1_NO]
    invoiceDate = rsInvoice![G1_DATE]
    totalInstallments = rsInvoice![G1_NO_PAYMENTS]
    
    ' حساب المبلغ وتنسيقه
    Amount = Round(rsInvoice![G1_AMOUNT] / totalInstallments, 2)
    strAmount = NoToTxt(Amount, "فلس", "دينار")
    
    'التكرار على كل قسط للفاتورة الحالية
    For i = 0 To totalInstallments - 1
        exists = False
        currentInstallmentDate = DateAdd("m", i, invoiceDate)
        
        ' تحقق مما إذا كان السجل موجودًا بالفعل
        strSQL = "SELECT * FROM G2 WHERE [G2_NO] = '" & invoiceNumber & "' AND [G1_DATE] = #" & Format(currentInstallmentDate, "yy/mmmm") & "#"
        
        Set rsCheck = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
        
        If Not rsCheck.EOF Then
            exists = True
        End If
        rsCheck.Close
        Set rsCheck = Nothing
        
        ' إذا لم يكن السجل موجودًا، قم بإضافة سجل جديد
        If Not exists Then
            With sql
                .AddNew
                    ![G2_NO] = invoiceNumber
                    ![G2_DATE] = currentInstallmentDate
                    ![G2_INSTALMENT_AMOUNT] = Amount
                    ![G2_AMOUNT_WORDS] = strAmount
                    ![G2_INSTALMENT_STATUS] = "لم يتم الدفع"
                .Update
            End With
        End If
    Next i
    
    rsInvoice.MoveNext
Loop

' إغلاق مجموعة السجلات وتحديث النموذج
sql.Close
Set sql = Nothing
rsInvoice.Close
Set rsInvoice = Nothing
Forms("f1").Requery

End Sub

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

الجدول الاول هو جدول الفواتير اسمه G1 

الحقول

G1_NO مفتاح اساسي مربوط مع G2_NO علاقة ONE TO MANY

G1_NAME

G1_DATE

G1_AMOUNT

G1_NO_PAYMENTS

 

الجدول الثاني هو جدول توزيع الاقساط على عدد الاشهر لكل العملاء اسمه G2 

الحقول

G2_NO مفتاح اساسي

G2_DATE

G2_INSTALMENT_AMOUNT

G2_AMOUNT_WORDS

G2_INSTALMENT_STATUS

 

تم تعديل بواسطه ahmedabuzena
  • أفضل إجابة
قام بنشر (معدل)
منذ ساعه, ahmedabuzena said:

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

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

جرب هذا التعديل أخي ، وأخبرني بالنتيجة سريعاً ..

 

Private Sub أمر8_Click()
    Dim sql As DAO.Recordset
    Dim rsInvoice As DAO.Recordset
    Dim strAmount As String
    Dim Amount As Double
    Dim i As Integer
    Dim exists As Boolean
    Dim rsCheck As DAO.Recordset
    Dim strSQL As String
    Dim invoiceNumber As Long
    Dim invoiceDate As Date
    Dim totalInstallments As Integer
    Dim currentInstallmentDate As Date
    Set rsInvoice = CurrentDb.OpenRecordset("SELECT * FROM g1", dbOpenDynaset)
    Set sql = CurrentDb.OpenRecordset("G2", dbOpenDynaset)
    Do Until rsInvoice.EOF
        invoiceNumber = rsInvoice![G1_NO]
        invoiceDate = rsInvoice![G1_DATE]
        totalInstallments = rsInvoice![G1_NO_PAYMENTS]
        Amount = Round(rsInvoice![G1_AMOUNT] / totalInstallments, 2)
        strAmount = NoToTxt(Amount, "فلس", "دينار")
        For i = 0 To totalInstallments - 1
            exists = False
            currentInstallmentDate = DateAdd("m", i, invoiceDate)
            strSQL = "SELECT * FROM G2 WHERE [G2_NO] = " & invoiceNumber & " AND [G2_DATE] = #" & Format(currentInstallmentDate, "yyyy-mm-dd") & "#"
            Set rsCheck = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
            If Not rsCheck.EOF Then
                exists = True
            End If
            rsCheck.close
            Set rsCheck = Nothing
            If Not exists Then
                With sql
                    .AddNew
                        ![G2_NO] = invoiceNumber
                        ![G2_DATE] = currentInstallmentDate
                        ![G2_INSTALMENT_AMOUNT] = Amount
                        ![G2_AMOUNT_WORDS] = strAmount
                        ![G2_INSTALMENT_STATUS] = "لم يتم الدفع"
                    .Update
                End With
            End If
        Next i
        rsInvoice.MoveNext
    Loop
    sql.close
    Set sql = Nothing
    rsInvoice.close
    Set rsInvoice = Nothing
End Sub

 

تم تعديل بواسطه Foksh
تم إزالة الرسالة في نهاية الكود لمنع التهنيج
قام بنشر

الف شكر اشتغل تمام شكرا لكل اللي ساعدني وبالأخص استاذ ابو جودي واستاذنا الفاضل FOKSH جزاكم الله خيرا

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information