اذهب الي المحتوي
أوفيسنا

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


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

       عند الضغط على close

تخرج رساله كالاتى حدث خطأ 

اثناء حفظ البيانات the microsoft access database engine does not recognise 'main' as a vaild name or expression 

  انا اكتشفت ان الرساله بتخرج فقط فى حاله وجود سجل فى الجدول

اما فى حالة عدم وجود سجل(اضافة السجل لاول مره ) لاتخرج  رساله

ويعمل بشكل طبيعى

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

Private Sub SaveColorToTable()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim activeField As String
    Dim fieldNamePrefix As String
    Dim criteria As String

    On Error GoTo ErrorHandler

    ' الحصول على الحقل النشط من النموذج
    activeField = Forms!settings_font_color_frm.activeField
    
    ' التحقق مما إذا كان النموذج محملاً
    If CurrentProject.AllForms("settings_font_color_frm").IsLoaded Then
        ' تعيين قاعدة البيانات وفتح سجل
        Set db = CurrentDb
        Set rs = db.OpenRecordset("settings_Report_tbl", dbOpenDynaset)
        
        ' التحقق مما إذا كان الحقل النشط غير فارغ
        If Not IsNull(activeField) Then
            ' تحديد البادئة لاسم الحقل
            fieldNamePrefix = activeField
            
            ' إعداد معايير البحث بناءً على الحقل النشط
            criteria = fieldNamePrefix & " IS NOT NULL"
            rs.FindFirst criteria
            
            If Not rs.NoMatch Then
                ' تحديث السجل إذا كان موجودًا
                rs.Edit
                rs.fields(fieldNamePrefix & "color").Value = Me.Text.ForeColor
                rs.fields(fieldNamePrefix & "size").Value = Me.Text.FontSize
                rs.fields(fieldNamePrefix & "font").Value = Me.Text.FontName
                rs.fields(fieldNamePrefix & "bold").Value = Me.Text.FontBold
                rs.fields(fieldNamePrefix & "slope").Value = Me.Text.FontItalic
                rs.fields(fieldNamePrefix & "underline").Value = Me.Text.FontUnderline
                rs.Update
                
                MsgBox "تم تحديث السجل بنجاح.", vbInformation
            Else
                ' إضافة سجل جديد إذا لم يكن هناك سجل موجود
                rs.AddNew
                rs.fields(fieldNamePrefix & "color").Value = Me.Text.ForeColor
                rs.fields(fieldNamePrefix & "size").Value = Me.Text.FontSize
                rs.fields(fieldNamePrefix & "font").Value = Me.Text.FontName
                rs.fields(fieldNamePrefix & "bold").Value = Me.Text.FontBold
                rs.fields(fieldNamePrefix & "slope").Value = Me.Text.FontItalic
                rs.fields(fieldNamePrefix & "underline").Value = Me.Text.FontUnderline
                rs.Update
                
                MsgBox "تم إضافة سجل جديد بنجاح.", vbInformation
            End If
        Else
            MsgBox "الحقل النشط غير محدد.", vbExclamation
        End If
        
        ' إغلاق السجل وتحرير الموارد
        rs.Close
        Set rs = Nothing
        Set db = Nothing
    Else
        MsgBox "النموذج غير محمل.", vbExclamation
    End If
    
    Exit Sub

ErrorHandler:
    MsgBox "حدث خطأ أثناء حفظ البيانات: " & Err.Description, vbExclamation
    If Not rs Is Nothing Then
        rs.Close
        Set rs = Nothing
    End If
    If Not db Is Nothing Then
        Set db = Nothing
    End If
End Sub

 

تم تعديل بواسطه ابوخليل
تنسيق الكود ... نرجو الاهتمام بتنسيق الكود
رابط هذا التعليق
شارك

  • safaa salem5 changed the title to ممكن تصحيح الكود يعمل بشكل جيد فى حاله اضافة سجل جديد لكن فى حاله وجود سجل بتخرج رساله خطأ
5 ساعات مضت, safaa salem5 said:

مش متعوده ما الاقيش اجابه لسؤالى فى المنتدى

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

الحل عطلي هذا السطر

rs.FindFirst criteria

 

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

10 hours ago, ابوخليل said:

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

الحل عطلي هذا السطر

rs.FindFirst criteria

 

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

 rs.fields(fieldNamePrefix & "color").Value = Me.Text.ForeColor
تم تعديل بواسطه safaa salem5
رابط هذا التعليق
شارك

 لم افهم الطلب بالضبط

لأن السطر موجود فعلا ضمن الكود

اذا القصد الاكتفاء بلون الخط فقط .. نعم ليه لا .. يتم فقط تعطيل بقية الاسطر الخاصة بالصفات الأخرى

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

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

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



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

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

Important Information