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

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

بدأه solnaif في 7 يوليو 2009 · 11 رد · 2,219 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

صلي على النبي عليه أفضل الصلاة وأتم التسليم

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

مشكلتي هي باختصار أنني أريد أن أنسخ السجلات من جدول (MyBook) إلى جدول (MyBook1) بشرط أن تتكرر نسخة السجلات في الجدول الثاني(MyBook1) على حسب القيمة الموجودة في حقلparts من الجدول الأول(MyBook) يعني إن كانت القيمة الموجودة في الحقل (parts) تساوي (3) والموجودة في الجدول الأول يتكرر نسخ السجل في الجدول الثاني ثلاث مرات وهكذا

وتجدون الجداول مرفقة

فأرجو أجد الحل عندكم وبأسرع وقت ممكن

0_MyFahras.rar

#2

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

تفضل أخي الكريم

0_MyFahras.rar

طبتم واهتديتم :)

===================================

إقرأ معي

رابط متجدد لكتاب أقرؤه فشاركني فيه

======

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

الكتاب :

حسين الموسوي - لله تم للتاريخ ، كشف الأسرار وتبرئة الأئمة الأطهار

اضغط على الصورة لتحميل الكتاب

%E1%E1%E5%20%CB%E3%20%E1%E1%CA%C7%D1%ED%CE.jpg

-----------

كتب سابقة

سعد الدين الشاذلي - مذكرات حرب أكنتوبر

#3

إضافة بسيطة جدا بعد اذن اخي ايهاب..

تعديل خاصية اظهار التحذيرات عند الالحاق لان عملية الالحاق المتكررة تظهر الكثيير من الرسائل..

Docmd.SetWarnings "False"

مع الشكر

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#4

شكراً أستاذنا همام..

طبعاً اضافة مهمة جداً لوضعها في بداية الكود أو أي كود يشغل استعلامات اجرائية لا ترغب في ظهور رسائل اجرائها

بالطبع اذا لم يكن برنامج الاكسيس مضبوطاً على عدم الاظهار.

شكراً مرة أخرى

طبتم واهتديتم

تم تعديل هذه المشاركة بواسطة ايهاب عثمان في 11 يوليو 2009 في 12:55

طبتم واهتديتم :)

===================================

إقرأ معي

رابط متجدد لكتاب أقرؤه فشاركني فيه

======

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

الكتاب :

حسين الموسوي - لله تم للتاريخ ، كشف الأسرار وتبرئة الأئمة الأطهار

اضغط على الصورة لتحميل الكتاب

%E1%E1%E5%20%CB%E3%20%E1%E1%CA%C7%D1%ED%CE.jpg

-----------

كتب سابقة

سعد الدين الشاذلي - مذكرات حرب أكنتوبر

#5

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

صلي على النبي عليه أفضل الصلاة وأتم التسليم

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

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

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

صلي على النبي عليه أفضل الصلاة وأتم التسليم

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

أخي الفاضل إيهاب فضلاً لا أمراً ممكن تشرح الكود حتى يتسنى لنا فهم العمل الذي قمت به وجزاك الله عنا وعن المسلمين ألف خير

Private Sub Command1_Click()
ATX = 0
For H = 1 To DCount("[parts]", "parts")
ATX = H
Me.Refresh
For b = 1 To ATX
DoCmd.OpenQuery "appq"
Me.Refresh
Next b
Me.Refresh
Next H
ATX = 0
End Sub

تم تعديل هذه المشاركة بواسطة ايهاب عثمان في 11 يوليو 2009 في 12:57

#6

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

مرحباً أخي الكريم...

تعال نفكر كيف يكون الحل منطقياً قبل الدخول في الأكواد والأسطر البرمجية فما هذين إلا نتاج للتفكير المنطقي

لديك جدول وتريد ان تلحق كل سجل فيه الى جدول اخر بعدد من المرات يساوي المكتوب في الحقل المسمى Parts فلو كان ال Parts لسجل ما هو 3 فالمطلوب الحاق هذا السجل الى الجدول المستهدف ثلاث مرات ... وهكذا

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

الان الى خطوات الحل...

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

2 - انشاء نموذج به مربع نص وليكن باسم Atx ونجعله مخفياُ (Visible = No) بالاضافة الى زر امر مع كود تحت حدث "عند الضغط" وسنشرح هذا الكود تفصيلياً

3 - انشاء استعلام باسم parts يحصر لك عدد الاجزاء الموجودة مع حذف التكرارات عن طريق عبارة Select Distinct

بمعنى انه يحدد عدد التكرارات المطلوبة على مستوى الجدول 2 - 3 - 5 مرات مثلاً مما يعني اننا سنشغل الاستعلام الالحاقي ثلاث مرات الاولى بتكرارين والثانية ثلاث تكراران والثالثة خمس تكرارات.... هذا على سبيل المثال

4 - انشاء الاستعلام الالحاقي المسمى Appq مع معيار متغير لحقل ال parts ياخذ قيمته من المربع Atx في النموذج و يتحكم الكود في هذا التغير

5 - الان الى الكود وشرحه...

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

Docmd.SetWarnings "False"

* تصفير المربع Atx = جعل قيمته صفر حتى نبدأ على نظافة :lol:

ATX = 0

* فتح حلقة تكرارية باسم H بعدد المرات الذي سنشغل فيها استعلام الالحاق بصرف النظر عن تكرارات كل مرة وهذا العدد سيقرأ من عدد سجلات الاستعلام Parts

وفي اثناء كتابتي لهذه الجزئية اكتشفت خطأ بالكود لن يظهر الا اذا اختل تسلسل الاجزاء في الجدول الرئيسي بدلا من 1 و 2 و 3 و 4 و 5 يصبح 1 و 5 مثلاً اذافلن تكون الحلقة التكرارية بعدد سجلات الجدول Parts وانما بأكبرها قيمة

وتكون الصياغة الصحيحة للحلقة التكرارية هي

For H = 1 To DMax("[parts]", "parts")
.
.
Next H

بل يمكنك الاستغناء تماماً عن الاستعلام parts وقراءة قيمة نهاية الحلقة التكرارية من الجدول الاساسي Mybook مباشرة هكذا..

For H = 1 To DMax("[parts]", "MyBook")
.
.
Next H

* كانت هذه الحلقة التكرارية الأولى فماذا بداخلها؟؟...

تغيير قيمة المربع Atx لتصبح مساوية لقيمة الحلقة عند كل مرحلة

ففي بداية الحلقة التكرارية ستصبح H=1 وبالتالي Atx ستأخذ نفس القيمة

Atx=H

وباضافة سطر التنشيط

Me.Refresh

سيتغير معيار الحقل Parts داخل الاستعلام الالحاقي ليقرأ القبمة الجديدة للمربع Atx اي انك الان مستعد لتشغيل الاستعلام الخاص بالسجلات ذات الرقم 1 .... بعدد مرات من التكرار تحددها الحلقة الثانية المسماه B ...

For b = 1 To ATX
DoCmd.OpenQuery "appq"
Me.Refresh
Next b

وتستمر الحلقة H .... الى النهاية

اتمنى أن يكون الشرح فيه شيء من التوضيح..

======

طبتم واهتديتم

طبتم واهتديتم :)

===================================

إقرأ معي

رابط متجدد لكتاب أقرؤه فشاركني فيه

======

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

الكتاب :

حسين الموسوي - لله تم للتاريخ ، كشف الأسرار وتبرئة الأئمة الأطهار

اضغط على الصورة لتحميل الكتاب

%E1%E1%E5%20%CB%E3%20%E1%E1%CA%C7%D1%ED%CE.jpg

-----------

كتب سابقة

سعد الدين الشاذلي - مذكرات حرب أكنتوبر

#7

جزاك الله خيراً يا أخ ايهاب صافتني مشكله كهذه شكرا لك

#8

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

صلي على النبي عليه أفضل الصلاة وأتم التسليم

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

#9

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

أرفق إليكم طلبى على المثال السابق بعد إذن السيد solnaif

وشكراً لاهتمامكم مقدماً

#10

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

أرفق إليكم طلبى على المثال السابق بعد إذن السيد 

solnaif

وشكراً لاهتمامكم مقدماً

#11

عفواً المثال بالمرفقات

0 MyFahras.rar

تم تعديل هذه المشاركة بواسطة ramynassif في 7 ديسمبر 2013 في 11:22

#12

أعزائى يوجد مشكلة بهذا المثال مع سجلات معينة لم يقوم الكود بنسخها 

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

 

post-232729-0-68060300-1386535962_thumb.

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

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

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

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

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