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

طريقة تحويل الاستعلام الاجرائي الى جملة برمجية داخل الوحدة النمطية


ابوخليل

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

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

الاستعلام الإجرائي هو استعلام يُجري تغييرات على العديد من السجلات أو ينقلها في عملية واحدة فقط .
توجد أربعة أنواع من الاستعلامات الإجرائية: حذف وتحديث وإلحاقي وتكوين جداول.
 
نقوم بتحويل الاستعلام الاجرائي الى جملة 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