الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية حذف جميع البيانات من قاعدة بيانات

مغلق
بدأه hashem في 6 ديسمبر 2001 · 19 رد · 1,531 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

#2

الأخ هاشم :

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

ثم نفذ الاستعلام

أشرف خليل

#3

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

delete from table1;

أو حذف جميع الجداول

drop table table1;

وماذا تقصد بوجوب عمل إستعلام

#4

الأخ عبد الرحمن :

إذا حذفت الجداول فاين ستضع البيانات ولكن كل ما يتم هو عمل استعلامquiry

فالأمر التالي

DoCmd.RunSQL "DELETE INV1.[رقم الفاتورة]FROM INV1;"

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

فإذا كان لديك عدة جداول ما أعرفه هو أن تقوم بعمل استعلام حذف quiery لكل جدول وتضع تنفيذ هذه الاستعلامات كلها فى زر واجد فيقوم بحذف جميع البيانات فى وقت واحد .

أشرف خليل

#5

الأخ أشرف هل ممكن شئ من التوضيح لأنني حاولت تطبيق ما قلته ولكن لم تضبط معي

وشكرا على لفتتك الكريمة

#6

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

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

وأما إذا أردت استخدام عبارة SQL لاستعلام الحذف فبعد اختيار الجدول والنقر على النجمة لإدراجها داخل شبكة الاستعلام واختيار استعلام حذف اختر من القائمة عرض ثم عرض SQL وأنسخ العبارة التي تظهر لك كاملة ثم ألصقها في وحدة نمطية واكتب قبلها docmd.RunSQL (" ثم العبارة ثم الفاصلة المزدوجة ثم قوس الإغلاق .

وللجميع التحية

#7

الأخوة الكرام.. السلام عليكم.

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

#8

بعد إذن الإخوة الكرام

بالنسبة لحذف بيانات من قاعدة لم تعملها أنت

الخطوة الأولى : اذهب إلى علاقات الجداول وابحث عن الجداول الرئيسية وهي التي تحمل المفاتيح الرئيسية وترتبط بها جداول فرعية

فمثلاً إذا وجدنا جدول1 به مفتاح رئيسي ويرتبط به 3 جداول فرعية انقر بالماوس الأيمن على الخط لإظهار خصائص العلاقات واختر تتابع الحذف بعد اختيار تكامل مرجعي إذا لم يكن قد اختير من قبل .. ( وإذا رفض قبول التكامل المرجعي لوجود بيانات غير مرتبطة بالجدول الرئيسي فهنا سجل أسماء الجدوال المرتبطة بالجدول الرئيسي لتحذف البيانات منها مباشرة بعبارة sql )

وهكذا مع بقية الجدوال التي ترتبط بها جداول فرعية أخرى

هذا يريحنا في أن حذف بيانات جدول واحد رئيسي سيؤدي إلى حذف بقية البيانات في الجداول الأخرى

خذ أسماء الجداول الرئيسية وعلى سبيل المثال لدينا table1 رئيسي

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

DoCmd.RunSql "Delete table1 From table1"

وطبق هذا الكود إذا وجدت جداول بها بيانات لم تحذف

وتحياتي للجميع

#9

اقرأ التنبيه أولاً في الأسفل أخي الكريم ..

وإن أردت حذف البيانات جميعها في خطوة واحدة فعليك بهذا الكود

Private Sub امر0_Click()

On Error Resume Next

Dim db As New ADODB.Connection

Dim cat As New ADOX.Catalog

Dim sq As String

Dim intTable As Integer

Dim lngRecordDelete As Long

Dim lngAllRecordDeleteOnMyDB As Long

Set db = CurrentProject.Connection

Set cat.ActiveConnection = db

    For Each tbl In cat.Tables

        sq = " delete " & tbl.Name

        sq = sq & " from " & tbl.Name

    intTable = intTable + 1

' هنا لتجاوز جداول النظام الخمسة 

    If intTable > 5 Then

        db.Execute sq, lngRecordDelete

    lngAllRecordDeleteOnMyDB = lngAllRecordDeleteOnMyDB + lngRecordDelete

        End If

    Next

    MsgBox " مجموع السجلات التي تم حذفها من الجداول هي :" & Chr(14) & lngAllRecordDeleteOnMyDB

End Sub

تنبيه:

عملت هذا على أكسس2000

وتأكد أولاً قبل أن تنفذ هذا الكود من أنه لا يحذف بيانات جداول النظام كعمل احترازي باستبدال هذين السطرين

 db.Execute sq, lngRecordDelete

    lngAllRecordDeleteOnMyDB = lngAllRecordDeleteOnMyDB + lngRecordDelete

بالسطر التالي

MsgBox tbl.Name

فهذا السطر سيظهر لك جميع جداولك التي أنشأتها أنت لتتأكد من ذلك .. افعل هذا أولاً لتتأكد أنه لا يظهر جداول النظام .. هذا تحذير وإلا فأنا لا أتحمل ما يجري على برنامجك

#10

أخي أحمد الحربي.. السلام عليكم.

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

#11

عفواً ..

اعتمد هذا الكود

Private Sub cmdDelete_Click()

Dim db As New ADODB.Connection

Dim cat As New ADOX.Catalog

Dim tbl As New ADOX.Table

Dim sq As String

Dim intTable As Integer

Dim lngRecordDelete As Long

Dim lngAllRecordDeleteOnMyDB As Long

Set db = CurrentProject.Connection

Set cat.ActiveConnection = db

    For Each tbl In cat.Tables

        sq = " delete " & tbl.Name

        sq = sq & " from " & tbl.Name

    Select Case tbl.Name

         Case Is = "MSysAccessObjects", "MSysACEs", "MSysObjects", "MSysQueries", "MSysRelationships"

         Case Else

    db.Execute sq, lngRecordDelete

    lngAllRecordDeleteOnMyDB = lngAllRecordDeleteOnMyDB + lngRecordDelete

        End Select

    Next

    MsgBox " مجموع السجلات التي تم حذفها " & Chr(13) & lngAllRecordDeleteOnMyDB



End Sub

وهذا مثال

db3.zip

#12

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

#13

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

تحياتي لك أيها العزيز

#14

عمل رائع يأستاذ/ أحمد

شكرا جزيلا .

ibnmusqat.gif
#15

السلام عليكم

مشكور اخي احمد ،،،

ولكن عذرا على المداخلة ،،،

حقيقة عندما ضغطت على زر اظهار الجدول ظهرت لي رسالة مفادها ان مرجع masado15.dll غير موجود !!!!

مع تحياتي (f)(f)

#16

شكراً لك أستاذ / ابن مسقط

الأخ الكريم / أهم واحد

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

القاعدة على آكسس2000 والمراجع التي استخدمتها هي :

Microsoft Activex Data Opjects 2.7 Library

و Microsoft ADO Ext.2.7 for DLL and Security

أضف هذين المرجعين وإن شاء الله تحل المشكلة

#17

اخي العزيز احمد

اولا اشكرك على سرعة تجاوبك

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

فاكون شاكرا لك لو تتكرم بارسال هذين الملفين لتوفر علي عناء البحث

مع تحياتي (f)(f)

#18

إذن أزل علامة صح من المراجع المفقودة ثم أغلق نافذة المراجع ثم أعد فتحها مرة أخرى واختر المرجعين السابقين بأي إصدار فلو اخترت للمرجع الأول الإصدرا 2.5 سيمشي الحال .. وكذلك ابحث في القائمة عما يشابه Microsoft ADO Ext.2.7 for DLL and Security

أنا لدي ويندوز xp فلذلك جاءت الإصدارات الجديدة من المراجع معه

#19

السلام عليكم

اعتقد انك تحتاج الى ان يكون في العلاقه عندك

ان تختار التحديث والحذف بحيث اذا حذفت شئ جميع البيانات تنحذف المرتبطه به

ثم تعمل استعلام حذف

#20

شكرا اخي احمد

فلقد تم حل المشكلة

مع تحياتي (f)(f)

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…