اذهب الي المحتوي
أوفيسنا

كيف امنع تكرار اسم العميل عند استخدام إستعلام الحاق


noneta
إذهب إلى أفضل إجابة Solved by يوسف أحمد,

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

السلام عليكم...

 

اعزائي انا عندي قاعدة بيانات لمبيعات ولدي استعلام يقرأ مبيعات كل عميل قام بالشراء, ولكني احتاج ان يظهر لدي في الاستعلام جميع العملاء الذين قامو بالشراء والذين لم يقومو به, مافعلته هو استعلام الحاق ووضعت فيه اسماء جميع العملاء بالاعتماد على جدول لاسماء جميع العملاء, ولكن المشكلة هي في تكرار اسم العميل في كل مرة لتشغيل الاستعلام,

مااحتاجه هو الحل لكي عندما اقوم بتشغيل استعلام الالحاق فإنه لايلحق اسماء العملاء الموجودين في الجدول الاساسي وانما فقط الذين لاتتواجد اسمائهم.

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

أخي الكريم

حاول توضيح تفاصيل قاعدة البيانات عندك حتى نتمكن من فهم المطلوب

( اي تفاصيل الجداول و الحقول و تفاصيل الاستعلام )

 

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

 

ارفقت مثال لقاعدة بيانات ارجو التعديل عليها..

 

مااحتاجه هو عند تشغيل استعلام الالحاق فانه يضيف فقد اسماء العملاء الغير موجودة في tb1 ولايكرر اسماء موجودة.

منع التكرار باستخدام استعلام الحاق.rar

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

جربي التالي

 

في وضع التصميم للجدول  tbl1  وفي حقل  cus_name   خلي الفهرسة    indexed   قيمتها  ( نعم بدون تكرار )  ( Yes (No Duplicates) 

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

اعمل اسعلام جديد كما يلي

 

design

query wizard

find unmached query wizard

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

اي السجلات الموجودة في جدول و غير الموجودة في الثاني

سيظهر هنا معالج على عدة خطوات

اختاري الجدول الأول ( الذي يحوي كل السجلات )

ثم في الخطوة الثانية اختاري الجدول الثاني ( الذي يحوي عدة سجلات فقط )

سيطلب هنا المعرف المشترك بينهما ( و هذا أمر ضروري جدا )

و هو هنا الحقل ID

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

من هذا الاستعلام تعملي استعلام الحاق للسجل الأول

هذا من ناحية الحل المطلوب , لكن من الناحية العملية هذه الطريقة غير مرغوبة برمجيا ( اي طريقة تكرار الجداول )

أعيدي صياغة قاعدة البيانات لتجنب تكرار الجداول

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

  • أفضل إجابة

السلام عليكم

 

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

 

اتفق مع الحلول المقدمة من الاستاذ علي و الاستاذ رضوان .

 

ولي مشاركة ان سمحتوا لي :

 

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

 

ايضاً رأيت بأن استعلام الالحاق به حقلين و واحد منهم حقل رقم تلقائي و هو يدرج كتسلسل بمجرد الحاق الاسم .. فلماذا نلحقه ؟ و قد يتسبب هذا في خطأ بسبب التكرار.

 

 

عموماً : لتفادي التكرار  يمكن استخدام استعلام فرعي كمعيار لحقل الاسم  بالاستعلام الالحاقي كالتالي :

Not In (select cus_name from tb1 where cus_name=cus)

مرفق الملف بعد التعديل مع ملاحظة ازالة حقل الترقيم التلقائي .

 

بالتوفيق للجميع

منع التكرار باستخدام استعلام الحاق.rar

تم تعديل بواسطه yousef
  • Like 1
رابط هذا التعليق
شارك

أهلا و سهلا أستاذ يوسف حياك الله و بارك فيك

طريقة أخرى للحل , لكن ايضا لايزال هناك خلل في تصميم البرنامج , و ننصح الأخت بمراجعة التصميم

و لعل المطلوب يكمن في حل لآخر غير حل الاستعلام الالحاقي

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

و بالتالي فانه لتفادي مثل هذا الخطأ , ينصح دائما باستخدام حقل معرف عبارة عن ID  و ليس الاسم

و جزاك الله خيرا

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

جربي التالي

 

في وضع التصميم للجدول  tbl1  وفي حقل  cus_name   خلي الفهرسة    indexed   قيمتها  ( نعم بدون تكرار )  ( Yes (No Duplicates) 

 

استاذ علي ..

 

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

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

السلام عليكم

 

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

 

اتفق مع الحلول المقدمة من الاستاذ علي و الاستاذ رضوان .

 

ولي مشاركة ان سمحتوا لي :

 

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

 

ايضاً رأيت بأن استعلام الالحاق به حقلين و واحد منهم حقل رقم تلقائي و هو يدرج كتسلسل بمجرد الحاق الاسم .. فلماذا نلحقه ؟ و قد يتسبب هذا في خطأ بسبب التكرار.

 

 

عموماً : لتفادي التكرار  يمكن استخدام استعلام فرعي كمعيار لحقل الاسم  بالاستعلام الالحاقي كالتالي :

Not In (select cus_name from tb1 where cus_name=cus)

مرفق الملف بعد التعديل مع ملاحظة ازالة حقل الترقيم التلقائي .

 

بالتوفيق للجميع

 

اشكرك جزيل الشكر واشكر الاستاذ رضوان واستاذ علي..

 

احب التوضيح وايضا اطمع بالاستفادة من خبراتكم في ان قاعدة بياناتي هي للمبيعات وفي كل مرة يحدث عملية بيع للعميل فاني اقوم بادخال العملية بنفس اسم العميل المستخدم دوما. فهل هذه العملية خاطئة كتكرار..؟؟

 

وايضاً فاني ساستخدم استعلام الإلحاق وذلك لاني احتاج الى اظهار جميع العملاء المسجلين في الشركة سواء قامو بالشراء ام لا ولم اجد غير هذا الحل لانه من المزعج ادخالها وهي موجودة مسبقا في الجدول الرئيسي.

 

استاذي العزيز يوسف..اطمع بتوضيح لهذه الدالة لاستفاد منها.

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

وفي كل مرة يحدث عملية بيع للعميل فاني اقوم بادخال العملية بنفس اسم العميل المستخدم دوما. فهل هذه العملية خاطئة كتكرار..؟؟

 

 

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

لان الاسم قد يتغير , و قد تتم كتابته بطرق مختلفة

مثلا : محمد أحمد

محمد احمد

بالنسبة للبرنامج الاسمين مختلفين , مع ان المستخدم يقصد نفس اسم العميل

لذلك في عالم البرمجة يتم الاعتماد على حقل المعرف لكل جدول بيانات أساسي , مثل جدول الموظفين - العملاء - الموردين - الأصناف - .. الخ

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

 

 

 

ليس هذا هو الحل المناسب  

يمكنك انشاء جدول لجميع العملاء سواء قاموا بالشراء أم لم يقوموا , و من خلال استعلام بسيط  يمكن معرفة العملاء الذين قاموا بالشراء فعلا ممن لم يقوموا بذلك

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

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

 

وفي كل مرة يحدث عملية بيع للعميل فاني اقوم بادخال العملية بنفس اسم العميل المستخدم دوما. فهل هذه العملية خاطئة كتكرار..؟؟

 

 

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

لان الاسم قد يتغير , و قد تتم كتابته بطرق مختلفة

مثلا : محمد أحمد

محمد احمد

بالنسبة للبرنامج الاسمين مختلفين , مع ان المستخدم يقصد نفس اسم العميل

لذلك في عالم البرمجة يتم الاعتماد على حقل المعرف لكل جدول بيانات أساسي , مثل جدول الموظفين - العملاء - الموردين - الأصناف - .. الخ

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

 

 

 

ليس هذا هو الحل المناسب  

يمكنك انشاء جدول لجميع العملاء سواء قاموا بالشراء أم لم يقوموا , و من خلال استعلام بسيط  يمكن معرفة العملاء الذين قاموا بالشراء فعلا ممن لم يقوموا بذلك

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

 

 

اشكرك استاذ رضوان جزيل الشكر على التوضيح..

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

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

يمكن الاعتماد عليها مع تعديل بعض مكوناتها اذا دعت الحاجة لذلك

و بالتوفيق

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

بارك الله في الجميع

 

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

 

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

 

ينفذ الاستعلام الفرع اولاً ثم ينفذ الاستعلام الرئيسي ..

 

 

بالتوفيق للجميع

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information