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

سؤال يحتاج لتفكير


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

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

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

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

وشكرا

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

أخي الكريم

حسب فهمي لموضوعك أعتقد أن الحل كالتالي

Private Sub Form_Load()
Const RecordsPerPage As Byte = 20
Dim DestinationRecord As Byte, RecordsCount As Byte

RecordsCount = DCount("*", Me.RecordSource)
If RecordsCount >= RecordsPerPage Then
DestinationRecord = 10
Else
DestinationRecord = RecordsCount / 2
End If
DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, DestinationRecord
End Sub

ملحوظة : يمكنك تحديد أكبر عدد من الصفوف يمكن عرضه في الصفحة الواحدة حسب حجم نموذجك و الذي قدرته أنا ب 20 ... يمكنك تغييره من الكود

بالتوفيق إن شاء الله

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

حل جميل من أخي Dream_Works ،

أخي محسن سرحان ، بإمكانك أيضا استغلال فكرة الكود الذي زودت يه وعمل الآتي :

اقتراحي أن يتم فتح النموذج في المكان الذي أغلق فيه ...

في حدث عند الخروج من النموذج الذي يعرض لك datasheet تقوم بتخزين مؤشر السجل الحالي في جدول ما (جدول تعريفات أو ما شابه)

في حدث عند التحميل للنموذج تسترجع قيمة المؤشر وتفتح النموذج على ذلك السجل

ستبدو النتيجة وكأنك لم تغلق النموذج :biggrin2:

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

اخى وحبيبي Dream_Works

يبدو اننى لم اوضح سؤالى

انا اريد ان اكتب في السجلات ويكون النموذج في المنتصف الشاشة مش في اسفل الشاشة

وارجو ان تضع مثال

هذا مرفق صورة لعلها توضح ما اريد

untitled11.rar

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

أرجو أن أكون قد فهمتك بشكل صحيح الآن

أنت لا تريد عرض كل السجلات الموجودة في الجدول و لكن آخر عدد معين من السجلات الذي يسمح بالعرض لنصف النموذج

الرجاء القيام بالخطوات التالية:

1- إنشاء استعلام جديد يحتوي عى جميع القيم المطلوبة ... ووضع قيمة Top Values بالعدد المطلوب عرضه لملئ نصف الصفحة حسب حجم النموذج ... ووضع ترتيبه تنازلي

2- اجعل البيانات في النموذج تؤخذ من الاستعلام

3- قم بتعديل الترتيب الموجود في النموذج باستخدام خاصية ( Order By ) للحقل الذي رتبته تنازليا بالاستعلام حتى تعيده تصاعدياً مرة أخرى

4- بعد عمل الإجراءات السابقة ستكون قد اختصرت الكود بشكل كبير حتى يصبح كالتالي :

Private Sub Form_AfterUpdate()
Me.Requery
End Sub

Private Sub Form_Load()
DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
End Sub

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

New_Microsoft_Office_Access_2003_Database.rar

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

لكنى اريد عندما ازيد في الكتابة يزيد هو القيمة بحيث تظل الكتابة في منتصف الصفحة

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

أفضل تعديل يمكن وضعه هو إزالة الكود الموجود في الحدث AfterUpdate ووضع هذا الكود مكانه في الحدث AfterInsert

Private Sub Form_AfterInsert()
Me.Requery
DoCmd.GoToRecord , , acNewRec
End Sub

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

أفضل تعديل يمكن وضعه هو إزالة الكود الموجود في الحدث AfterUpdate ووضع هذا الكود مكانه في الحدث AfterInsert

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

New_Microsoft_Office_Access_2003_Database.zip

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

الله الله على الابداع

اشكرك اخى

ولكن لى طلب اخير

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

ولكن المثال عند بداية سجل جديد دائما يأتى في حقل id

وانا اريد مثلا لو كنت اكتب في حقل اخر عند بداية حقل ديد ان يأتى في نفس العمود الى انا كنت باكتب فيه

وشكرا

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

أرجو أن تقوم بتعديل كود الحدث AfterInsert ليصبح كالتالي

Private Sub Form_AfterInsert()
Dim ActiveControlName As String
ActiveControlName = Me.ActiveControl.Name
Me.Requery
DoCmd.GoToRecord , Record:=acNewRec
Me(ActiveControlName).SetFocus
End Sub

أرجو أن يكون هذا طلبك

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

الله الله على الابداع والعبقرية

ربنا يجزيك عنا خيرا كبيرا

المثال جميل وكل ما تخيلته وجدته ولكن كرم اخلاقك جعلنى اطمع في ان اطلب منك طلب اخر

وهو

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

وهذا يرجع لعدم توضيح سؤالى ولكن اعذرنى

ولك منى الف الف مليار شكر

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information