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

[شرح] اداة تحويل SQL الى VBA من برمجتي


SEMO.Pa3x

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

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

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

اقدم لكم اداة من برمجتي المتواضعة لتحويل اكواد الـ SQL الى VBA

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

وليس للأشخاص الذين يستخدمون الواجهة الرسومية للأكسس الخالية من الكود

ماهي فائدة الأداة ولماذا استخدمها؟

حسناً، لو كان لدينا جدول اسمة tbl_movementes يقوم بتسجيل جميع الحركات التي تحدث ( اضافة , تعديل , حذف )

image.png.f2ca45fc6e2f014244150448dff035e4.png

وهذا الجدول احتاجه في كثير من النماذج، فهل من المعقول ان اقوم بكتابة عبارة INSERT INTO في كل نموذج ؟

اكيد لا، سأقوم بكتابة Sub واقوم بإستدعاءه كل مرة اريد ان اضيف بها بيانات الى الجدول

واختصاراً للوقت الطويل والأخطاء التي ربما ستحدث اثناء عملية التحويل، قمت بكتابة اداة تقوم بهذا الغرض

الاداة وضيفتها فقط ( Insert , Update )

 

صورة الاداة:

image.png.3921982f50f6d30e8acaa1c52acdc3d8.png

 

لنطبق على عملية اضافة بيانات جديد:

 

1- قم بفتح image.png.09998a21023cfc239d9abcc11c76d37c.png

 

2- ثم قم بأختيار الجدول الذي تريده، وقم بإدراج جميع الحقول، كما في الصورة

 

image.png.a6f58715775dd434f24c1cb16554c6f7.png

 

3- من النافذة العليا اختر النافذة تصميم وقم بتعديل نوع الاستعلام الى استعلام إلحاق

 

image.png.06342bfa4900a7b7fccffccf6ef30b95.png

 

وثم بإختيار نفس الجدول لكي يقوم بألحاق البيانات به.

الآن لنرى النتيجة

 

image.png.46dc17af98d234c1cca2028cdad6ca5d.png

 

3- الان قم بعرض اكواد الـ SQL

 

image.png.849bc47ca4d6bbc3027abee9b30c6921.png

 

4- قم بنسخ جميع الاكواد كما في الصورة الاتية

 

image.png.cbb9f05c89800af9d1f0930fbb91d89b.png

 

5- الان قم بفتح الاداة، واختر النوع Insert، ثم الصق اكواد الـ SQL في مربع النص SQL

 

image.png.9a46c976f245d09c90320ec0ca436579.png

 

6- قبل عملية التحويل قم بإلغاء الأعمدة التي لا ترغب بها من القائمة على اليمين ( Column Remove )

مثلا سأقوم بألغاء العمود IsDeleted وذلك بالضغط على اسم العمود

image.png.dcd725529a73986643523111eb2d49e9.png

رسالة تخبرك بتأكيد عملية حذف العمود

7- اضغط على الزر Convert

 

image.png.3da3ae356befe3ff98c7624c106d14f2.png

 

8- تم تحويل الكود ونسخه، الان قم بلصقه في الأكسس واستخدمه

 

image.png.373f0014a19a6410d9dc2e27be23b680.png

 

الاستخدام

image.png.b6d147cba28900c7a6cc5cf1df06c56a.png

 

النتيجة، تم ادراج البيانات بالجدول

image.png.7cf5190254304a162344a944dd992392.png

 

لنطبق على عملية تعديل البيانات:

نفس الخطوات القديمة فقط من الاداة اختر نوع الاستعلام Update

من المعروف ان عملية تعديل البيانات تتطلب معيار للتعديل WHERE COLUMN NAME = Number

لذلك عندما نقوم بإنشاء الاستعلام نقوم بوضع عمود المعيار اخر عمود في الاستعلام هكذا


image.png.8e7dd3a2f9f0a02eab0187512133a588.png

 

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

تمت البرمجة حصرياً لمنتدى أوفسينا، اهداء الى معلمي العزيز @jjafferr

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

 

 

SQL-VBA.rar

تم تعديل بواسطه SEMO.Pa3x
  • Like 9
  • Thanks 3
رابط هذا التعليق
شارك

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

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

لكن لو كان الالحاق بجدول ثاني تظهر اخطاء

مثال : هذه جملة Sql منقولة من استعلام الحاق موجود بالفعل

INSERT INTO tblOperations ( IdAgents, XDate, X13 )
SELECT tblAgents.IdAgents, Date() AS Xdate, tblAgents.MonthlyPayment
FROM tblAgents
WHERE (((tblAgents.MonthlyPayment)<>0) AND ((tblAgents.IdAgentsType)=1));

وهذه النتيجة من البرنامج

Public Sub Insert_tblOperations ( IdAgents, XDate, X13 )
SELECT tblAgents.IdAgents, Date() AS Xdate, tblAgents.MonthlyPayment
FROM tblAgents
WHERE (((tblAgents.MonthlyPayment)<>0) AND ((tblAgents.IdAgentsType)=LogedType (IdAgents, XDate, X13 ) 
Dim mySQL As String
    mySQL = "INSERT INTO tblOperations ( IdAgents, XDate, X13 )
SELECT tblAgents.IdAgents, Date() AS Xdate, tblAgents.MonthlyPayment
FROM tblAgents
WHERE (((tblAgents.MonthlyPayment)<>0) AND ((tblAgents.IdAgentsType)=LogedType "
    mySQL = mySQL & "(IdAgents, XDate, X13)"
    mySQL = mySQL & " VALUES "
    mySQL = mySQL & "('" & IdAgents & "','" & XDate & "','" & X13 & "')"
    CurrentDb.Execute mySQL
End Sub

تحياتي

رابط هذا التعليق
شارك

2 ساعات مضت, محمد أبوعبدالله said:

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

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

لكن لو كان الالحاق بجدول ثاني تظهر اخطاء

مثال : هذه جملة Sql منقولة من استعلام الحاق موجود بالفعل

INSERT INTO tblOperations ( IdAgents, XDate, X13 )
SELECT tblAgents.IdAgents, Date() AS Xdate, tblAgents.MonthlyPayment
FROM tblAgents
WHERE (((tblAgents.MonthlyPayment)<>0) AND ((tblAgents.IdAgentsType)=1));

وهذه النتيجة من البرنامج

Public Sub Insert_tblOperations ( IdAgents, XDate, X13 )
SELECT tblAgents.IdAgents, Date() AS Xdate, tblAgents.MonthlyPayment
FROM tblAgents
WHERE (((tblAgents.MonthlyPayment)<>0) AND ((tblAgents.IdAgentsType)=LogedType (IdAgents, XDate, X13 ) 
Dim mySQL As String
    mySQL = "INSERT INTO tblOperations ( IdAgents, XDate, X13 )
SELECT tblAgents.IdAgents, Date() AS Xdate, tblAgents.MonthlyPayment
FROM tblAgents
WHERE (((tblAgents.MonthlyPayment)<>0) AND ((tblAgents.IdAgentsType)=LogedType "
    mySQL = mySQL & "(IdAgents, XDate, X13)"
    mySQL = mySQL & " VALUES "
    mySQL = mySQL & "('" & IdAgents & "','" & XDate & "','" & X13 & "')"
    CurrentDb.Execute mySQL
End Sub

تحياتي

اهلاً عزيزي..

انا لم اقل انه بأمكانك الحاق البيانات بجدول ثاني..

كنت اتكلم عن ادراج البيانات لكل جدول على حدة على شكل Sub لتقوم بإستدعاءه

  • Like 2
رابط هذا التعليق
شارك

19 ساعات مضت, SEMO.Pa3x said:

اهلاً عزيزي..

انا لم اقل انه بأمكانك الحاق البيانات بجدول ثاني..

كنت اتكلم عن ادراج البيانات لكل جدول على حدة على شكل Sub لتقوم بإستدعاءه

اولا باشكرك على هذا المجهود الرئع 

بارك الله فيك

هل يمكننا ان تجعله يعمل ايضا مع الاستعلامات الالحاقيه

رابط هذا التعليق
شارك

20 ساعات مضت, عمر ضاحى said:

اولا باشكرك على هذا المجهود الرئع 

بارك الله فيك

هل يمكننا ان تجعله يعمل ايضا مع الاستعلامات الالحاقيه

ان شاء الله، ترقب النسخة الثانية.

  • Like 2
رابط هذا التعليق
شارك

  • 7 months later...

كلمة مبدع قليلة جدا جدا ..

بارك الله في علمك و نفع به العباد

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

  • Like 1
رابط هذا التعليق
شارك

شكرا شكرا شكرا

اداة تعمل على تسهيل و تذييل اكواد الاضافة و التحديث و الحذف

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

  • Like 1
رابط هذا التعليق
شارك

  • 1 year later...

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.

×
×
  • اضف...

Important Information