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

أحتاج حل لمشكلة حفظ البيانات في فورم Master Detail

بدأه human2x في 22 سبتمبر 2009 · 14 رد · 1,094 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أحتاج المساعدة في برنامج أقوم بتصميمه لعمل فواتير

لدي قاعدة بيانات فيها عدة جداول ومنها الجدولين التاليين:

1- الفواتير (orders) وفيه الحقول التالية:

InvNo رقم الفاتورة - مفتاح أساسي

Cid رقم العميل

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

2- تفاصيل الفاتورة (Order-Detail) وفيه الحقول التالية:

InvNo رقم الفاتورة - مفتاح أجنبي

ItemNo رقم الصنف

Quantity الكمية

Price السعر

تربطهم علاقة عن طريق حقل InvNo كما يلي : orders (InvNo - Primary Key)

Order-Detail (InvNo - Foriegn Key)

قمت بتصميم نموذج (Master - Detail) عن طريق السحب والاسقاط من الـ Data Sources باستخدام DataSet

Orders = Master

Order-Detail = Detail

كما في الصورة

714266866.jpg

لحد الآن كل شي تمام الإضافة والتعديل والحفظ.

لكن ما أريده الان هو إخفاء أو عمود الـ InvNo من الـDataGridView لأنه أصلاً موجود في الأعلى ومن غير المناسب تكراره في كل صف في الـDataGridView .

لقد قمت بذلك من خلال الضغط باليمين على الـ DataGridView ثم اخترت Edit Columns وعدلت خاصية Visible إلى False لعمود الـInvNo .

قمت بتشغيل الفورم وكان كل شي تمام ماعدا أنه يرفض إضافة فاتورة جديدة ، عندما أضغط على زر جديد يسمح بكتابة البيانات كالمتعاد في كل الحقول وفي الـDataGridView ولكن عند الضغط على زر الحفظ يعطيني رسالة خطأ مفادها أن الـ InvNo فيه مشكلة لأنه ربما ستكون هناك قيمة فارغة.

وهذه الرسالة تظهر فقط بعد إخفاء عمود الـ InvNo من الـDataGridView .

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

سؤال آخر :

عندما أضغط على زر جديد يقوم بإظهار رقم سالب في خانة الـ InvNo ولا يظهر رقم الفاتورة إلا بعد الحفظ هل ممكن أن يظهر رقم الفاتورة من البداية ؟

تم تعديل هذه المشاركة بواسطة human2x في 22 سبتمبر 2009 في 13:54

#2

اخي نصيحة مني لا تشتغل عن طريق wizard خلي كل شغلك برمجيا

ليش؟؟لانه طريقتك عليها مشاكل كتير يصعب حلها

حاول يكون شغلك كله برمجي افضل

تحياتي

FineDesign For Graphic and WebDesign

ForEach(Minute in MyLife)

MyExperience ++;

#3

اشكرك أخي abu_love

نصيحتك في محلها

ولكني الان على الاقل احتاج معرفة الحل بطريقة الـwizard لأن متأكد انه مش معقول ما يكون لها حل.

#4

أخي abu_love ! أرجوا أن تعطيني بعض الانتباه وستنحل إن شاء الله

أنا أحفظ عن طريق الأكواد التالية :

Me.Validate()

Me.OrdersTableAdapter.Update(Me.AXSDataSet)

Me.OrderDetailTableAdapter.Update(Me.AXSDataSet)

طبعاً السطر الثاني لحفظ البيانات في الجدول الأول - orders

أما السطر الثالث فهو لحفظ البيانات في الجدول الثاني - orderDetail

رسالة الخطأ تظهر عند السطر الثالث. لأنه يحاول حفظ قيمة في جدول orderDetail وهناك أصلاً قيمة يحب أن تكون موجودة في جدول الـorders وهي الـ invNo

في هذه اللحظة قيمة الـ InvNo في الـ orders غير موجودة ولهذا تظهر رسالة الخطأ في السطر الثالث.

هل هناك طريقة لتثبيت الحفظ في جدول الـ orders حتى تكون جاهزة لكي يستطيع الحفظ في جدول الـorderDetail

أنا متأكد أن الحل قريب إن شاء الله

تم تعديل هذه المشاركة بواسطة human2x في 22 سبتمبر 2009 في 14:44

#5

اخي اسألك سؤال : كيف قمت بسحب الجدول OrderDetails من نافذة Data Sources ؟ هل من خلال الجدول OrderDetails المنضوي تحت Orders ام من الجدول OrderDetails المباشر ؟

هناك فرق بين الاثنين.

#6

اشي طبيعي رح يصير معك مشكلة انتا لما حذفت او اخفيت حقل invno من DataGridView حذفتها برمجيا من الربط وصار لما تضغط على حفظ يطلع مع البرنامج انه خانة الinvno فارغة وما بيزبط ينحفظ فارغ لانه مفتاح رئيسي ، انتا بتشتغل عن طريق wizard يعني لما انت تسقط الجدول داخل الفورم البرنامج بيبرمجه تلقائياً ، بس ع العموم يا ريت لو ترفقلنا المثال نشوفه ونتأكد لاني ما عمري جربت اشتغل على wizerd

FineDesign For Graphic and WebDesign

ForEach(Minute in MyLife)

MyExperience ++;

#7

الاخ الكريم

أولا يجب أن تأخذ الجدول Order_Details المنضوى تحت Orders كما أشار الى ذلك الاخ النبهانى و المسأله بسيطه اذهب الى خواص العمود الذى تريد الغاءه بدون ان تحوله الى غير مرئى وغير الرقم 100 وهو default والذى يعبر عن اتساع العمود و اجعله 5 مثلا حينئذ لن يظهر لك العمود عند التشغيل

تقبل التحيه

#8

أشكر الجميع على التفاعل

نعم بالطبع لقد قمت بسحب بيانات الـ OrderDetail الموجود تحت الحقول التي يظهرها جدول الـ Orders

والذي يطهر بعد توسيع جدول الـ Orders حيث ظهرت حقول جدول الـ Orders ومن ثم ظهر جدول الـ OrderDetail بعد آخر حقل وهو الذي قمت بسحبه إلى الفورم

وليس الـ OrderDetail الموجود بشكل مستقل في نفس مستوى الـ Orders

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

#9

اخي الحبيب يمكنك فعل ذلك بالتحكم في جملة الاستعلام المرسلة للداتا قريد وذلك في حدث load الخاص بالفروم لأن المعالج تلقائيا يقوم بإضافة البيانات إلى جميع ولأنك أخفيت الحقل فكأنك حذفته من البرنامج لذلك قم باختيار الحقول التي تريد عرضها في الداتا قريد من مربع datasource وذلك بالضغط على configure Dataset with wizard ومن ثم اختر الحقول المطلوب من جدول order_details

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

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

#10

الأخ عبدالسلام

الطريقة التي ذكرتها تقوم فقط بتقليل عرض العمود إلى أقل قيمة وليس إخفاء العمود ، أليس كذلك ؟

#11

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

تقبل التحيه

#12

طيب دعونا نترك الطريقة التي أتبعها أنا ربما فعلاً لا تكون هي الطريقة الصحيحة والمتبعة عند المبرمجين المحترفين .

أتمنى من أحد الأخوان تكرماً أن يرفع لنا أي مثال بسيط لطريقة عمل فاتورة بالشكل الصحيح.

أنا بصراحة مبتدئ في vb 2008 ولا أعرف ما الذي يجب عمله وما هو الصح وما الذي يجب فعله وما يجب تركه.

أرجوا من اي الإخوة أن يساعدني في هذا الموضوع.

#13

اخي افضل طريقة هي عن طريق الكود وبالتالي لن تضطر لاستخدام المعالج حيث عن عملها بالكود يصبح كل شيء امامك واضح

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

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

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

#14

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

انا اول ما حبيت اتعلم الدوت نت كنت متردد قعدت شهرين كاملين لحد ما قررت اتعلمها

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

تم تعديل هذه المشاركة بواسطة ibu_love في 25 سبتمبر 2009 في 18:08

FineDesign For Graphic and WebDesign

ForEach(Minute in MyLife)

MyExperience ++;

#15

اشكر الأخوة الذي قاموا بالرد في موضوعي

أريد أن اقول أني لدي خبرة سابقة في vb6 ولي فيها الكثير من البرامج .

ولقد قمت بتحميل معظم الفيديوهات التعليمية لـ vb.net 2008 الموجودة في موقع مايكروسوفت واتبعتها بشكل مفصل.

وحبيت أن أنتقل من vb6 إلى vb.net 2008 بشكل خفيف وسريع وما حبيت أبتدئ فيها من الصفر.

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

مرة أخرى أشكر الجميع على وقفتهم الصادقة.

تم تعديل هذه المشاركة بواسطة human2x في 25 سبتمبر 2009 في 23:55

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

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

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

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

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