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

سؤال عن ال relation

مغلق
بدأه seahmad في 8 فبراير 2005 · 6 رد · 738 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

وسؤالي لآخر مرة قبل أن أعلن ترك التعامل مع قواعد البيانات:

عندي جدولين الأول مرتبط بالثاني والPK لكل من الجدولين بهما خاصية Identity=True (يعني ترقيم تلقائي ليست هنا المشكلة حتى لو بدون هذه الخاصية فالمشكلة أيضا قائمة )

وبواسطة الويزارد عملت new data form

واخترت الجدولين وعملت بينهما relation أثناء الويزارد واخترت إمكانية التعديل والحذف والإضافة

ثم بعد ذلك عملت رن بعدما جعلت هذا الفورم هو الstartup form

بدأت بإدخال البيانات بعد ضغط زر سجل جديد (ADD)

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

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

(بالمناسبة أنا أحاول لأكثر شهر وتطرقت إلى الكود والحفظ بواسطته ولكن لم أصل إلى الحل)

post-62-1107880069_thumb.jpg

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#2

السلام عليكم

أخي الفاضل

أشعر أن هناك تفاصيل ناقصة

لذلك وحتى لاتترك التعامل مع قواعد البيانات أرجو منك وضع قاعدة بيانات تحتوي على هذين الجدولين فقط (أو الSQL SCRIPT الخاص بهما إذا كنت تستخدم SQLSERVER) وكذلك الفورم الذي صممته حتى أفحصهم بدقة وأجيبك إجابة دقيقة

وفقك الله

#3

حسنا سأفعل إن شاء الله..

ولكن الأسهل علي (ومع أني أقدر وقتك) : ممكن أن تصمم جدولين على sqlserver وتربط بينهما والجدولين كالتالي:

الجدول الأول(Header):

رقم الفاتورة (عبارة عن PK)

تاريخ الفاتورة

الجدول الثاني(Details):

رقم التفصيل (PK)

رقم الفاتورة (FK)

رقم القطعة

السعر

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

ثم تستخدم الويزارد في vb.net وذلك بإضافة Add New Item واختر DataForm (كما وضحت في الأعلى).

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

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#4

هذا ملف مرفق يحتوي على المشروع وعلى قاعدة بيانات sqlserver يمكنك استخدامها بعمل attach db من داخل بيئة sqlserver

ومن داخل المشروع غير الconnection string للكونكشن الموجود في الديزاين باسم oledbConnection1 وذلك بتعديل إسم الجهاز وهو اسم جهازك

إذا في أي شيئ غير واضح ياريت لو تخبروني بذلك

Project AND DB.zip

تم تعديل هذه المشاركة بواسطة seahmad في 8 فبراير 2005 في 21:28

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#5

السلام عليكم

أخي الكريم

مبدئياً قمت بتجربة مشروعك مع تغيير واحد فقط وهو جملة الاتصال ذاتها حتى تتناسب مع إعدادت SQL Server الخاص بي وكانت النتيجة ..... لا أخطاء أو إن شئت قل لا رسائل أخطاء ولكن ....

أخي هناك خطأ واضح في تصميم الجداول نفسها اسمح لي أن أنبهك له ..

جداول التفاصيل Details عامة يكون لها في الغالب مفتاح أساسي ولكن هذا المفتاح لا يكون رقم التفصيل وهنا ركز معي ..

فلنفرض أن المستخدم أراد أن يدخل تفاصيل فاتورة فما الذي يجب ألا يتكرر هنا (أقصد يكون مفتاحاً) ؟

بالطبع ليس رقم الفاتورة ، وأيضاً ليس رقم الصنف !! إذاً ماذا ؟؟

أقول لك .. الذي يجب أن يكون فريداً هما معاً أي رقم الفاتورة ورقم الصنف فليس منطقياً أن يدخل في الفاتورة رقم 5 الصنف رقم 3 ويحدد له 4 وحدات ثم يدخل في نفس الفاتورة رقم 5 الصنف رقم 3 مرة أخرى ثم يحدد له 7 وحدات فهذا تكرار لا داعي له إذ من الممكن أن يدخل هذا الصنف مرة واحدة فقط ويحدد له 4 + 7 = 11 وحدة

هل ذهبت بعيداً ؟؟ سامحني أحببت التوضيح

عموماً وحتى أختصر فيجب أن تقوم بتعديل جدول التفاصيل وتحذف حقل "رقم التفصيل" ، ومن ثم تحدد الحقلين رقم الفاتورة ورقم القطعة (الإثنين معاً) على أنهما المفتاح الأساسي لهذا الجدول

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

أرجو أن أكون قد قمت بالتوضيح ولو قليلاً ، عموماً جرب والله المستعان

وفقنا الله وإياك لما يحبه ويرضاه.

#6

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

بارك الله فيك على هذا التنبيه المهم وجزاك الله خيرا على الوقت الذي بذلته من أجلي

وأنا بالفعل قمت بتغيير مفاتيح الجداول وهي بالواقع أربعة جداول كل جدول عبارة عن تفصيل(Details) للذي قبله ونجحت الطريقة ولم تظهر لي رسائل

أما بالنسبة للنسخة التي أرفقتها بالأعلى لا يمكن أن لا تظهر لك رسائل

لكن لماذا هذه الرسائل الغريبة وأنا متأكد من عدم وجود أخطاء بصرف النظر عن أنه قد يحدث تكرار... ولعلمك أنا مبرمج على آكسس منذ 4 سنوات وأستخدم نفس هذه الطريقة في العلاقات بين الجداول وكنت أفضلها لأنها أريح لي من الطريقة الثانية التي نبهتني لها .. ولم أجد يوما في الآكسس أي مشاكل ، أما في SQLServer كاد رأسي يشيب من هذه المشكلة التي لم يخطر ببالي أبدا أنها هي السبب.

على العموم أشكرك مرة أخرى ولكني أشعر أني سأواجه مشاكل أخرى بالعلاقات وقد أحتاج إلى نصائحك مرة أخرى والسلام عليكم ورحمة الله وبركاته

أبو حسين

فليسطيني مقيم في السعودية

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#7

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

الحمد لله من قبل ومن بعد

وإذا إحتجت أي شيء أنا أعرفه فبإذن الله تعالى لن أبخل به عليك

وفقنا الله وإياك لما يحبه ويرضاه

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

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