بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــه ،،
سؤالي : هل يمكن تنفيذ استعلام الحاقي يقوم بــ دمـــــج قيم السجلات من جدو(1) إلى سجل وحيد في جدول(2) كما في الصورة المرفقة
بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــه ،،
سؤالي : هل يمكن تنفيذ استعلام الحاقي يقوم بــ دمـــــج قيم السجلات من جدو(1) إلى سجل وحيد في جدول(2) كما في الصورة المرفقة
اخي العزيز جزاك الله على اجتهادك ,, ولكن السجلات التي احتاج تجميعها مصدرها عمود واحد وليس عدة اعمدة ,, ونسيت ان انبه لاني احتاج لوجود شرط للاضافة وهو انه سيكون هناك حقل نعم ولا بحيث لا يضيف إلا التي تحمل القيمة نعم .
على كل حال موجود بالمرفق مثال يلبي الشرط ولكنه يضيف السجلات المحددة للجدول رقم 2 ولكن لا يجمعها بل يضع كل قيمة في سجل مستقل .
آمل أن يكون شرحي واضح
أسف يا أخي تفضل المرفق بعد التعديل حسب ما طلبت فقد كنت في عجالة.
الف الف الف الف الف الف شكر لك أخي الفاضل بالفعل الكود نفذ المطلوب على المثال على أكمل وجه ,, سأنقله للبرنامج عندي واذا واجهتني أي مشكلة سأعود لك :) فعليك بالصبر علي .. رعاك الله وبارك فيك
شكرا أخي Team2000
لجهودك الواضحه في المنتددى وفقك الله ورعاك
الاخ Mooj ناسف لتأخر الرد وقد وصلتني
الرساله فلقد كنت مشغولا بمساعدة أخوانك في موضوعات أخرى
تم تعديل هذه المشاركة بواسطة اكسيرالحياة في 7 نوفمبر 2009 في 21:22
اخوي اكسير الحياة ,, الله لا يحرمنا من طلاتك وبالفعل تبذلون جهد واضح في الرد على استفسارات الأخوان ,, الله يبارك فيكم ويبااااااااارك في اخوي team2000 ولا يحرمني من علمة وفهمه بالفعل جابها 100%
أخي واستاذنا الكريم أكسير
شكراً لمروركم الكريم فأنا والله تعلمت منكم ومن أساتذة هذا المنتدى الكثير وأتمنى أن أصل إلى جزء ولو بسيط من علمكم الغزير.
الأخ الكريم Team2000
الجميع يلاحظ نشاطك الملحوظ لمساعدة الإخوة بالمنتدى ..بارك الله فيك .. الكود غاية فى الروعة .. لم أكن أعتقد أن هذا الإجراء ممكناً .. ولكن لا شئ مستحيل ... ما شاء الله عليك.
تحياتى
محمد ندا
تم تعديل هذه المشاركة بواسطة Mohamed Nada في 7 نوفمبر 2009 في 23:35
... بقمة السعادة .. أعود بإذن الله لصحبتكم الرائعة قريباً ...
أخي الفاضل محمد ندا
بارك الله فيكم وفي أعضاء ومشرفي المنتدى جميعاً ذلك بعض من تفضلكم ولكم الاسبقية في المعروف.
اخي الفاضل team2000 يبدون أني أغفلت شرط اخير آمل أن تنظر للمرفق .
ولو تكرمت ممكن تشرح لي الكود سطر سطر ,, اقصد خلي شرحك في محرر الفجول بيسك حتى افهم رعاك الله
أخي الكريم :
لم أفهم ما تريد بعد أن فتحت المرفق. لإانت قد أدخلت قيم جديدة في جدول رقم 2 في حين أن هذا الجدول كما فهمت من طلبك أول المشاركة يتم ادخال القيم فيه عن طريق ما تكتبه في الجدول رقم 1. برجاء شرح ما تريد في المرفق الأخير أما عن الكود سوف أضعه في مرفق لأنني لم أحترف بعد كيفية الكتابة في المنتدى والتنقل بين اللغة العربية والانجليزية بسهولة على العموم سوف أحاول أجد طريقة لاحتراف الكتابة في المنتدى كما يفعل كثير من الاخوة واتعلم حتى طريق وضع الصور في المشاركة فهذه للأسف أمور لم اتعلمها بعد. عموماً ما سأكتبه بعد هو أول محاولة لعمل ذلك فاذا نجحت سأستمر.
Private Sub Command8_Click()
اخي الكريم معك حق في كل ما تقول ,, وانا لم اذكر ذلك في اول المشاركة ظنا مني بأن ليس له علاقة وعرفت لاحقا بحاجتي لذكر ذلك فذكرته لك الآن وآآآآمل أن يطول بالك علي فانا مبتدء :Dعلى اني مشترك منذ فترة ولكني لم انتظم ,, على كل حال اسمح لي بقليل من التوضيح :)
الجدول رقم 2 يتم ادخال البيانات فيه على مرحلتين المرحلة الاولى سيكون معلموات اولية كالاسم والمعرف .. الخ والمرحلة الثانية ما نفذته انت لي مشكورا ولكن بقي فقط ان اجعل الكود يضيف القيم بالاعتماد على الاسم المعروض في المرحلة الثانية من الادخال . اتمنى اني اكوت ةضحت المقصود .
تم تعديل هذه المشاركة بواسطة m00j في 8 نوفمبر 2009 في 19:58
يبدو أن الموضوع سهل:
Dim dbs As Database
السطور عاله عبارة عن الاعلان عن المتغيرات التي سنستخدمها بعد ذلك في الكود وهي بالترتيب الاعلان عن متغير نوعه قاعدة بيانات ثم الاعلان عن متغير نوعه مجموعة سجلات وهو في السطر الثاني والثالث ثم الاعلان عن متغير نوعه "نص" أو حروف .. طبعاً الترجمة من الانجليزية إلى العربية سيئة جداً
Set dbs = CurrentDb
بعد ذلك يتم تحديد قيمة لكل متغير وتلاحظ هنا الفرق في تحديد قيمة للمتغرات نوع قاعدة بيانات وسجلات حيث أضيفت كلمة
Set
قبل اسم المتغير ولم تضاف عند تحديد قيمة للمتغير نوع نص أو حروف (وطبعاً لأنني مبتدئ فلا أعرف لماذا؟).
على العموم يفضل دائماً عند الاعلان عن المتغيرات أن تعطي لها قيم إبتدائية قبل الشروع في استخدامها وهذا قد يساعدك في تحديد ما إذا كان نوع المتغير سيقبل القيمة المدخلة اليه بعد ذلك أثناء تنفيذ الكود أم لا.
,اضيف أيضاً بالتفصيل الممل بأن الاعلان عن المتغير ما هو إلا حجز مكان في ذاكرة الحاسب يتم فيه وضع البيانات بصفة مؤقتة لاستدعائها لاحقاً ثم ينتهي عمرها
وطبعاً هنا ليس المجال للحديث عن المتغيرات وأعمارها... المهم
With rst1
هذا هو المهم... متغير نوع سجلات والذي قمنا تحديد قيمته من الكود السابق بأن تكون قيمته هو قيمة سجلات الجدول 1 ...يمعنى أن هذا المتغير أصبح صورة طبق الأصل من الجدول1 بل إن أية عمليات تجرى عليه سوف تتم كأنك تتعامل مع الجدول بالتحرك من أول الجدول إلى أخره وبالاضافة أو الحذف أو التعيل ومن هنا نصل إلى نقطة هامة.. ألا وهي خصائص هذا النوع من المتغيرات فنرى في الكود السابق أول كلمة للامساك بهذا النوع من المتغيرات وهي كلمة
With
ومعناها طبعاً بالعربية الدارجة "مع" ومعناها عندي "هيا سنفعل شيئاً مع هذا المتغير"
ما هو هذا الشئ؟
.MoveFirst
أولاً التحرك لأاول الجدول أي الوقوف عند أول سجل في الجدول. لاحظ علامة النقطة قبل فعل الامر
Movefirst
وهي تدل على أن فعل الامر بالتحرك هو خاصية من خصائص الجدول والذي هو في الحقيقة أصبح اسم المتغير
rst1
تلاحظ ايضاً عدم وجود كلمة
rst1
قبل فعل الامر وذلك بسبب أننا أدخلنا المتغير
rst1 مع جملة with كما سبق فاصبحت ملك يميننا فلا داعي للنداء عليها مرة أخرى عتد أدخال أمر التحرك.
Do While Not .EOF
والأن أمر جديد لهذا المتغير ولكنه في هذه المرة ليس أمر للمتغير ولكن للفاجيوال بيسك نفسه وهو أن يبدأ في الدخول واللعب في الجدول وبعد أن اصبح الجدول في وضع الاستعداد على السجل الاول منه. كما أمرنا الفياجيوال بيسك أن يقوم بالعبث مع الجدول في كل الاوامر الاتية طالما أننا لم نصل إلى السجل الاخير. لاحظ أيضاً وجود النقطة قبل
EOF
والجملة تعني "نهاية الملف" والمقصود طبعاً ليس ملف ولكن جدول .. مش مشكلة .. ماذا نريد من جملة التكرار؟
لاحظ أننا قد دخلنا الأن في الجدول ونقف على أول سجل فيه وأن اية جمل شرطية أو جمل أمر يسبقها اسم الجدول فهى أوامر موجهه إليه. وطبعاً لأان الجدول أصبح ملك يميننا فلا داعى للنداء عليه باسمه الان ولكن يكفي أن نكتب "." أو "!" ثم نتبعها بكلمة يفهمها فينفذها.
الان نأتي إلى شكل جديد ولاحظة جديدة فبعد كلمة الشرط
If
نلاحظ علامة تعجب"!" ثم جملة
YesOrNo
أخي العزيز عندما نرى علامة التعجب قبل الكلمة وحيث إننا ما زلنا نتعامل مع المتغير
rst1
والذي هو من نوع سجلات جدول إذا نحن سنستخم أسماء حقول هذا الجدول للتعامل معها وطبعاً
YesOrNO
هو اسم حقل في هذا الجدول
-1 بعد علامة "=" معناها إذا كانت قيمة الحقل
YesOrNo
= -1 إذا (إفعل الأتي)
...................................
أخي العزيز للحديث بقية أرجو ألا أكون أطلت عليك أو على الأخوة الكرام في المنتدى
,إذا كان الموضوع ممل فأرجو من الاخوة المشرفين حذفه أو نقله إلى "المواضيع المملة" طبعاً مفيش مواضيع مملة في هذا المنتدى الكبير بمشرفيه وأعضائه الكرام على العموم يمكن حذفه دون ذعل.
بالفعل انت متمكن من الشرح عيني عليك بااااردة ما شاء الله تبارك الله ,, أكمل يا أخي انا في انتظااارك
تم تعديل هذه المشاركة بواسطة m00j في 8 نوفمبر 2009 في 22:26
أخي الكريم
وصلنا إلى -1 فلماذا اشترطنا هذا الشرط . لانك سيدي أنت حددت نوع الحقل بأن يكون نعم أو لا وعندما تكون قيمة الحقل هي نعم تترجم هنا بلغة الارقام إلى 1- (وطبعاً علشان أنا كما قلت مبتدئ لا أعلم لماذا -1 وليست +1) ... المهم طلبت حضرتك أن يتم يجميع قيمة الحقول التي قيمتها "نعم" فقط وهذا ما فعلناه بالضبط وضعنا شرط أن تكون قيمة الحقل -1 أي نعم ... إذاً إفعل كذا.
ماذا أفعل؟
هذا مكتوب في السطر الذي يلي "إذاً"
stString=stString & ! column1
أي أجعل قيمة المتغير stString الحالية = قيمته السابقة مع "ضم" قيمة الحقل Column1
والسؤال ماهي قيمة stString الحالية ... هل تتذكر يا أخي في بداية الكود وضعنا قيمة stString وكانت القيمة "" أي "بدون قيمة نصية" أو بمعنى أخر قيمة "فارغة"
إذا القيمة الحالية ونحن في أول سجل داخل الجدول - ستكون هي قيمة الحقل Column1 وستكون قيمة المتغير stString عندما نصل إلى السجل الثاني هي قيمته الحالية "التي ستكون قيمة السجل الأول" ثم سيضاف إليه قيمة السجل الثاني وعندما نصل إلى السجل الثالث ستصبح القيمة هي السجل الأول السجل الثاني السجل الثالث وهكذا حتى نصل إلى نهاية الجدول أو بمعنى أخر EOF عنها سيتوقف الحلقة التكرارية ولكن لا حظ يا أخي أنه لن يتم اضافة قيم الحقل column1 إلى المتغير stString إلا إذا تحقق الشرط -1 أما إذا لم يتحقق الشرط فسنتقل البرنامج إلى السجل الذي يليه.
والأن كيف سنتحرك إلى السجل التالي؟
هكذ
.MoveNext
ولاحظ مرة أخرة "النقطة" قبل فعل الامر MoveNext أي تحرك للتالي.. من الذي يتحرك مؤشر الكود والخادم المطيع الامين يأمر الجدول أن يتحرك ويظهر له السجل التالي حتى يستطيع مقارنة محتواه مع الشرط وينفذ المطلوب وهكذ تتكر الحلقة التكرارية من أولاها مرة أخرى .. يقف على السجل الحالي ... يقارن قيمة حقل الشرط بالشرط نفسه ... ينفذ المطلوب. حتى يصل إلى نهاية السجلات ويخرج من الدورة معه قيمة المتغير stString النهائية بها جميع الجمل التي يحتويها الحقل Column1 في جميع السجلات التي تحقق الشرط.
أظن كل هذه الكلمات المملة الطويلة التي شرحناها أختصرها الكود "ما قل ودل" في ثلاث كلمات أو ثلاث أسطر
................................................................................
.................................
ملل طبعاً .... .. للحديث بقية...
أظن كفاية وإلا تسحب عضويتي من المنتدى ... واحد مش فاهم حاجة في البرمجة عامل مبرمج ... طبعاً أكيد أنا.
لا والله ليس ملل بل شرح مفصل بارك الله فيك
بارك الله فيكم موضوع جميل حقا .. زادك الله علما
اللهم لك الحمد كما ينبغى لجلال وجهك وعظيم سلطانك .. لا إله إلا أنت سبحانك أنى كنت من الظالمين
بارك الله في جهودك استاذ Team2000
وتحياتي للاستاذ العزيز اكسير..
وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…