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

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

قام بنشر (معدل)

السلام عليكم ورحمة الله / اعضاء الجروب الكرام 

كل عام وأنتم بخير بمناسبة شهر رمضان الكريم

عندي نموذج مبني على جدولين يشتمل على مجموعة سجلات وليكن 100 سجل

الترقيم التلقائي به مسجل من 1 إلى 100    ما على المستخدم الا أن يختار رقم السجل الموجود (من 1 إلى 100) ثم يقوم بتسجيل البيانات به 

سؤالي إذا رغبت حذف جميع الحفول في أحد السجلات (من الجدولين) بدون حذف رقم السجل (الترقيم التلقائي) فكيف يمكن ذلك 

أرجو أن يكون سؤال واضج وجزاكم الله خيرا 

تم تعديل بواسطه أبو أحمد
زيادة للتوضيح
  • أبو أحمد changed the title to حذف بيانات سجل في نموذج
قام بنشر
34 دقائق مضت, أبو أحمد said:

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

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

زودنا بملف بسيط على الأقل للتعرف على اسماء الحقول والجداول يا صديقي :excl:

قام بنشر
41 دقائق مضت, Foksh said:

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

تمام أستاذي الكريم حقك 

ولكن أنا اعتقد أنه يوجد كود معين لحذف جميع محتوى السجل باستثناء حقل الترقيم التلقائي المسجل لذلك لم أضع مثال 

جربت محاولة كتاب 

 

                                                                                                                                                                               Me.filedname.value = " "
مع جميع الحقول في النموذج ولكن للاسف بعد الحذف تماما وعند التسجيل من جديد في السجل تظهر علامات الجدول الثاني من جديد تلقائيا 
حيث الجدول الاول أسماء وبيانات وفي الجدول الثاني علامات فقط مثل ،  :  ;  =  /  وغيرهم 
قام بنشر (معدل)
38 دقائق مضت, أبو أحمد said:

ولكن أنا اعتقد أنه يوجد كود معين لحذف جميع محتوى السجل باستثناء حقل الترقيم التلقائي المسجل لذلك لم أضع مثال 

 

يوجد كود لدي ، ولكنه يقوم بحذف جميع سجلات الجدول باستثناء حقل المفتاح الأساسي ..

أم تريد حذف سجل محدد !!!!

 

تم تعديل بواسطه Foksh
💥 توضيح بعض النقاط ..
قام بنشر
1 ساعه مضت, kkhalifa1960 said:

 حسب مافهمت اليك مرفق بطلبك
استاذي الكريم / أنا أسف لو أمكن ممكن تحوله إلى أكسس 2003  أسف لعدم ذكر ذلك في الأول ... شكرا على سعة صدرك 

5 ساعات مضت, Foksh said:

يوجد كود لدي ، ولكنه يقوم بحذف جميع سجلات الجدول باستثناء حقل المفتاح الأساسي

هذا هو المطلوب أين هو ؟؟
ولكن لو أمكن أنا بعمل على أكسس 2003 شكرا 

قام بنشر
5 دقائق مضت, أبو أحمد said:

هذا هو المطلوب أين هو ؟؟

ليس لدي آكسيس 2003 ، ولكن على حد علمي ، تأكد من وجود مكتبة "Microsoft DAO 3.6 Object Library" اذا لم يعمل معك الكود ،

رغم أن آكسيس 2003 يدعم DAO ( على حد علمي ، والله أعلم ) . على كل حال ، جرب الكود التالي ، ومتابع معك حتى تصل للنهاية ..

Private Sub Command0_Click()
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim fld As DAO.Field
    Dim sqlUpdate As String
    Dim tableName As String
    
    tableName = "Employee" 'اسم الجدول
    Set db = CurrentDb
    
    Set rst = db.OpenRecordset(tableName, dbOpenDynaset)
    
    sqlUpdate = "UPDATE " & tableName & " SET "
    
    For Each fld In rst.Fields
        If fld.Name <> "EmployeeID" Then 'حقل المفتاح الأساسي
            If (fld.Attributes And dbAutoIncrField) = 0 Then
                sqlUpdate = sqlUpdate & "[" & fld.Name & "] = Null, "
            End If
        End If
    Next fld
    
    If Right(sqlUpdate, 2) = ", " Then
        sqlUpdate = Left(sqlUpdate, Len(sqlUpdate) - 2)
        
        db.Execute sqlUpdate, dbFailOnError
        
        MsgBox "تمت تصفية جميع البيانات باستثناء حقل المفتاح الأساسي", vbInformation, ""
    Else
        MsgBox "لا توجد حقول يمكن مسح محتوياتها", vbExclamation, ""
    End If
    
    rst.Close
    Set rst = Nothing
    Set db = Nothing
End Sub

 

ملف للتطبيق :-

Delete Records.accdb

 

 

 

قام بنشر
22 دقائق مضت, أبو أحمد said:

استاذي الكريم / أنا أسف لو أمكن ممكن تحوله إلى أكسس 2003  أسف لعدم ذكر ذلك في الأول ... شكرا على سعة صدرك

تفضل استاذ 

DDBoAhmed -1.rar

قام بنشر
52 دقائق مضت, Foksh said:

اذا لم يعمل معك الكود ،

رغم أن آكسيس 2003 يدعم DAO ( على حد علمي ، والله أعلم ) . على كل حال ، جرب الكود التالي ، ومتابع معك حتى تصل للنهاية ..

بالفعل الكود لم يعمل معي أستاذي الكريم 
لو سهلت علي ممكن تحوله ألى أكسس 2003 جزاكم الله خيرا تكون سهلت عليا كثير 

 

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

حسب مافهمت اليك مرفق بطلبك

بحاول أفهم لاني على قد حالي أخي الكريم 
احاول افهم وارد عليك ان شاء الله لانه واضح انه به شغل كثير 

جزاكم الله خيرا استاذي الكريم 

قام بنشر
37 دقائق مضت, أبو أحمد said:

لو سهلت علي ممكن تحوله ألى أكسس 2003 جزاكم الله خيرا تكون سهلت عليا كثير 

 

جرب هذا المرفق

Delete Records.mdb

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

جرب هذا المرفق

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

11.JPG

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

فضل استاذ 

السلام عليكم ورحمة الله 
أستاذي الكريم الكود لا يعمل ويعطي رسالة عند الفتح كما في الصورة 

22.JPG

قام بنشر (معدل)
11 ساعات مضت, أبو أحمد said:

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

11.JPG

حسناً ، جرب هذا التعديل ، كنت قد جهزته مسبقاً للإحتياط لهكذا رد .

مع العلم أنني لا أملك أوفيس 2003 للأسف ، وعل أحد الأخوة ممن يملك هذا الإصدار إفادتنا بالنتيجة أيضاً ..

 

Private Sub Command0_Click()
    On Error GoTo ErrorHandler
    
    Dim db As Database
    Dim rst As Recordset
    Dim fld As Field
    Dim sqlUpdate As String
    Dim tableName As String
    
    tableName = "Employee" 'اسم الجدول
    Set db = CurrentDb()
    
    Set rst = db.OpenRecordset(tableName)
    
    sqlUpdate = "UPDATE " & tableName & " SET "
    
    For Each fld In rst.Fields
        If fld.Name <> "EmployeeID" Then 'حقل المفتاح الأساسي
            If Not (fld.Attributes And dbAutoIncrField) Then
                sqlUpdate = sqlUpdate & "[" & fld.Name & "] = Null, "
            End If
        End If
    Next fld
    
    If Right(sqlUpdate, 2) = ", " Then
        sqlUpdate = Left(sqlUpdate, Len(sqlUpdate) - 2)
        
        db.Execute sqlUpdate
        
        MsgBox "تمت تصفية جميع البيانات باستثناء حقل المفتاح الأساسي", vbInformation
    Else
        MsgBox "لا توجد حقول يمكن مسح محتوياتها", vbExclamation
    End If
    
ExitSub:
    If Not rst Is Nothing Then rst.Close
    Set rst = Nothing
    Set db = Nothing
    Exit Sub
    
ErrorHandler:
    MsgBox "حدث خطأ", vbCritical
    Resume ExitSub
End Sub

1. حيث ما تم تعديله هو حذف مرجعيات DAO من تعريفات الكائنات لأنها غير ضرورية في أكسس 2003 حسب علمي .

2. قمت بإضافة معالجة الأخطاء باستخدام On Error GoTo ErrorHandler .

3. قمت بحذف dbFailOnError لأنه غير ضروري مع وجود معالج الأخطاء .

جرب وأخبرني بالنتيجة ,,

 

جرب بدايةً على الحذف الكامل ، ثم ننتقل لحذف سجل محدد

مع العلم ، هذا ردك على حذف سجل واحد مؤخراً

Untitled.png.e5f92caaf147029708fc7f92267e7317.png

تم تعديل بواسطه Foksh
قام بنشر
20 ساعات مضت, Foksh said:

حسناً ، جرب هذا التعديل ،

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

إذا كان الجدول الرئيسي عندي للاسف عنوان باللغة العربية جدول تسجيل الكتب فكيف يكتب في الكود 

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

Option Compare Database

Private Sub Command0_Click()

    On Error GoTo ErrorHandler

   

    Dim db As dao.Database

    Dim rst1 As Recordset, rst2 As Recordset

    Dim fld As Field

    Dim sqlUpdate1 As String, sqlUpdate2 As String

    Dim جدول تسجيل الكتب D As Long

   

    If Me. searinumber= 0 Or IsNull(Me. searinumber) Or Me. searinumber= "" Then

        MsgBox "الرجاء إدخال رقم الكتاب", vbExclamation

        Me. searinumber.SetFocus

        Exit Sub

    End If

   

جدول تسجيل الكتب D = Val(Me. searinumber)

   

    Set db = CurrentDb()

   

    Dim strCheck As String

    strCheck = "SELECT COUNT(*) FROM Empl WHERE NoMArks = " & empID

    If DCount("*", "Empl", " NoMArks = " & empID) = 0 Then

        MsgBox "رقم الكتاب غير موجود", vbExclamation

        Me. searinumber.SetFocus

        GoTo ExitSub

    End If

 

    Set rst1 = db.OpenRecordset("Empl") 'الجدول الرئيسي

    sqlUpdate1 = "UPDATE Empl SET "

   

    For Each fld In rst1.Fields

        If fld.Name <> " Marks ID" Then  'المفتاح الأساسي

            If Not (fld.Attributes And dbAutoIncrField) Then

                sqlUpdate1 = sqlUpdate1 & "[" & fld.Name & "] = Null, "

            End If

        End If

    Next fld

   

    If Right(sqlUpdate1, 2) = ", " Then

        sqlUpdate1 = Left(sqlUpdate1, Len(sqlUpdate1) - 2)

        sqlUpdate1 = sqlUpdate1 & " WHERE NoMArks = " & empID

    End If

   

    Set rst2 = db.OpenRecordset("Marks ")  'الجدول الفرعي

    sqlUpdate2 = "UPDATE Marks SET "

   

    For Each fld In rst2.Fields

        If fld.Name <> " Marks ID" Then  'الحقل المرتبط به

            If Not (fld.Attributes And dbAutoIncrField) Then

                sqlUpdate2 = sqlUpdate2 & "[" & fld.Name & "] = Null, "

            End If

        End If

    Next fld

   

    If Right(sqlUpdate2, 2) = ", " Then

        sqlUpdate2 = Left(sqlUpdate2, Len(sqlUpdate2) - 2)

        sqlUpdate2 = sqlUpdate2 & " WHERE NoMArks = " & empID

    End If

   

    db.Execute sqlUpdate1

    db.Execute sqlUpdate2

   

    MsgBox "تمت تصفية بيانات الموظف رقم " & empID & " في الجدولين", vbInformation

    Me. Marks.Requery

   

ExitSub:

    If Not rst1 Is Nothing Then rst1.Close

    If Not rst2 Is Nothing Then rst2.Close

    Set rst1 = Nothing

    Set rst2 = Nothing

    Set db = Nothing

    Exit Sub

   

ErrorHandler:

    MsgBox "حدث خطأ", vbCritical

    Resume ExitSub

End Sub

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

الرسالة التي ظهرت بعد عمل الكود.JPG

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