nssj قام بنشر يناير 30, 2021 قام بنشر يناير 30, 2021 الإخوة الكرام .. في الملف المرفق محاولة مني لعمل كود للانتقال إلى سجل معين بحسب رقم (Hno) قمت به حسب فهمي لما اطلعت عليه من مواضيع حسب استطاعتي والمطلوب بعض التعديلات: 1- أن يقوم الكود بمسح الرقم بمجرد الانتقال من (textbox) وهو في المثال المرفق (tn) 2- إن لم يكن الرقم موجودا تخرج رسالة بذلك 3- كما وحاولت أيضاً أن أجعل مفتاح (Enter) يقوم أيضاً بعملية الانتقال، لكن المشكلة أنه بعد الانتقال يضيف سطراً جديداً في بداية الحقل !! 4- بحسب بحثي استخدمت كودين لعملية الانتقال DoCmd.GoToRecord , , acGoTo, HNO(tn) Me.Recordset.FindFirst "hno=" & Me.tn فأيهما أسرع لاسيما في الملفات الكبييييرة انتقال.accdb
essam rabea قام بنشر فبراير 2, 2021 قام بنشر فبراير 2, 2021 أ.nssj جرب المرفق عسي يكون المطلوب ادخل الرقم المراد البحث عنه واضغط انتر بالتوفيق انتقال.accdb 1
nssj قام بنشر فبراير 2, 2021 الكاتب قام بنشر فبراير 2, 2021 الأخ الكريم essam rabea شكرا على مشاركتك .. تم حل المشاكل المذكورة .. لكن الكود ينتقل إلى الرقم عبر الفلترة، وإذا ألغيت الفلترة يعود للسجل الأول والمطلوب أكرمك الله الانتقال للسجل المطلوب وهو بين السجلات بدون فلترة بحيث أستطيع التنقل قبله وبعده
SEMO.Pa3x قام بنشر فبراير 2, 2021 قام بنشر فبراير 2, 2021 (معدل) عليكم السلام، تفضل: Option Compare Database Private Sub go_Click() 'check if TextBox tn is empty If IsNull(tn) Then MsgBox "يرجى كتابة رقم للبحث عنه", vbCritical, "عملية خاطئة" Exit Sub End If 'check if record exist If DCount("ID", "tbl2", "HNO =" & tn) = 0 Then MsgBox "لم يتم العثور على السجل المطلوب", vbCritical, "عملية خاطئة" Exit Sub End If 'go special record Me.Recordset.FindFirst "HNO=" & tn 'clear TextBox tn after search tn = Null End Sub Private Sub tn_KeyDown(KeyCode As Integer, Shift As Integer) 'Do event when click Enter key. If KeyCode = vbKeyReturn Then Call go_Click End If End Sub لا تنسى اختيار أفضل أجابة لإغلاق الموضوع. تحياتي. انتقال.accdb تم تعديل فبراير 2, 2021 بواسطه SEMO.Pa3x 1 2
nssj قام بنشر فبراير 2, 2021 الكاتب قام بنشر فبراير 2, 2021 أخي الكريم أبو مهاب .. شكرا على مشاركتك .. ولكن هناك ملاحظتان أولا: مسألة فنية: إلغاء الرقم في التكست بوكس بعد رسائل الخطأ أيضا ثانيا: توجد إشكاليات في الانتقال بكبسة إنتر - إذا استخدمت الانتقال بالإنتر بعد فتح الملف مباشرة، أو بعد الانتقال بالفارة تخرج رسالة: يرجى كتابة رقم - إذا كتبت رقما غير موجود واستخدمت الانتر تخرج رسالة (يرجى كتابة رقم)، ثم إذا أدخلت الرقم الصحيح تخرج رسالة (لم يتم العثور على السجل)، وإذا كبست إنتر للمرة الثانية دون أن أغير الرقم يتم الانتقال للمطلوب، وإذا غيرت الرقم ينتقل للرقم الذي كان موجودا قبل التغيير !
nssj قام بنشر فبراير 2, 2021 الكاتب قام بنشر فبراير 2, 2021 أخي الكريم essam .. بالنسبة للانتقال بالإنتر عادت المشكلة الأولى .. يضيف سطرا جديدا في بداية حقل النص وعند كتابة الرقم الخطأ يعود للسجل الأول .. ولعله من الأفضل أن يبقى حيث هو
SEMO.Pa3x قام بنشر فبراير 2, 2021 قام بنشر فبراير 2, 2021 4 ساعات مضت, nssj said: أخي الكريم أبو مهاب .. شكرا على مشاركتك .. ولكن هناك ملاحظتان أولا: مسألة فنية: إلغاء الرقم في التكست بوكس بعد رسائل الخطأ أيضا ثانيا: توجد إشكاليات في الانتقال بكبسة إنتر - إذا استخدمت الانتقال بالإنتر بعد فتح الملف مباشرة، أو بعد الانتقال بالفارة تخرج رسالة: يرجى كتابة رقم - إذا كتبت رقما غير موجود واستخدمت الانتر تخرج رسالة (يرجى كتابة رقم)، ثم إذا أدخلت الرقم الصحيح تخرج رسالة (لم يتم العثور على السجل)، وإذا كبست إنتر للمرة الثانية دون أن أغير الرقم يتم الانتقال للمطلوب، وإذا غيرت الرقم ينتقل للرقم الذي كان موجودا قبل التغيير ! اخي الكريم، يقولون لا تعطني سمكة علمني كيف اصطادها. مع ذلك قدمت لك الحل كاملاً.. اقتباس أولا: مسألة فنية: إلغاء الرقم في التكست بوكس بعد رسائل الخطأ أيضا هل هذا أمر مستحيل أو صعب ؟ ولو تمعن النظر في الكود الذي كتبته سوف تجد طلبك 'clear TextBox tn after search tn = Null اقتباس ثانيا: توجد إشكاليات في الانتقال بكبسة إنتر يعمل 100% وبدون أشكالية. للمعلوم ضغط الأنتر سيقوم بنداء الدالة go_Click التي ستقوم بوظيفتها التالية: 1- هل الحقل tn فارغ ؟ اذا كان فارغ ستخرج رسالة خطأ واذا لم يكن فارغ سيكمل البرنامج عمله. 2- التحقق في ما اذا كان السجل المطلوب هو موجود فعلا بالجدول او غير موجود عن طريق رقم الـ HNO اذا كان موجود سيكمل البرنامج عمله والعكس رسالة خطأ. 3- يقوم بالذهاب للسجل المطلوب 4- تصفير الحقل اخي استمع لنصيحتي، انت تريد ان تأخذ الحل جاهز وبدون ان تتعب نفسك بالمحاولة أو بالتفكير أو حتى بقراءة حلول الآخرين لك، والدليل ردي في الأعلى
nssj قام بنشر فبراير 2, 2021 الكاتب قام بنشر فبراير 2, 2021 (معدل) 1 ساعه مضت, SEMO.Pa3x said: اخي استمع لنصيحتي، انت تريد ان تأخذ الحل جاهز وبدون ان تتعب نفسك بالمحاولة أو بالتفكير أو حتى بقراءة حلول الآخرين لك شكرا على النصيحة أخي الكريم .. مع أنني أعمل بها قدر استطاعتي .. قبل كتابة هذا الموضوع ليلة كاملة وأنا أبحث عن الكود المناسب وأجرب هذا وذاك وعشرات التجارب الفاشلة بسبب فاصلة أو نقطة .. لأن البرمجة ليس مجالي ولا يمكنني أن أترك تخصصي وأخوض في بحارها .. وبعد ساعات من التجارب خرجت بالأكواد الموجودة في الملف .. وهي أكواد أعتقد أن شخصا لديه بعض الخبرة بالبرمجة يكتب أفضل منها في دقائق .. ولكن أحب أن أجرب بنفسي قبل السؤال حتى مشكلة إضافة سطر جديد عند الانتقال بالانتر وجدت لها حلا عبر استخدام Me.tn.SetFocus ولكني أشعر أن هذا حل بدائي .. وأرغب بحل احترافي من أهل الخبرة وبخصوص مسح التكست بوكس .. الكود يمسحه بعد الانتقال فقط وليس بعد كتابة رقم خاطئ .. لكن كلامك جعلني أنظر مرة أخرى للكود لأكتشف أني لم أكن دقيق النظر بما يكفي .. فعدلت الكود إلى If DCount("ID", "tbl2", "HNO =" & tn) = 0 Then MsgBox "لم يتم العثور على السجل المطلوب", vbCritical, "عملية خاطئة" tn = Null Exit Sub End If فتم المطلوب في هذه الجزئية والحمد لله أما بخصوص إشكاليات الانتقال عبر الإنتر .. فأنا أعدت تحميل الملف وكررت التجربة .. والنتيجة نفسها .. وتفسيري الوحيد لما يحدث -و لست من أهل الخبرة- أن الكود ينفذ الأمر بالنظر للتكست بوكس قبل كتابة الرقم .. يعني إذا كان فارغا وكتبت فيه (5) وكبست إنتر تخرج لي رسالة (يرجى كتابة رقم) ثم إذا كتبت (4) وكبست إنتر ينتقل إلى الرقم الذي كان مكتوبا في السابق (5) هذا ما يحدث معي .. وإذا كان لا يحدث معك فهو شيء محير فعلاً تم تعديل فبراير 2, 2021 بواسطه nssj
jjafferr قام بنشر فبراير 2, 2021 قام بنشر فبراير 2, 2021 السلام عليكم 🙂 الافضل ان يكون الاستعلام مصدر بيانات النماذج والتقارير ، ولا تأخذ الجداول كمصدر بيانات مباشر ، فهذا اللي عملته هنا : . ولا تعمل الكود على حدث "الخروج" من الحقل ، بينما الطريقة الصحيحة ان تضع الكود على حدث "بعد التحديث" : Private Sub tn_AfterUpdate() If DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Me.tn = "" Else Me.Recordset.FindFirst "hno=" & Me.tn End If End Sub . وجربت الكود الآخر ، فكان أبطأ من الذي ارفقته لك 🙂 جعفر 1335.انتقال.accdb.zip 2
nssj قام بنشر فبراير 2, 2021 الكاتب قام بنشر فبراير 2, 2021 الأخ الكريم جعفر .. شكرا على توضيحاتك وتنبيهاتك لكن لا تزال مشكلة إضافة سطر جديد موجودة، هل هذا يعني أن الحل الذي خطر في بالي وهو جعل المؤشر يقف بعد الانتقال عند التكست بوكس وليس حقل النص هو الحل الأمثل لهذه المشكلة وليس له أي سلبيات ثم وللفائدة .. فقد لاحظت أنه يمكن الانتقال باستخدام الفارة عند الكبس على زر المنظار مع أنك حذفت الكود من هذا الزر .. فعلى أي أساس انتقل
jjafferr قام بنشر فبراير 3, 2021 قام بنشر فبراير 3, 2021 10 ساعات مضت, nssj said: عند الكبس على زر المنظار على حدث عند "النقر" للزر ، تستطيع منادادة الكود السابق : call tn_AfterUpdate 10 ساعات مضت, nssj said: فعلى أي أساس انتقل بعد ان تكتب ما تشاء في مربع النص ، وبعد تحديث بياناته بالخروج منه ، سواء عن طريق الزر Enter او Tab ، وللعلم ، فالطريقة الصحيحة للانتقال بين كائنات النموذج هي عن طريق زر Tab ، وتستطيع عمل تسلسل الانتقال من كائن الى اخر من اعدادات الكائن ، علما بأن اول رقم هو صفر : . 10 ساعات مضت, nssj said: لكن لا تزال مشكلة إضافة سطر جديد موجودة ما اعرف شو قصدك في هاي النقطة ، فنحن لا من قريب ولا بعيد جئنا بقرب مربع نص الكتابة 😁 لما نجرب العمل ، فلا نتعامل مع كائنات اخرى ، إلا في حال يتطلب منا هذا الامر ، لذا لم اتطرأ له اصلا !! ولكن وبما انك تعرف اكثر عن برنامجك ، فياريت تخبرنا ما تعمله بالخطوات ، او بالصور ، لنحصل على ما حصلت عليه من نتيجة 🙂 جعفر
nssj قام بنشر فبراير 3, 2021 الكاتب قام بنشر فبراير 3, 2021 منذ ساعه, jjafferr said: ما اعرف شو قصدك في هاي النقطة ، فنحن لا من قريب ولا بعيد جئنا بقرب مربع نص الكتابة 😁 بصراحة أخي الكريم .. وأنا أيضا مش عارف إيش دخل حقل النص في هالموضوع 🙃.. وتفسيري البسيط إنو المؤشر بيروح تلقائيا لحقل النص بعد الانتقال .. ويبدو إنو كبسة الإنتر لسه مؤثرة عليه فبيعمل سطر جديد .. مع إني حاولت إني أكبس على الإنتر بنعومة شديدة حتى لا يستمر تأثيره لما بعد الانتقال 🙂 .. وهذه الصورة أرجو إنها ستوضح ما يحصل ولاحظ أخي الكريم إنو الرقم لسه موجود في التكست بوكس .. فأنا مارست هوايتي في التعديل على الأكواد وأضفت سطرين، سطر لمسح التكست بوكس بعد الانتقال، والسطر اللي عالجت فيه موضوع السطر الجديد، بحيث ما يكون المؤشر بعد الانتقال في حقل النص .. ولكن هل هذا هو الحل الصحيح If DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Me.tn = "" Else Me.Recordset.FindFirst "hno=" & Me.tn Me.tn.SetFocus Me.tn = "" End If
jjafferr قام بنشر فبراير 3, 2021 قام بنشر فبراير 3, 2021 اما الكود فيمكنك اختصاره كالتالي: If DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Else Me.Recordset.FindFirst "hno=" & Me.tn End If Me.tn.SetFocus Me.tn = "" ومع اني لا اعرف كيف وصل المؤشر هناك ، ولكن ، بما ان في هذا النموذج هو للبحث فقط ، فيمكن قفل هذا الحقل من التعديل ، هكذا : . جعفر 1
nssj قام بنشر فبراير 3, 2021 الكاتب قام بنشر فبراير 3, 2021 الأخ الكريم جعفر .. تم المطلوب بحمد الله ، فجزاك الله خيراً وأشكرك خاصة على التوضيحات والتنبيهات العامة التي تتفضل بها .. فهي مفيدة لي وأنا في هذه المرحلة: المرحلة الانتقالية من وورد إلى أكسس وكل الشكر للإخوة الذي ساهموا معنا في هذا الموضع .. وأنا بصراحة لم أكن أظن أن هذا الموضوع سيأخذ كل هذه المحاولات .. كنت أظنه أسهل من ذلك وأنه إنما كان صعباً علي لكوني قليل الخبرة
nssj قام بنشر فبراير 6, 2021 الكاتب قام بنشر فبراير 6, 2021 معلش .. ممكن تعديل آخر ☺️ هل بالإمكان يعد كتابة الرقم خطأ وخروج الرسالة أن ينتقل المؤشر مباشرة للتكست بوكس (tn) لكتابة الرقم الصحيح حاولت ذلك بإضافة سطر للكود لكن لم تنجح المحاولة .. وحتى مع تغيير (فهرس علامات الجدولة) المؤشر ينتقل معي لأي مكان إلا التكست بوكس 🤔 If DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Me.tn.SetFocus Me.tn = "" Else . . .
nssj قام بنشر فبراير 7, 2021 الكاتب قام بنشر فبراير 7, 2021 جزاك الله خيرا أخي جعفر .. تم تجاوز هذا الأمر لكن ظهرت معي في الملف المرفق مشكلة أخرى 🙂 عند الكبس على المنظار (go) والتكست بوكس فارغ أو الرقم خطأ تخرج هذه الرسالة لكن عند كتابة رقم بشكل صحيح لا مشكلة وانتهت المشكلة عندما حذفت الكود (Call tn_AfterUpdate) .. وطبعا هذا لم يؤثر على عملية الانتقال بالكبس عليه .. فهل تصرفي صحيح
jjafferr قام بنشر فبراير 8, 2021 قام بنشر فبراير 8, 2021 اترك كود المنظار مكانه ، وخلينا نتأكد من ان الرقم موجود قبل البحث : Private Sub go_Click() Call tn_AfterUpdate End Sub Private Sub tn_AfterUpdate() If Len(Me.tn & "") = 0 Then MsgBox "رجاء ادخال رقم للبحث عنه" ElseIf DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Else Me.Recordset.FindFirst "hno=" & Me.tn End If Me.tn.SetFocus Me.tn = "" End Sub جعفر
nssj قام بنشر فبراير 8, 2021 الكاتب قام بنشر فبراير 8, 2021 شكلو هالمنظار غاوي غلبة .. 😁 لا مشكلة إذا كان الرقم صحيح أو ما في رقم بس إذا كان الرقم خطأ بتطلع رسالتين: الرقم غير موجود .. وبعدين : الرجاء إدخال رقم ... مع إني كبست عليه مرة وحدة بس
أفضل إجابة jjafferr قام بنشر فبراير 8, 2021 أفضل إجابة قام بنشر فبراير 8, 2021 شكرا على التدقيق 🙂 ولو اني ما اعرف ليش يصير هذا ، ولكن استعمل هذا الكود الآن: Private Sub go_Click() Call tn_AfterUpdate End Sub Private Sub tn_AfterUpdate() On Error GoTo err_tn_AfterUpdate If Len(Me.tn & "") = 0 Or DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Else Me.Recordset.FindFirst "hno=" & Me.tn End If Exit_tn_AfterUpdate: Me.tn.SetFocus Me.tn = "" Exit Sub err_tn_AfterUpdate: If Err.Number = 3075 Then 'ignore Else MsgBox Err.Number & vbCrLf & Err, vbAbortRetryIgnore End If Resume Exit_tn_AfterUpdate End Sub جعفر 1
nssj قام بنشر فبراير 8, 2021 الكاتب قام بنشر فبراير 8, 2021 منذ ساعه, jjafferr said: شكرا على التدقيق أنا الذي أشكرك أخي الكريم على متابعة هذه الملاحظات في هذا الموضوع الذي لم أتوقع أن يتشعب بهذا الشكل أنا جربت الكود على الملف الــ (big boss 🙂) وقمت بجولة تجارب عنييييفة .. والأمور تمام على جميع الاحتمالات وبحمد الله .. فجزاك الله خيرا ثم لاحظت أن الكود بعد تطبيق الخيارات الذي تفضلت بها بخصوص علامات الجدولة أصبح أسرع .. بمعنى أن سطر (Me.tn.SetFocus) كان يزيد لحظة خاطفة من البطء عندما كان المؤشر ينتقل من النص إلى التكست بوكس .. أما الآن فالمؤشر يبقى في التكست بوكس بدون (لحظة البطء الخاطفة 🙂) لكن لابد من الابقاء على هذا السطر لأني لما حذفته عادت مشكلة أن المؤشر لا يقف دائما عند التكست بوكس عند استخدام المنظار كل هذه المعاناة لأن الإنتر يضيف سطرا جديدا في بداية حقل النص .. ويبقى هذا السؤال المحير: لماذا بقي تأثير الإنتر حتى بعد الانتقال وتنفيذ الكود .. أليس من المفترض أن أي كبسة يبقى مفعولها في الحقل أو الزر الذي كبست فيه .. 🤔 المهم أن موضوعنا قد انتهى على خير بحمد الله
jjafferr قام بنشر فبراير 8, 2021 قام بنشر فبراير 8, 2021 32 دقائق مضت, nssj said: المهم أن موضوعنا قد انتهى على خير بحمد الله الحمدلله 🙂 32 دقائق مضت, nssj said: لماذا بقي تأثير الإنتر حتى بعد الانتقال وتنفيذ الكود لو كنت استطيع ان ارى هذا ، لحاولت تتبعه وايجاد حل ، ولكنه لم يحصل معي ، فما عندي جواب 😁 جعفر
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.