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

مساعدة في وضع جميع الأوامر الاعتيادية في وحدة نمطية

بدأه Cha3iR في 5 سبتمبر 2012 · 7 رد · 1,002 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

جميعا نعلم أهمية ومدى فعالية الوحدات النمطية في عمل قواعد البيانات

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

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

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

ولكم مني جزيل الشكر والتقدير ودعوة صدق في ظهر الغيب

#2

مثلا عندما أحاول أن أضع هذا الكود في وحدة نمطية

DoCmd.GoToRecord , , acNewRec
Dim Ctl As Control
  For Each Ctl In Me.Controls
     If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Or Ctl.ControlType = acCheckBox Then
        Ctl.Locked = False
     End If
 Next Ctl
N°.SetFocus

تطلع رسالة الخطأ التالية

Wcw5U-u5G5_366014600.jpg

#3

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

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

Dim l
Dim Passwd

Private Sub AdresseDeMessagerie_Exit(Cancel As Integer)
If Not (Me.AdresseDeMessagerie Like "*" & "@" & "*.*") Then
l = DLookup("[language]", "[language]")
 If l = "français" Then
     MsgBox ("S'il vous plaît assurez-vous que le courriel soit réel."), , "Gym Management"
     Me.AdresseDeMessagerie = Null
          If IsNull(Me.AdresseDeMessagerie) Then
        SendKeys "+{TAB}"
        End If
     Else
     MsgBox ("ÇáãÑÌæ ÇáÊÃßÏ ãä ÅÐÎÇá ÇáÈÑíÏ ÇáÇáßÊÑæäí ÈÇáÕíÇÛÉ ÇáÓáíãÉ"), , "Gym Management"
     Me.AdresseDeMessagerie = Null
          If IsNull(Me.AdresseDeMessagerie) Then
        SendKeys "+{TAB}"
        End If
 End If
End If
End Sub

Private Sub Box79_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image75.Visible = False
    Image82.Visible = False
    Image83.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Command104_Click()
DoCmd.GoToRecord , , acNewRec
Dim Ctl As Control
  For Each Ctl In Me.Controls
     If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Or Ctl.ControlType = acCheckBox Then
        Ctl.Locked = False
     End If
 Next Ctl
N°.SetFocus
End Sub

Private Sub Command110_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image75.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Command111_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image82.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Command112_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image83.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Command115_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image84.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Command116_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image86.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Command117_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image87.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Command118_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image88.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Command119_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image89.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Command123_Click()
Dim Ctl As Control
  For Each Ctl In Me.Controls
     If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Or Ctl.ControlType = acCheckBox Then
        Ctl.Locked = False
     End If
 Next Ctl
 SearchBox.SetFocus
End Sub

Private Sub Command90_Click()
On Error GoTo Err_Image43_Click


    DoCmd.GoToRecord , , acFirst

Exit_Image43_Click:
    Exit Sub

Err_Image43_Click:
l = DLookup("[language]", "[language]")
If l = "français" Then
    MsgBox "Impossible d'atteindre l'enregistrement spécifié.", , "Gym Management"
Else
    MsgBox "äåÇíÉ ÇáÓÌáÇÊ ÇáãÎÊÇÑÉ", , "Gym Management"
End If
    Resume Exit_Image43_Click
End Sub

Private Sub Command90_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 1 Then
    Image82.Visible = True
    Beep
    Me![stp] = 0
End If
End Sub

Private Sub Command91_Click()
Dim Ctl As Control
  For Each Ctl In Me.Controls
     If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Or Ctl.ControlType = acCheckBox Then
        Ctl.Locked = False
     End If
 Next Ctl
End Sub

Private Sub Command91_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 1 Then
    Image83.Visible = True
    Beep
    Me![stp] = 0
End If
End Sub

Private Sub Command92_Click()
On Error GoTo Err_Image45_Click


    DoCmd.GoToRecord , , acPrevious

Exit_Image45_Click:
    Exit Sub

Err_Image45_Click:
l = DLookup("[language]", "[language]")
If l = "français" Then
    MsgBox "Impossible d'atteindre l'enregistrement spécifié.", , "Gym Management"
Else
    MsgBox "äåÇíÉ ÇáÓÌáÇÊ ÇáãÎÊÇÑÉ", , "Gym Management"
End If
    Resume Exit_Image45_Click
End Sub

Private Sub Command92_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 1 Then
    Image84.Visible = True
    Beep
    Me![stp] = 0
End If
End Sub

Private Sub Command93_Click()
DoCmd.Close , , acSaveYes
End Sub

Private Sub Command93_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 1 Then
    Image85.Visible = True
    Beep
    Me![stp] = 0
End If
End Sub

Private Sub Command94_Click()
On Error GoTo Err_Image47_Click


    DoCmd.GoToRecord , , acNext

Exit_Image47_Click:
    Exit Sub

Err_Image47_Click:
l = DLookup("[language]", "[language]")
If l = "français" Then
    MsgBox "Impossible d'atteindre l'enregistrement spécifié.", , "Gym Management"
Else
    MsgBox "äåÇíÉ ÇáÓÌáÇÊ ÇáãÎÊÇÑÉ", , "Gym Management"
End If
    Resume Exit_Image47_Click
End Sub

Private Sub Command94_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 1 Then
    Image86.Visible = True
    Beep
    Me![stp] = 0
End If
End Sub

Private Sub Command95_Click()
Dim l
l = DLookup("[language]", "[language]")
If IsNull(N°) Then
 If l = "français" Then
   MsgBox "Nécessaires pour remplir le champ - N° - les données requises.", vbOKOnly, "Khamraoui DataBase"
   N°.SetFocus
   Exit Sub
   Else
   MsgBox "áßí ÊÊãßä ãä ÇáÍÝÙ ÖÑæÑí ãáÁ ÓÌá 'ÑÞã ÇáÇäÎÑÇØ' ÈÇáÈíÇäÇÊ ÇáãØáæÈÉ", vbOKOnly, "Khamraoui DataBase"
   N°.SetFocus
   Exit Sub
  End If
 Exit Sub
 End If
 If IsNull(Nom) Then
  If l = "français" Then
   MsgBox "Nécessaires pour remplir le champ - Nom - les données requises.", vbOKOnly, "Khamraoui DataBase"
   Nom.SetFocus
   Exit Sub
   Else
   MsgBox "áßí ÊÊãßä ãä ÇáÍÝÙ ÖÑæÑí ãáÁ ÓÌá 'ÇáÇÓã ÇáßÇãá' ÈÇáÈíÇäÇÊ ÇáãØáæÈÉ", vbOKOnly, "Khamraoui DataBase"
   Nom.SetFocus
   Exit Sub
  End If
 Exit Sub
 End If
 If IsNull(DateN) Then
  If l = "français" Then
   MsgBox "Nécessaires pour remplir le champ - Date de naissance - les données requises.", vbOKOnly, "Khamraoui DataBase"
   DateN.SetFocus
   Exit Sub
   Else
   MsgBox "áßí ÊÊãßä ãä ÇáÍÝÙ ÖÑæÑí ãáÁ ÓÌá 'ÊÇÑíÎ ÇáÇÒÏíÇÏ' ÈÇáÈíÇäÇÊ ÇáãØáæÈÉ", vbOKOnly, "Khamraoui DataBase"
   DateN.SetFocus
   Exit Sub
  End If
 Exit Sub
 End If
 If IsNull(DateEntre) Then
  If l = "français" Then
   MsgBox "Nécessaires pour remplir le champ - Date de inscription - les données requises.", vbOKOnly, "Khamraoui DataBase"
   DateEntre.SetFocus
   Exit Sub
   Else
   MsgBox "áßí ÊÊãßä ãä ÇáÍÝÙ ÖÑæÑí ãáÁ ÓÌá 'ÊÇÑíÎ ÇáÇäÎÑÇØ' ÈÇáÈíÇäÇÊ ÇáãØáæÈÉ", vbOKOnly, "Khamraoui DataBase"
   DateEntre.SetFocus
   Exit Sub
  End If
 Exit Sub
 End If
 If IsNull(Adresse) Then
  If l = "français" Then
   MsgBox "Nécessaires pour remplir le champ - Adresse - les données requises.", vbOKOnly, "Khamraoui DataBase"
   Adresse.SetFocus
   Exit Sub
   Else
   MsgBox "áßí ÊÊãßä ãä ÇáÍÝÙ ÖÑæÑí ãáÁ ÓÌá 'ÇáÚäæÇä' ÈÇáÈíÇäÇÊ ÇáãØáæÈÉ", vbOKOnly, "Khamraoui DataBase"
   Adresse.SetFocus
   Exit Sub
  End If
 Exit Sub
 End If
End Sub

Private Sub Command95_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 1 Then
    Image87.Visible = True
    Beep
    Me![stp] = 0
End If
End Sub

Private Sub Command96_Click()
On Error GoTo Err_Image49_Click


    DoCmd.GoToRecord , , acLast

Exit_Image49_Click:
    Exit Sub

Err_Image49_Click:
    MsgBox "äåÇíÉ ÇáÓÌáÇÊ ÇáãÎÊÇÑÉ", , "Gym Management"
    Resume Exit_Image49_Click
End Sub

Private Sub Command96_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 1 Then
    Image88.Visible = True
    Beep
    Me![stp] = 0
End If
End Sub

Private Sub Command97_Click()
On Error GoTo Err_Image30_Click
l = DLookup("[language]", "[language]")
If l = "français" Then
  Passwd = InputBoxDK("Etes-vous sûr de vouloir supprimer cet enregistrement?", "Gym Management")
Else
  Passwd = InputBoxDK("åá ÃäÊ ãÊÃßÏ ãä ÑÛÈÊß áÍÏÝ åÐÇ ÇáÓÌá ¿", "Gym Management")
End If
  If Passwd = "khamraoui" Then

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Me.Requery
Exit_Image30_Click:
    Exit Sub

Err_Image30_Click:
    MsgBox Err.Description
    Resume Exit_Image30_Click
        End If
End Sub

Private Sub Command97_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 1 Then
    Image89.Visible = True
    Beep
    Me![stp] = 0
End If
End Sub

Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 0 Then
    Image85.Visible = False
    Me![stp] = 1
End If
End Sub

Private Sub Form_AfterDelConfirm(Status As Integer)
DoCmd.SetWarnings True
End Sub

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
DoCmd.SetWarnings False
End Sub

Private Sub Form_Current()
Dim Ctl As Control
  For Each Ctl In Me.Controls
     If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Or Ctl.ControlType = acCheckBox Then
        Ctl.Locked = True
     End If
 Next Ctl
If Me.Oui_No = -1 Then
Me.NPass.Enabled = True
Me.DateP.Enabled = True
Else
Me.NPass.Enabled = False
Me.DateP.Enabled = False
End If
If Me.Oui_No = 0 Then
Me.NPass.Enabled = False
Me.DateP.Enabled = False
Else
Me.NPass.Enabled = True
Me.DateP.Enabled = True
End If
End Sub

Private Sub Form_Open(Cancel As Integer)
Me![stp] = 0
Image75.Visible = True
DoCmd.GoToRecord , , acLast
Dim Ctl As Control
  For Each Ctl In Me.Controls
     If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Or Ctl.ControlType = acCheckBox Then
        Ctl.Locked = True
     End If
 Next Ctl
End Sub

Private Sub Form_Timer()
Me.Stime.Requery
End Sub

Private Sub OpenMain_Click()
DoCmd.GoToRecord , , acNewRec
Dim Ctl As Control
  For Each Ctl In Me.Controls
     If Ctl.ControlType = acTextBox Or Ctl.ControlType = acComboBox Or Ctl.ControlType = acCheckBox Then
        Ctl.Locked = False
     End If
 Next Ctl
N°.SetFocus
End Sub

Private Sub OpenMain_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me![stp] = 1 Then
    Image75.Visible = True
    Beep
    Me![stp] = 0
End If
End Sub

Private Sub Oui_No_Click()
If Me.Oui_No = -1 Then
Me.NPass.Enabled = True
Me.DateP.Enabled = True
NPass.SetFocus
Else
Me.NPass.Enabled = False
Me.DateP.Enabled = False
End If
If Me.Oui_No = 0 Then
Me.NPass.Enabled = False
Me.DateP.Enabled = False
Else
Me.NPass.Enabled = True
Me.DateP.Enabled = True
End If
End Sub

Private Sub Form_Load()
DoCmd.Maximize
End Sub

Private Sub N°_AfterUpdate()
Dim db As Database
Dim rst As Recordset
Dim CountNum, i As Long
Dim MsgNumbr, NewName As String

Set db = CurrentDb
NewName = [Forms]![Membres]![N°]
Set rst = db.OpenRecordset("Membres", dbOpenSnapshot)

CountNum = DCount("*", "Membres", "[N°]=[Forms]![Membres]![N°]")
If CountNum = 0 Then Exit Sub

With rst
    Do Until .EOF
    If rst!N° = NewName Then
    MsgNumbr = MsgNumbr & rst!Nom & "  "
    End If
    .MoveNext
    Loop
End With
Dim l
l = DLookup("[language]", "[language]")
 If l = "français" Then
   MsgBox "Désolé, cette spéciale numéro d'abonnement " & MsgNumbr & vbCrLf & vbCrLf & "Vous devez choisir un autre numéro.  " & vbCrLf, vbInformation + vbYes + vbDefaultButton, "Khamraoui DataBase"
   Me.N° = Null
   Exit Sub
   Else
   MsgBox "ÑÞã ÇáÇäÎÑÇØ åÐÇ ÎÇÕ ÈÜ" & MsgNumbr & vbCrLf & vbCrLf & ".             æÚáíß ÇÎÊíÇÑ ÑÞã ÂÎÑ  " & vbCrLf, vbInformation + vbYes + vbDefaultButton, "Khamraoui DataBase"
   Me.N° = Null
   DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
Exit Sub
End If

db.Close
End Sub

Private Sub N°_Exit(Cancel As Integer)
 If IsNull(Me.N°) Then
        SendKeys "+{TAB}"
        End If
End Sub

بعد محاولات عدة لم أنجح في بلوغ غايتي فأتمنى أن تفلح محاولتكم وتقدموا لي يد العون التي طالما كانت ممدودة

#4

هل من مساعدة ؟؟..

#5
Cha3iR كتب:

هل من مساعدة ؟؟..

أخي العزيز

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

بدلا من أن تجعل الوحة النمطية فويد أي بدون براميترز ضع لها براميتر سترينج (أي متغير حرفي) وعند إستدعاء الكود من داخل الفورم إرسل له إسم الفورم كتعويض عن البارميتر المطلوب واستخدم داخل الكود نفسه إسم المتغير الذي جعلته براميتر بدلا من لفظة me

تم تعديل هذه المشاركة بواسطة essam_abboud في 7 سبتمبر 2012 في 12:18

#6

أشكر لك أخي عصام عبود تفاعلك و حسن رغبتك في مد يعد العون بارك الله فيك

بخصوص مقترحك حاولت استيعابه لكن الظاهر أنه استعصى علي ذلك لو تتكرم وتجري التغييرات على الكود أو تتقدم ببعض التوضيحات

سأكون ممتن لك وشكرا

#7

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

أخى فى بداية الكود الخاص بك فى الوحدة النمطية ضع هذا الكود

Dim FRM As Form
Set FRM = Screen.ActiveForm

ثم عوض أو بدل كل كلمة Me فى الكود بـ الكلمة Frm

بالتوفيق

1
#8

تم الحل بارك الله فيك

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

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

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

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

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