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

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

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

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

كل عام وحضراتكم بخير واللهم بلغنا رمضان لا فاقدين ولا مفقودين امين يارب العالمين 

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

زر بنموذج به كود حذف كافة السجلات بجدول الفواتير وجدول الحركات والكود هو 

Dim SQ1 As String
Dim SQ2 As String
Sq1 = "DELETE tblHaraka.* FROM tblHaraka;"
SQ2 = "DELETE tblFatora.* FROM tblFatora;"
If MsgBox("هل تريد حذف كافة السجلات", vbYesNo + vbCritical + vbDefaultButton1 + 1572864, Compan) = vbYes Then
DoCmd.SetWarnings (warningsoff)
DoCmd.RunSQL (Sq1)
DoCmd.RunSQL (SQ2)
DoCmd.SetWarnings (warningson)
Me.Requery
MsgBox "تم حذف كافة السجلات"
Else
MsgBox "تم الغاء العملية الحذف"
End If
المطلوب هو لو فيه سجل الجدول الاول ( فاتورة ) ورقمة مثلا 1001 وله سجل فرعى مرتبط به بالجدول ( الحركة ) عاوز استثنى السجل دة من الحذف بالكود اللى ذكرت بالاعلى فهل من طريقة لفعل ذلك 

تم تعديل بواسطه أبو حوده
قام بنشر

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

استخدم الكود التالي لاستثناء 1001..ربما تحتاج الى باراميتر في الكود لتمرير قيمة الرقم المستثنى من خلال النموذج

Sub DeleteRecordsExceptOne()
    Dim db As DAO.Database
    Dim rsFatora As DAO.Recordset
    Dim rsHaraka As DAO.Recordset
    Dim strInvoiceID As Integer
    
    strInvoiceID = "1001"
    
    Set db = CurrentDb
    
    Set rsFatora = db.OpenRecordset("SELECT * FROM tblFatora  WHERE HarakaID <> " & strInvoiceID & "")
    Do While Not rsFatora.EOF
        rsFatora.Delete
        rsFatora.MoveNext
    Loop
    
    Set rsHaraka = db.OpenRecordset("SELECT * FROM tblHaraka WHERE HarakaID <> " & strInvoiceID & "")
    Do While Not rsHaraka.EOF
        rsHaraka.Delete
        rsHaraka.MoveNext
    Loop
    
    rsFatora.Close
    rsHaraka.Close
    db.Close
    
    Set rsFatora = Nothing
    Set rsHaraka = Nothing
    Set db = Nothing
End Sub

 

  • Like 1
قام بنشر

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

والجدول الرئيسى الفاتورة... السجل فى الجدول الحركة مرتبط به عن طريق حقل رقم الفاتورة Fatora_id

 

قام بنشر

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

وفى جدول الحركة بيكون اسمة Fatora_id 

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

قام بنشر
  في 24‏/2‏/2023 at 14:03, أبو حوده said:

بيكون الكود فية اختلاف كبير

Expand  

لا اختلاف ولاحاجة.. السيت الاول بيكون

Set rsFatora = db.OpenRecordset("SELECT * FROM tblFatora  WHERE FatoraId <> " & strInvoiceID & "")

السيت الثاني..

 Set rsHaraka = db.OpenRecordset("SELECT * FROM tblHaraka WHERE Fatora_id  <> " & strInvoiceID & "")

 

  • Like 1
قام بنشر

مشاركة مع الاستاذ قاسم

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

او قدم سطر على سطر

بمعنى احذف جدول التفاصيل اولا

  • Like 1
قام بنشر (معدل)
  في 24‏/2‏/2023 at 15:50, ابوخليل said:

او قدم سطر على سطر

Expand  

شكرا استاذي ابو خليل..

نعم قدم السطر الثاني على الاول

اقصد هذه الجملة كلها

Set rsHaraka = db.OpenRecordset("SELECT * FROM tblHaraka WHERE HarakaID <> " & strInvoiceID & "")
    Do While Not rsHaraka.EOF
        rsHaraka.Delete
        rsHaraka.MoveNext
    Loop

 

تم تعديل بواسطه Eng.Qassim
  • Like 1
قام بنشر

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

Set rsFatora = db.OpenRecordset("SELECT * FROM tblFatora  WHERE FatoraId <> " & strInvoiceID & "")

ليصبح الكود

Sub DeleteRecordsExceptOne()
    Dim db As DAO.Database
    Dim rsFatora As DAO.Recordset
    Dim strInvoiceID As Integer
    
    strInvoiceID = "1001"
    
    Set db = CurrentDb
    
    Set rsFatora = db.OpenRecordset("SELECT * FROM tblFatora  WHERE FatoraId <> " & strInvoiceID & "")
    Do While Not rsFatora.EOF
        rsFatora.Delete
        rsFatora.MoveNext
    Loop
    
        
    rsFatora.Close
    db.Close
    
    Set rsFatora = Nothing
    Set db = Nothing
End Sub

وغير الرقم 1001 لما هو موجود عندك في الجدول الرئيس

  • Like 1
قام بنشر

السلام عليكم  

بالاضافة لما تفضل بة اساتذتي الكرام جرب تغير هذه الاسطر . و وافنا بالنتيجة

Dim strInvoiceID As String

Set rsFatora = db.OpenRecordset("SELECT * FROM tblFatora WHERE FatoraId <> '" & strInvoiceID & "'")
Set rsHaraka = db.OpenRecordset("SELECT * FROM tblHaraka WHERE Fatora_id <> '" & strInvoiceID & "'")

بالتوفيق

  • Like 1
قام بنشر
  في 24‏/2‏/2023 at 15:50, ابوخليل said:

مشاركة مع الاستاذ قاسم

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

او قدم سطر على سطر

بمعنى احذف جدول التفاصيل اولا

Expand  

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

  • Like 2
قام بنشر

ربنا يبارك فيكم اجمعين

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

وعن طريق تعديل رأس الكود الى as long مرة ثانية ومنسيتش مشاركة استاذنا الفاضل @ابوخليل 

  في 24‏/2‏/2023 at 16:57, ابوخليل said:

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

Expand  

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

بشكر حضراتكم جدا وكل عام وحضراتكم بخير

قام بنشر
  في 24‏/2‏/2023 at 16:32, Eng.Qassim said:

فالمسح يبدأ من جدول الحركة وينتهي بجدول الفاتورة

Expand  

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

  في 24‏/2‏/2023 at 16:57, ابوخليل said:

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

Expand  

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

ويمكن الاستغناء عن ثمانية اسطر في الوحدة النمطية

  • Like 1
قام بنشر
  في 24‏/2‏/2023 at 17:45, أبو حوده said:

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

Expand  
Sub DeleteRecordsExceptOne()
    Dim db As DAO.Database
    Dim rsFatora As DAO.Recordset
    Dim strInvoiceID As Integer
    strInvoiceID = 1001
    Set db = CurrentDb
    Set rsFatora = db.OpenRecordset("SELECT * FROM tblFatora  WHERE FatoraId <> " & strInvoiceID & "")
    Do While Not rsFatora.EOF
        rsFatora.Delete
        rsFatora.MoveNext
    Loop
    rsFatora.Close
    db.Close
    Set rsFatora = Nothing
    Set db = Nothing
End Sub

ايضا في السطر الرابع طالما نتعامل مع متغيير رقمي فلماذا علامات التنصيص

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

حيث يفترض بالمستخدم عدم الدخول للاكواد

قام بنشر
  في 24‏/2‏/2023 at 16:41, أبو حوده said:

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

Expand  

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

والحل كما اشار الاستاذ قاسم

  في 24‏/2‏/2023 at 17:00, Eng.Qassim said:

Dim strInvoiceID As Long

Expand  

 

  • Like 1
قام بنشر
  في 24‏/2‏/2023 at 17:53, متقاعد said:

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

Expand  

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

  في 24‏/2‏/2023 at 18:08, متقاعد said:

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

Expand  

لاني اشتغلت على اساس ماذكره في اول مشاركة ..الرقم يتكون من 4 ارقام ولهذا جعلته integer

  • Like 2
قام بنشر
  في 24‏/2‏/2023 at 18:10, Eng.Qassim said:

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

Expand  

وجهة نظر جديرة بالاحترام

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

اخيرا اشير الى مشاركة سابقة لحجم المتغيرات الرقمية من باب التذكير فقط

  اقتباس

 

Expand  

 

  • Like 2

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