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

فتح نموذج عند الضغط على زر معين في الكيبورد


إذهب إلى أفضل إجابة Solved by Shivan Rekany,

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

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

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

فهل من مشكلة في نماذج

 

If KeyCode = 100 And Shift = 0 Then 'الرقم100 يمثل رقم الزر 4 والرقم 0 يمثل رقم شفت
'DoCmd.Close
'عند الضغط على الرقم4من لوحة المفاتيح سوف يغلق النموذج

DoCmd.OpenForm "جدول البيع"

  
End If

 

مبيعات نسخة 2003 (2).zip

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

المشكلة ان الزر رقم 4 يقابله الرقم 52 وليس 100

استبدل الرقم  100  الموجود بالكود بالرقم 52

وإليك هدية ارقام  لوحة المفاتيح

ارقام لوحة المفاتيحKey ASCII Values.rar

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

مشاركة مع استاذي الحبيب @ابوخليل

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

ان الخاصية كي بريفيو للنموذج هو لا "نو" غيرها الى نعم "يس" 

او عند فتح النموذج اكتب
me.keypreview = yes
لكي يشتغل المفاتيح المختصرة

notoyes.PNG.9db2cb21f69252d88d5535100c369e99.PNG

 

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

23 ساعات مضت, ابوخليل said:

المشكلة ان الزر رقم 4 يقابله الرقم 52 وليس 100

استبدل الرقم  100  الموجود بالكود بالرقم 52

وإليك هدية ارقام  لوحة المفاتيح

ارقام لوحة المفاتيحKey ASCII Values.rar

 

19 ساعات مضت, Shivan Rekany said:

مشاركة مع استاذي الحبيب @ابوخليل

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

ان الخاصية كي بريفيو للنموذج هو لا "نو" غيرها الى نعم "يس" 

او عند فتح النموذج اكتب
me.keypreview = yes
لكي يشتغل المفاتيح المختصرة

اضافة الى ما قاله اساتذتى @ابوخليل و @Shivan Rekany  

ضع الكود فى حدث فى النموذج On Keydown حتى يشتغل الكود عند الضغط على الزر المطلوب ليصبح الكود بالشكل التالى 

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 52 And Shift = 0 Then 'الرقم 52 يمثل رقم الزر 4 والرقم 0 يمثل رقم شفت
'DoCmd.Close
'عند الضغط على الرقم  4   من لوحة المفاتيح سوف يغلق النموذج

DoCmd.Close

 

ولا تنسى ما قاله الاستاذ شيفان من تفعيل الكى بريفيو بالتوفيق


 

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

 

21 ساعات مضت, ابوخليل said:

المشكلة ان الزر رقم 4 يقابله الرقم 52 وليس 100

استبدل الرقم  100  الموجود بالكود بالرقم 52

وإليك هدية ارقام  لوحة المفاتيح

ارقام لوحة المفاتيحKey ASCII Values.rar

سلمت اياديكم اخواني و اساتذتي 

جاري التجريب 

و ساوافيكم بالنتيجة 

 

اخي ابو خليل قمت بتجربة الكود على  نماذج في قاعدة اخرى و اشتغل الكود 100% و على أساس  انة 100 هو رقم 4 

و كان معي برنامج بالاكسس نزلتة من المنتدى و كان يعطيني رقم ASCII 

و كنت في كل تجربة اجرب زر و كان شغال تماااام 

ولكن عندما اردت ان اطبقة على نظامي رفض التطبيق 

 

ساطبق ما قلتم لي و سأوافيكم بالنتيجة ان شاء الله 

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

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

بارك الله لكم جميعا

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

للتعرف على أكواد المفاتيح ascii & ceycode

وفتح نموذج عند الضغط على مفتاح معين

592d3ba6b2d26_openformbykeys.png.c35d7616255fedfbf4bee1755a22a1d2.png

open form by keys.rar

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

  • 2 weeks later...

اشكركم جميعا و العفو منكم على التاخير لاسباب خارجة عن ارادتي 

تم تطبيق ما تفضلتم بة و الحمد لله اشتغل 

لكن هناك سوال و ارجوا الا اكون قد ازعجتكم 


هل من الممكن عمل الكود على مستوى قاعدة البيانات بالكامل 

اي ان الكود يعمل في اي فورم دون الحاجة الى تكرار الكود في كل فورم

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

لا أعتقد أن هذا ممكن

فهذا الحدث موجود في النموذج فقط

ويجب تكراره في كل نموذج تريد فيه تنفيذ الكود

والله تعالى أعلى وأعلم

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

في ٢٩‏/٥‏/٢٠١٧ at 06:05, ابوخليل said:

ان الزر رقم 4 يقابله الرقم 52 وليس 100

حسب معلوماتي ان رقم 100 هو كو لرقم 4 في لوحة المفاتية الحسابية اي اللي في يمين الكيبورد

و رقم 52 هو كود لرقم 4 اللي فوق الحروف في لوحة المفاتيح 

هذا والله يعلم

الان, أ / محمد صالح said:

لا أعتقد أن هذا ممكن

بلى استاذي الحبيب ممكن

الان, رياض البرعي said:

هل من الممكن عمل الكود على مستوى قاعدة البيانات بالكامل

اتفضل اليك هذا فانكشن

اعمل كوبي باست في وحدة نمطية

Public Function AllowKeyCode(KeyCode As Integer, Shift As Integer) As Integer
    Select Case KeyCode
       Case 52
			' هنا اكتب اي امر تريد
      		DoCmd.OpenForm "ck", acNormal
       Case Else
			' وهنا اكتب اي امر تريد وتقدر تستمر اي تطول الكود حسب حاجتك
        	DoCmd.Close acForm, "فواتير"
    End Select
End Function

واكتب هذا في فورم عند كي داون اي ضغط على الازار

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = AllowKeyCode(52, Shift)
End Sub

لكن لا تنسى يجب ان يكون كي بريفيو لكل النموذج المستخدمة عليه الكود ان يكون = نعم

في ٢٩‏/٥‏/٢٠١٧ at 10:08, Shivan Rekany said:

او عند فتح النموذج اكتب
me.keypreview = yes

تقبل تحياتي

م.2000.شفان ريكاني

تم تعديل بواسطه Shivan Rekany
رابط هذا التعليق
شارك

3 دقائق مضت, Shivan Rekany said:

 

بلى استاذي الحبيب ممكن

اتفضل اليك هذا فانكشن

اعمل كوبي باست في وحدة نمطية


Public Function AllowKeyCode(KeyCode As Integer, Shift As Integer) As Integer
    Select Case KeyCode
       Case 52
			' هنا اكتب اي امر تريد
      		DoCmd.OpenForm "ck", acNormal
       Case Else
			' وهنا اكتب اي امر تريد وتقدر تستمر اي تطول الكود حسب حاجتك
        	DoCmd.Close acForm, "فواتير"
    End Select
End Function

واكتب هذا في فورم عند كي داون اي ضغط على الازار


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = AllowKeyCode(52, Shift)
End Sub

لكن لا تنسى يجب ان يكون كي بريفيو لكل النموذج المستخدمة عليه الكود ان يكون = نعم

تقبل تحياتي

هذا الكود يؤكد كلامي أخي شيفان

حيث ان حدث عند الضغط يخص النموذج

ولا يخص قاعدة البيانات ككل

متى يكون هذا ممكنا؟!

بدون وضع الكود الثاني في حدث عند الضغط

Form_keydown

والله تعالى اعلى واعلم

 

41 دقائق مضت, أ / محمد صالح said:

ويجب تكراره في كل نموذج تريد فيه تنفيذ الكود

 

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

الان, أ / محمد صالح said:

هذا الكود يؤكد كلامي أخي شيفان

حيث ان حدث عند الضغط يخص النموذج

ولا يخص قاعدة البيانات ككل

متى يكون هذا ممكنا؟!

بدون وضع الكود الثاني في حدث عند الضغط

استاذي الحبيب

نحن نتعلم منكم ونفتخر بكم

ما علمته انا في حياتي البرمجية هو

ان اي وحدات نمطية مثلهم كمثل هيكل ليس لديه روح 

وبواسطة نماذج والاستعلامات و ... الخ تقدر تعطيهم الروح

الان, أ / محمد صالح said:

بدون وضع الكود الثاني في حدث عند الضغط

وهناك انا معك لكن هذا حال لكل كثير من وحدات النمطية

والوحدة النمطية الاعلاه مثل كل الوحدات النمطية بيعمل عمله 

اي سيختصر لك الكود راح تكتبة مرة وتستخدمه الف مرة و مرة خاصتا اذا الكود يكون طويلا

هناك مثلا عملت زر واذا لا تعطي اي امر في حدث عند الضغط ما يعمل لك اي شيء في ذلك الحدث

لا اعرف هل فهمت قصدي ام لا

هذا والله يعلم

م.2001.شفان ريكاني

تم تعديل بواسطه Shivan Rekany
رابط هذا التعليق
شارك

اخي @Shivan Rekany عملت ما قلت علية كما في الكود

Public Function AllowKeyCode(KeyCode As Integer, Shift As Integer) As Integer
    Select Case KeyCode
       Case 52

DoCmd.OpenForm "جدول البيع"

  
            

       Case Else
           
            DoCmd.Close acForm, "فواتير"
    End Select
End Function

ولكن صارت كل الازرار تستجيب و عملت كذالك if كما في الكود و لكن لم تعمل ابدا فاين خطأي

Public Function AllowKeyCode(KeyCode As Integer, Shift As Integer) As Integer
    Select Case KeyCode
       Case 52
           
            
            If KeyCode = 100 And Shift = 0 Then 'ÇáÑÞã100 íãËá ÑÞã ÇáÒÑ 4 æÇáÑÞã 0 íãËá ÑÞã ÔÝÊ

DoCmd.OpenForm "جدول البيع"


  

          
           End If
'       Case Else
          

'            DoCmd.Close acForm, "فواتير"
    End Select
  
End Function


فانا اريد ان يكون الفورم الواحد فية اكثر من عملية مثل فتح السندات عند الضغط على زر 1
و فتح المشتريات بزر 2
و فتح التقارير كذلك بزر 3
و المعذرة الشديدة منكم

 

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

  • أفضل إجابة
الان, رياض البرعي said:

فانا اريد ان يكون الفورم الواحد فية اكثر من عملية مثل فتح السندات عند الضغط على زر 1
و فتح المشتريات بزر 2
و فتح التقارير كذلك بزر 3
و المعذرة الشديدة منكم

 

اتفضل

فقط غير في اسماء النماذج في الكود

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 49 Then
            DoCmd.OpenForm "جدول البيع", acNormal
        ElseIf KeyCode = 50 Then
            DoCmd.OpenForm "ركود", acNormal
        ElseIf KeyCode = 51 Then
            DoCmd.OpenReport "جدول الزبائن", acViewPreview
    End If
End Sub

Private Sub Form_Open(Cancel As Integer)
    Me.KeyPreview = True
End Sub

 

مبيعات نسخة 2003 (2) (1).zip

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

الان, رياض البرعي said:

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

اتفضل

اليك

Public Function AllowKeyCode(KeyCode As Integer, Shift As Integer) As Integer
    If KeyCode = 49 Then
            DoCmd.OpenForm "جدول البيع", acNormal
        ElseIf KeyCode = 50 Then
            DoCmd.OpenForm "ركود", acNormal
        ElseIf KeyCode = 51 Then
            DoCmd.OpenReport "جدول الزبائن", acViewPreview
    End If
End Function

وفي نموذج عند الضغط على الازرار في كل نماذج اللي تريد ان يعمل لك العملية فتح نماذج والتقارير  اكتب

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    KeyCode = AllowKeyCode(KeyCode, Shift)
End Sub

وعند فتح كل نموذج اللي تريد ان يعمل لك العملية

Private Sub Form_Open(Cancel As Integer)
    Me.KeyPreview = True
End Sub

واليك قاعدة بيانات بعد تعديل

 

مبيعات نسخة 2003 (2) (1).zip

  • Thanks 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