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

صححوا لى هذا الكود الخاص بنسخ حقول محددة

مغلق
بدأه حسين البشير في 24 مارس 2005 · 6 رد · 747 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

وجدت فى رد الأخ BISKRA على الأخ الطاير عن سؤاله حول تعبئة الحقل الحالى بنفس بيانات الحقل

السابق، ما كنت ابحث عنه فأنا لدى نموذج FATORA منضم الى جدول SALES لادخال البيانات فيه ولا اريد تكرار ادخال نفس البيانات فى حقول INVNO , DATE ,BRANCH بل اريدها ان تكون نفس البيانات فى السجل السابق عندما أحدث حقل PRODUCT ID فقمت نتجربة كود الاخ BISKRA على حقل INVNOمع تعديله قليلا ليصبح كالآتى:

Private Sub PRODUCTID_AfterUpDATE

DoCmd.GoToControl (INVNO

If Me.CurrentRecord = Null Then

Me.INVNO = DLast("[iNVNO]", "FATORA

End If

End Sub

ولكن تأتينى رسالة خطأ كالآتى: " يتطلب الاجراء وسيطة اسم عنصر التحكم"

وقصدى هو: بعد تحديث حقل PRODUCTID إذا كانت حقولINVNO و/أوDATE و/أو BRANCH خالية(أى لم احدثها) فقم بتحديثها بالبيانات التى فى السجل السابق لها.

أرجو مشكورين تصحيح هذا الكود بما يحقق قصدى.

تم تعديل هذه المشاركة بواسطة biskra في 24 مارس 2005 في 17:17

#2

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

/index.ph...topic=52854&hl=

#3

عزيزى الفاضل الأخ biskra

اشكرك على تفضلك بالرد على استفسارى ولكن لم اتمكن من مشاهدة الملف الذى تكرمت بة لأنى أعانى من مشكلة تحميل الكثير من "الملفات المرفقة" حيث يحمل الملف فى الـexe ويبدو عند فتحه هكذا

k$M|بھص ?QEq G‘Dُ ٌq4 Uڈ’Hک¸ت&bو R9aث¦)ج3à73Dsk à' ذ3¦9ل‍ û.çJG¦

وقداشرت الى هذة المشكلة فى موضوع " يا خبراء آكس ...." فى هذا المنتدى

ثانيا: اريد مثل الكود الذى تفضلت به فى ردك على الأخ/ الطاير مع تعديل طفيف يفى بغرضى لأن النسخ بالنقر يحتاج لجهد ووقت كبير تخيل عندك اكثر من 1000 سجل يحتاج كل واحد منهم للنقر لينسخ فى الذى يليه

فهلا تكرمت بتصحيح الكود المذكور بعاليه.

بالنسبة للمثال ارجو التكرم بالرجوع الى موضوعى من قبل" كيف اعبىْ الى أسفل " لاحقا ساجهز مثال آخر ورفقه لك .

ولك شكرى وتقديرى

#4

ضع نسخة من الملف و سوف يتم التعديل عليه حسب رغبتك, مع الملاحظة ان الأمر سهل جدا.

#5

الاخ BISKRA

عفوا المثال موجود فى الآكسس وأنا غير قادر على ارفاقه

ساحاول لاحقا

مع شكرى

تم تعديل هذه المشاركة بواسطة حسين البشير في 28 مارس 2005 في 22:12

#6

غير في الكود الذي كتنبته و اجعل مصدر المعلومة هو الجدول و ليس النموذج, sales عوضا عن fatora

#7

عزيزى الفاضل الأخ biskra

اشكرك على مجهودك والاخ الطاير كنت اتمنى ان يحًمل عندى ملفك المرفق ويوفر على الكثير من الجهد ، ومن ناحية اخرى لم استطع أن ارفق لك المثال لأن ايقونة الارسال كانت تخمد كلما حاولت ان ارفق المثال ، ولكن حقا الحاجة ام الاختراع ولله الحمد فقد قمت بعشرات المحاولات مستخدما عدة حيل من اجل ان يصالحنى الكود ولم تنطوى عليه حيلى الا بعد ان اضفت الثلاثة أسطر التالية للسطر الاول فى الكود ادناه ، ويبدو أن هذا القلب قد ضخ في شرايينه الدم فأوقف تلك الرسائل السخيفة واصبح يعمل بصورة سحرية ويعبىء حقول , INVNO BRANCH , DATE (اذا كانت خالية – أى لم اعبئها) ببيانات السجل السابق ، بمجرد ان ادخل رقم الصنف فى حقل PRODUCTID

فالكود المحتفى به كالآتى: وهو ملحق بمربع نص رقم الصنف "بعد التحديث"

Private Sub prtid_AfterUpdate()

Dim MYDB As Database, MYSET As Recordset, MYTABLE As Recordset

Set MYDB = DBEngine.Workspaces(0).Databases(0)

Set MYTABLE = MYDB.OpenRecordset("SALES")

If IsNull(Forms![FATORA]!BRANCH) Then

Me.BRANCH = DLast("[bRANCH]", " SALES ")

If IsNull(Forms![FATORA]!DATE) Then

Me.DATE = DLast("[DATE]", " SALES ")

If IsNull(Forms![FATORA]!INVNO) Then

Me.INVNO = DLast("[iNVNO]", " SALES ")

End If

End If

End If

End Sub

(ملاحظة: الاقواس فى بداية الاسطر يجب ان تكون فى النهاية)

قطعا أنتم الخبراء لديكم طريق أقصر من هذا ، ولكن بالنسبة لنا فشىء خير من لا شئ . وكما يقولون" درب السلامة للحول قريب"

ومن ناحية اخرى حاولت أن استفيد من هذا الكود لعمل ترصيد فى كشف حساب عميل ( STATEMENT) بعمل كود آخر يأخذ الرصيد السابق ويضيف اليه حقل" دائن" (بالسجل الحالى) ويطرح منه حقل" مدين" (بالسجل الحالى) للحصول على الرصيد الحالى ، فاضفت فى كود جديد وعلى نموذج آخر بعد الاربعة الاسطر الاولى من الكود السابق العبارة التالية :

Me.BALANCE = DLast("[bALANCE]", "STATEMENT") + ME.CREDIT – ME.DEBIT

ولكن هذا الكود جسد بلا روح.

مرة أخرى لكم الشكر أجزلة ، وأرجو ألا تملوا من اسئلتنا لأن لدينا المزيد فى قادم الأيام بمشيئة الله .

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

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

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

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

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

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