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

كيفية ادراج كود فى حدث معين لاكثر من نموذج برمجيا؟

مغلقمُجاب
بدأه very في 24 يناير 2013 · 14 رد · 3,009 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

 

وكيفية تصدير نماذج او تقارير او اكواد الى قاعدة بيانات اخرى؟

 

هذا مثلما يحدث فى برنامج

AccessMaster 2000-2010

AccessMaster2000-2010.rar

من يعرف ان يعمل حسنا و لا يعمل فذلك خطية له.(يعقوب 4: 17)

#2

up

من يعرف ان يعمل حسنا و لا يعمل فذلك خطية له.(يعقوب 4: 17)

#3

up

من يعرف ان يعمل حسنا و لا يعمل فذلك خطية له.(يعقوب 4: 17)

#4

نفسي اعمل تمت الاجابة

من يعرف ان يعمل حسنا و لا يعمل فذلك خطية له.(يعقوب 4: 17)

#5

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

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

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

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

أما عن تصدير النماذج والتقارير فابحث أيضا في المنتدى عن ذلك

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

وشكرا

#6

بارك الله بك اخي عصام عبود 

على المشاركة

 

ربما يود صاحب السؤال عمل وحدة نمطية جاهزة تضم جميع الأكواد البرمجية وما عليه سوى استدعاء الحدث 

 

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

 

 

Option Compare Database
Option Explicit
'إغلاق النموذج
Public Sub run_close()
On Error GoTo Err_run_close
DoCmd.close
Exit_run_close:
        Exit Sub
Err_run_close:
        MsgBox Err.description
        Resume Exit_run_close
End Sub
'السجل التالي
Public Sub run_next()
On Error GoTo Err_run_next
 
        DoCmd.GoToRecord , , acNext
Exit_run_next:
        Exit Sub
Err_run_next:
Beep
Resume Exit_run_next
End Sub
'السجل الأخير
Public Sub run_last()
On Error GoTo Err_run_last
 
        DoCmd.GoToRecord , , acLast
Exit_run_last:
        Exit Sub
Err_run_last:
        Beep
        Resume Exit_run_last
End Sub
'حذف سجل
Public Sub run_del()
On Error GoTo Err_run_del
 
        DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
        DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_run_del:
        Exit Sub
Err_run_del:
        MsgBox Err.description
        Resume Exit_run_del
End Sub
'فتح نموذج
'form هو وسيط يشير إلى اسم النموذج المراد فتحه
Public Sub run_open(Form As String)
On Error GoTo Err_run_open
        Dim stLinkCriteria As String
        DoCmd.OpenForm Form, , , stLinkCriteria
Exit_run_open:
        Exit Sub
Err_run_open:
        MsgBox Err.description
        Resume Exit_run_open
End Sub
'إضافة سجل
'start هو وسيط يشير إلى عنصر التحكم المراد الانتقال إليه عند بداية إدخال السجل
Public Sub run_add(start As String)
On Error GoTo Err_run_add
 
        DoCmd.GoToRecord , , acNewRec
DoCmd.GoToControl start
Exit_run_add:
        Exit Sub
Err_run_add:
        MsgBox Err.description
        Resume Exit_run_add
End Sub
'السجل السابق
Public Sub run_previous()
On Error GoTo Err_run_Previous
 
        DoCmd.GoToRecord , , acPrevious
Exit_run_Previous:
        Exit Sub
Err_run_Previous:
Beep
Resume Exit_run_Previous
End Sub
'لتحديث بيانات النموذج
Public Sub run_update()
On Error GoTo Err_run_update
 
        DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_run_update:
        Exit Sub
Err_run_update:
        MsgBox Err.description
        Resume Exit_run_update
End Sub
'معاينة تقرير
Public Sub open_report(report As String)
On Error GoTo Err_open_report
        DoCmd.openreport report, acPreview
Exit_open_report:
        Exit Sub
Err_open_report:
        MsgBox Err.description
        Resume Exit_open_report
End Sub
'طباعة تقرير
Public Sub print_report(report As String)
On Error GoTo Err_print_report
        DoCmd.openreport report, acNormal
Exit_print_report:
        Exit Sub
Err_print_report:
        MsgBox Err.description
        Resume Exit_print_report
End Sub
'تراجع
Public Sub run_undo()
On Error GoTo Err_run_undo
 
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Exit_run_undo:
        Exit Sub
Err_run_undo:
Beep
        Resume Exit_run_undo
 
End Sub
'السجل الأول
Public Sub run_first()
On Error GoTo Err_run_first
 
        DoCmd.GoToRecord , , acFirst
Exit_run_first:
        Exit Sub
Err_run_first:
        Beep
        Resume Exit_run_first
End Sub

تم تعديل هذه المشاركة بواسطة zahrah في 16 فبراير 2013 في 12:10

1
#7

اولا شكرا لردكم وتعبكم

سؤالى لم يفهم جيدا هذا ليس المطلووووووب

استاذتى زهرة

 

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

هذا مثلما يحدث فى برنامج

AccessMaster 2000-2010

 

اتمنى يكون سؤالى واضح

من يعرف ان يعمل حسنا و لا يعمل فذلك خطية له.(يعقوب 4: 17)

#8

استاذ فيري السر بيكمن في دالة باسم

Application.VBE.CodePanes

ما توصلت له انه لو كتبت مثلا

msgbox Application.VBE.CodePanes.Count

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

ولو اردت تغيير اي سطر من سطور المديول ستكتب

Application.VBE.CodePanes(1).CodeModule.ReplaceLine 2, "Write here what you want"

حيث ستغيير رقم 1 وهو رقم المديول المراد الكتابة به .. ورقم 2 هو رقم السطر ثم أكتب الكود الذي ترغب به ..

 

يا رب يكون هذا افادك

#9

الصراحة مش فاهم اللى انت بتتكلم فية

 

بس انا عايز اوصل للاتى

 

اكتب داخل حدث عند التحميل استدعاء دالة (لحيات المستخدم مثلا)

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

كل هذا يحدث برمجيا

 

هذا يحدث من خلال برنامج

AccessMaster 2000-2010

عندما تحدد اختيار اضافات اخرى ===> وتثبيت نظام صلحيات المستخدمين  يضع البرنامج داخل قاعدة البيانات المختارة داخل كل نموذج فىى حدث عند الفتح دالة استدعاء صلحيات المستخدمين

 

اريد معرفة كيف يتم ذلك برمجيا

من يعرف ان يعمل حسنا و لا يعمل فذلك خطية له.(يعقوب 4: 17)

#10

يا أخي الكريم ما أوضحته الدكتورة زهرة فيه الدواء والشفاء بإذن الله

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

#11

أرفق مثالك لكي يتم التعديل عليه

84CJO.gif

#12
very كتب:

الصراحة مش فاهم اللى انت بتتكلم فية

 

بس انا عايز اوصل للاتى

 

اكتب داخل حدث عند التحميل استدعاء دالة (لحيات المستخدم مثلا)

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

كل هذا يحدث برمجيا

 

هذا يحدث من خلال برنامج

AccessMaster 2000-2010

عندما تحدد اختيار اضافات اخرى ===> وتثبيت نظام صلحيات المستخدمين  يضع البرنامج داخل قاعدة البيانات المختارة داخل كل نموذج فىى حدث عند الفتح دالة استدعاء صلحيات المستخدمين

 

اريد معرفة كيف يتم ذلك برمجيا

 

 

اخي الكريم

هل من الممكن تكتب لنا الأكواد التي تريدها في حدث عند الفتح للنماذج !!!!!

والتي تريد ادارجها بالكود البرمجي لجميع النماذج الخاصة بك

#13
zahrah كتب:

اخي الكريم

هل من الممكن تكتب لنا الأكواد التي تريدها في حدث عند الفتح للنماذج !!!!!

والتي تريد ادارجها بالكود البرمجي لجميع النماذج الخاصة بك

Private Sub Form_Load()

Call allaw([Form])

End Sub

من يعرف ان يعمل حسنا و لا يعمل فذلك خطية له.(يعقوب 4: 17)

#14 أفضل إجابة

تفضل اخي الكريم

 

تم عمل هذا النموذج خصيصا لك

 

انتبه معي الله يبارك فيك للشرح

 

1. ادراج الكود في حدث عند التحميل لكل النماذج التي في قاعدة البيانات ( حتى لو وصلت الى  32,768  نموذج )  عدى نموذج frmADD 

 

 

Private Sub Form_Load()Call allaw([Form])End Sub
 
2. سوف نستخدم هذا النموذج  frmADD ليقوم بإدراج كود حدث عند التحميل لكافة النماذج
 
post-15367-0-78914300-1361091801_thumb.g
 
3. هذا النموذج يحتوي على مربع قائمة  List2  بها جميع اسماء نماذج القاعدة عدى النموذج frmADD لأنه هو المستخدم ويوجد به الكود التالي
 
Private Sub CmdADD_Click()
On Error Resume Next
Dim frm1 As Form
Dim mdl1 As Module
Dim x As Integer
Dim i As Integer
 
For i = 0 To List2.ListCount - 1
DoCmd.OpenForm List2.ItemData(i), acDesign
Set frm1 = Forms(List2.ItemData(i))
Set mdl1 = Forms(List2.ItemData(i)).Module
x = mdl1.CountOfLines
mdl1.InsertLines x + 1, "Private Sub Form_Load()"
mdl1.InsertLines x + 2, "    Call allaw([Form])"
mdl1.InsertLines x + 3, "End Sub"
DoCmd.Close acForm, List2.ItemData(i), acSaveYes
Next
 
End Sub
 
هذا الكود يقوم بعمل دوران على جميع النماذج ويتم ادراج كود حدث عند التحميل بها
 
post-15367-0-29070100-1361092631_thumb.g
 
 
post-15367-0-41193200-1361092852_thumb.g
 
 
 
اذا تمت الإجابه على السؤال فلا تنسى الضغط على ( أفضل إجابة )
 
 
بالتوفيق
 

تم تعديل هذه المشاركة بواسطة zahrah في 17 فبراير 2013 في 12:34

3
#15

ما شاء الله.........عمل رائع

 

بارك الله فيك يا زهرة النتدى

84CJO.gif

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

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

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

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

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

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