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

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

قام بنشر

بسم الله الرحمن الرحيم

الاستعلام الإجرائي هو استعلام يُجري تغييرات على العديد من السجلات أو ينقلها في عملية واحدة فقط .
توجد أربعة أنواع من الاستعلامات الإجرائية: حذف وتحديث وإلحاقي وتكوين جداول.
 
نقوم بتحويل الاستعلام الاجرائي الى جملة vba كنوع من الحماية ولتقليل واختصار الكائنات داخل القاعدة
 
وإليكم الطريقة حيث سنطبق الدرس على استعلام حذف :
 
1- بفرضية ان لدينا جدول باسم tbl1 يحتوي على العديد من الحقول وكثير من البيانات ثم قمنا بانشاء استعلام حذف واخترنا الكل 
أي اننا نفتح استعلام حذف جديد ثم نختار الجدول ثم نختار الحقل الاول من الجدول والذي هو عبارة عن نجمة
الآن لو تم تشغيل الاستعلام لقام بحذف كافة البيانات داخل الجدول . 
2- في عرض تصميم الاستعلام ننقر بالزر الايمن تم نختار  عرضSQL  ثم ننسخ الجملة البرمجية التي تظهر لنا
وستظهر على الهذا النحو :

DELETE Tbl1.*
FROM Tbl1;

ولكنها هكذا مادة خام تحتاج الى اضافات حتى نتمكن من تشغيلها داخل الكود

وتتمثل الاضافات بالتالي :

- جعل الجملة على سطر واحد ، او اضافة ( _ ) في نهاية كل سطر لتقسيم الجملة الى اسطر (في المرفقات برنامج يقوم بذلك )

- جعل الجملة بين علامتي تنصيص مزدوجتين

- اضافة امر تشغيل جملة سكول  docmd.RunSQL  في بداية الجملة

وهناك اضافات خارج الجملة وهي لمنع رسائل التحذير عند بدء تشغيل الكود واعادتها في نهاية التشغيل

وتتمثل في السطرين التاليين

DoCmd.SetWarnings False  قبل بداية الجملة

DoCmd.SetWarnings True   بعد انتهاء الجملة

 

لتظهر الجملة في النهاية داخل الكود هكذا :

DoCmd.SetWarnings False
Docmd.RunSQL"DELETE Tbl1.* FROM Tbl1"
DoCmd.SetWarnings True

هذا كل شيء ،،

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

 

 

 

 

 

 

 

تحويل SQL إلى VBA.rar

  • Like 3
قام بنشر

بارك الله فيك استاذى الفاضل

سوف اقوم بالدراسه جيدا ومحاوله الفهم والتطبيق

الى ان احاول التطلبيق

اتركك فى رعايه الله وحفظه

قام بنشر

السلام عليكم

تم التجربه على هذا الاستعلام

DoCmd.SetWarnings False
Docmd.RunSQL"strSql = "DELETE TPstoudnt.*, TPstoudnt.alsaf " & vbCrLf & _
"FROM TPstoudnt " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=6));""
DoCmd.SetWarnings True

هل هذكذا سليم ام لا

وهل يمكن وضع استعلانمات متتاليه

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

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

وبارك الله فيك اخى ابو خليل واعناك الله علينا وعلى استفسارتنا

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

نعم يمكن بحسب ترتيب الاستعلامات لديك

كما ارى بملفك الحاق وحذف وتحديث

ممكن ترتب تحديث للبيانات

ثم الحاق البيانات

ثم حذف البيانات

 

بالتوفيق

قام بنشر

الترتيب كما يلى 

اولا الحاق الصف السادس بجدول خاص 

ثانيا حذف الصف السادس من جدول الطلبه

ثالثا التحديث

بالترتيب 

من الخامس الى السادس

ومن الرابع الى الخامس

ومن الثالث الى الرابع

ومن الثانى الى الثالث

ومن الاول الى الثانى 

قام بنشر
Docmd.RunSQL"strSql = "DELETE TPstoudnt.*, TPstoudnt.alsaf " & vbCrLf & _
"FROM TPstoudnt " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=6));""

الاخطاء :

 "strSql =   هذه جملة زائدة تستخدم في مكان آخر

"   آخر علامة تنصيص مزدوجة  هي ايضا زائدة

اذا استبعدنا الزوائد سيصبح الكود هكذا :

Docmd.RunSQL "DELETE TPstoudnt.*, TPstoudnt.alsaf " & vbCrLf & _
"FROM TPstoudnt " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=6))"

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

اما السطر الخاص بمنع التحذيرات فيكتفى بواحد اول الجمل مهما كان عددها ولسطر الآخر في آخرها

  • Like 1
قام بنشر

تم الانتهاء من الكود التالى

ولكن تظهر بعض الاخطاء


DoCmd.SetWarnings False
 docmd.RunSQL"INSERT INTO TPstoudntE ( id, RakamKomy, ForeName, Father, Grandfathername, FamilyName, csles, alsaf, elqyed, ELEDARH, elohafza, school, dyana, activ1, activ2, Mother_name, elryada, Phone_number_Father, jopfathr, School_fees, email, el7alat5asa, mol7zat_a5saey, ahoayat, o5ra, mo7awal_in, mo7awal_in2, othredarh, othrsvhool, almo7afza, detalta7wyl, photo, datalaltak, 7alahsa7yaa, DISEASE, Blood_virtue, Specials_disease, address, eqyd_dat, حقل1 ) " & vbCrLf & _
"SELECT TPstoudnt.id, TPstoudnt.RakamKomy, TPstoudnt.ForeName, TPstoudnt.Father, TPstoudnt.Grandfathername, TPstoudnt.FamilyName, TPstoudnt.csles, TPstoudnt.alsaf, TPstoudnt.elqyed, TPstoudnt.ELEDARH, TPstoudnt.elohafza, TPstoudnt.school, TPstoudnt.dyana, TPstoudnt.activ1, TPstoudnt.activ2, TPstoudnt.Mother_name, TPstoudnt.elryada, TPstoudnt.Phone_number_Father, TPstoudnt.jopfathr, TPstoudnt.School_fees, TPstoudnt.email, TPstoudnt.el7alat5asa, TPstoudnt.mol7zat_a5saey, TPstoudnt.ahoayat, TPstoudnt.o5ra, TPstoudnt.mo7awal_in, TPstoudnt.mo7awal_in2, TPstoudnt.othredarh, TPstoudnt.othrsvhool, TPstoudnt.almo7afza, TPstoudnt.detalta7wyl, TPstoudnt.photo, TPstoudnt.datalaltak, TPstoudnt.[7alahsa7yaa], TPstoudnt.DISEASE, TPstoudnt.Blood_virtue, TPstoudnt.Specials_disease, TPstoudnt.address, TPstoudnt.eqyd_dat, TPstoudnt.حقل1 " & vbCrLf & _
"FROM TPstoudnt " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=6));"
 docmd.RunSQL"DELETE TPstoudnt.*, TPstoudnt.alsaf " & vbCrLf & _
"FROM TPstoudnt " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=6));"
docmd.RunSQL"UPDATE TPstoudnt SET TPstoudnt.alsaf = 6 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=5));"
docmd.RunSQL"UPDATE TPstoudnt SET TPstoudnt.alsaf = 5 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=4));"
docmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 4 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=3));"
docmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 3 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=2));"
docmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 2 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=1));"
DoCmd.SetWarnings True

قام بنشر

Private Sub zer1_Click()

Beep
If MsgBox("ÓæÝ íÊã ÊÑÍíá ÇáØáÇÈ" & vbCrLf & _
    "åá ÇäÊ ãÊÃßÏ ãä ÊäÝíÐ ÇáÃãÑ .", _
     vbMsgBoxRtlReading + vbMsgBoxRight + vbExclamation + vbYesNo, _
    "ÊÑÍíá ÇáØáÇÈ") = vbYes Then
    DoCmd.SetWarnings False

DoCmd.SetWarnings False
 DoCmd.RunSQL "INSERT INTO TPstoudntE ( id, RakamKomy, ForeName, Father, Grandfathername, FamilyName, csles, alsaf, elqyed, ELEDARH, elohafza, school, dyana, activ1, activ2, Mother_name, elryada, Phone_number_Father, jopfathr, School_fees, email, el7alat5asa, mol7zat_a5saey, ahoayat, o5ra, mo7awal_in, mo7awal_in2, othredarh, othrsvhool, almo7afza, detalta7wyl, photo, datalaltak, 7alahsa7yaa, DISEASE, Blood_virtue, Specials_disease, address, eqyd_dat, ???1 ) " & vbCrLf & _
"SELECT TPstoudnt.id, TPstoudnt.RakamKomy, TPstoudnt.ForeName, TPstoudnt.Father, TPstoudnt.Grandfathername, TPstoudnt.FamilyName, TPstoudnt.csles, TPstoudnt.alsaf, TPstoudnt.elqyed, TPstoudnt.ELEDARH, TPstoudnt.elohafza, TPstoudnt.school, TPstoudnt.dyana, TPstoudnt.activ1, TPstoudnt.activ2, TPstoudnt.Mother_name, TPstoudnt.elryada, TPstoudnt.Phone_number_Father, TPstoudnt.jopfathr, TPstoudnt.School_fees, TPstoudnt.email, TPstoudnt.el7alat5asa, TPstoudnt.mol7zat_a5saey, TPstoudnt.ahoayat, TPstoudnt.o5ra, TPstoudnt.mo7awal_in, TPstoudnt.mo7awal_in2, TPstoudnt.othredarh, TPstoudnt.othrsvhool, TPstoudnt.almo7afza, TPstoudnt.detalta7wyl, TPstoudnt.photo, TPstoudnt.datalaltak, TPstoudnt.[7alahsa7yaa], TPstoudnt.DISEASE, TPstoudnt.Blood_virtue, TPstoudnt.Specials_disease, TPstoudnt.address, TPstoudnt.eqyd_dat, TPstoudnt.???1 " & vbCrLf & _
"FROM TPstoudnt " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=6));"
 DoCmd.RunSQL "DELETE TPstoudnt.*, TPstoudnt.alsaf " & vbCrLf & _
"FROM TPstoudnt " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=6));"
DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 6 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=5));"
DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 5 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=4));"
DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 4 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=3));"
DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 3 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=2));"
DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 2 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=1));"
DoCmd.SetWarnings True

DoCmd.SetWarnings True
MsgBox "Êã"
End If
End Sub

قام بنشر

اتفضل اخى ابو ادم

Private Sub zer1_Click()

Beep
If MsgBox("??? ?E? E???? C???CE" & vbCrLf & _
    "?? C?E ?E??I ?? E???? C???? .", _
     vbMsgBoxRtlReading + vbMsgBoxRight + vbExclamation + vbYesNo, _
    "E???? C???CE") = vbYes Then
  

DoCmd.SetWarnings False
 DoCmd.RunSQL "INSERT INTO TPstoudntE ( id, RakamKomy, ForeName, Father, Grandfathername, FamilyName, csles, alsaf, elqyed, ELEDARH, elohafza, school, dyana, activ1, activ2, Mother_name, elryada, Phone_number_Father, jopfathr, School_fees, email, el7alat5asa, mol7zat_a5saey, ahoayat, o5ra, mo7awal_in, mo7awal_in2, othredarh, othrsvhool, almo7afza, detalta7wyl, photo, datalaltak, 7alahsa7yaa, DISEASE, Blood_virtue, Specials_disease, address, eqyd_dat, ÍÞá1 ) " & vbCrLf & _
"SELECT TPstoudnt.id, TPstoudnt.RakamKomy, TPstoudnt.ForeName, TPstoudnt.Father, TPstoudnt.Grandfathername, TPstoudnt.FamilyName, TPstoudnt.csles, TPstoudnt.alsaf, TPstoudnt.elqyed, TPstoudnt.ELEDARH, TPstoudnt.elohafza, TPstoudnt.school, TPstoudnt.dyana, TPstoudnt.activ1, TPstoudnt.activ2, TPstoudnt.Mother_name, TPstoudnt.elryada, TPstoudnt.Phone_number_Father, TPstoudnt.jopfathr, TPstoudnt.School_fees, TPstoudnt.email, TPstoudnt.el7alat5asa, TPstoudnt.mol7zat_a5saey, TPstoudnt.ahoayat, TPstoudnt.o5ra, TPstoudnt.mo7awal_in, TPstoudnt.mo7awal_in2, TPstoudnt.othredarh, TPstoudnt.othrsvhool, TPstoudnt.almo7afza, TPstoudnt.detalta7wyl, TPstoudnt.photo, TPstoudnt.datalaltak, TPstoudnt.[7alahsa7yaa], TPstoudnt.DISEASE, TPstoudnt.Blood_virtue, TPstoudnt.Specials_disease, TPstoudnt.address, TPstoudnt.eqyd_dat, TPstoudnt.ÍÞá1 " & vbCrLf & _
"FROM TPstoudnt " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=6));"
 
 DoCmd.RunSQL "DELETE TPstoudnt.*, TPstoudnt.alsaf " & vbCrLf & _
"FROM TPstoudnt " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=6));"

DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 6 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=5))"

DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 5 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=4))"

DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 4 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=3))"

DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 3 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=2))"

DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 2 " & vbCrLf & _
"WHERE (((TPstoudnt.alsaf)=1))"


DoCmd.SetWarnings True
MsgBox "E?"
End If
  • 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