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

حيرني هذا اللغز( مشكلة ثانية تابعة للأولى ) : ماذا لو عندي صنف رئيسي وصنف فرعي في نفس العمود ؟

بدأه vbzaidan في 28 يوليو 2008 · 32 رد · 3,092 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بالنسبة للمشكلة الأولى إنحلت بفضل الله ثم بالكود الذي أرفقه الأخ TareqVB مشكور ا في رده الأخير في هذا الموضوع :

/index.php?showtopic=167394

لكن لم أتنبه لمشكلة أخرى هي أيضا من ضمن متطلبات المشروع ولها علاقة بالمشكلة الأولى وبدون حل الأولى لم توجد الثانية ...

المشكلة الثاني والتي يبدو لي أنها أصعب من الأولى .................. شكلنا كذا ما نخلص من المشروع دا أبدااااا

بطيب ياسيدي شوف المشكلة الثانية :

قاعدة البيانات بشكل موجز هناك الكثير من الجدوال لكن هنا أتطرق فقط لقسم معين ( ليس لها علاقة بالإقسام الأخرى ) :

table entry :

main_item = الصنف الرئيسي sub_item = الصنف الفرعي ( تحت كل صنف واحد رئيسي يوجد واحد أو أكثر صنف فرعي ) cost = التكلفة ( طبعا هنا التكلفة تكون للصنف الفرعي الصنف الرئيسي ماهو إلا إسم فقط لتميز إسم المجموعة )

daydate = تاريخ شراء الصنف

id = ( يعني ممكن تقول فاتورة ما تم شرائه ) PK

-------------------------------

items_table :

sub_name

main_name FK

----------------------------

main table

main_name PK

------------------------------

** توضيح تصويري **

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

2007 _______________ 2008 ________________main_name

السيارة

أجهزة كومبيرتر

الآن أريد عرضها بهذ الشكل :

2007d _______________ 2008 ________________main_name

السيارة

أجهزة كومبيرتر

(بترول)

(شاشة كومبيوتر)

الآن لاحظ معي الأصناف التي بين الأقواس هي أصناف فرعية بغض النظر عن وجود الصنف الرئيسي في المجموعة لأن الصنف الرئيسي سيقوم بجمع ( الزيت + البترول + صيانة + ... ) لكن في نفس الوقت أريد أن

أن أعرف فقط مصاريف البترول في الشهر

** محاولاتي **

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

سأقوم بالبحث وأقوم بمحاولات أخرى علي أجد حل ..

أتمنى من الجميع الإشارة بأي شيء فكرة , نصف حل , أمر , رابط لموقع عربي أو أجنبي لموقع به صلة بالموضوع ...

تحياتي لكم جميع

في إنتظار أرائكم النيرة ...

إعذورني على ألإطالة يا إخوان ..

أخوكم المحب

زيدان

تم تعديل هذه المشاركة بواسطة vbzaidan في 28 يوليو 2008 في 08:08

#2

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

--------------

بالنسبة لمثالك فكر فى عمل جدول فئات الأصناف يرتبط مع جدول الأصناف

-------------

مثلا فئة الصنف ( كمبيوتر ) يقع تحتها - شاشات - بوردات - .........

-------------

يمكننى مساعدتك ولكن من فضلك وضح لى أكثر

-- فيما تستخدم قاعدتك

-- ويمكننا التفكير سويا فى تصميمها من جديد

-----------------------------

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

#3

أشكر للأخ vbm مروره الكريم ...

ـ نعم يوجد جدول يقوم بذلك هو أهم جدول بدونه لما كان البرنامج أصلا أكيد يجب أن يكون هناك جدول يربط كل صنف رئيسي بصنف فرعي

ـ أخي vbm أنا الآن في الربع الأخير من المشروع وأوكد لك أن البنية الداخلية للقاعدة لم أقم بتصميمها إلا بعد بحث وتجارب وكنت من خلال هذا المشروع أستعرض بعض ما تعلمته في sql server 2005

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

ـ بالنسبة لقاعدة البيانات فهي بسيطة إلى حدا (طبعا طبيعة البرنامج هي البساطة والسهولة ) :

* البرنامج المستخدمة :

VC2005 بإستخدام #C

sql server 2005

* تعريف بسيط :

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

خاصة إنا والدي لديه جهاز كومبيوتر خاص به .

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

2- في البداية تقوم بتخزين الأصناف الرئيسية والفرعية أو الرئيسية في صفحة الأصناف أيضا لو حبيت إضافتها في صفحة إدخال المصاريف لكن أثناء الإدخال يحب عليك لإستخدام لوحة المفاتيح في خانة الصنف الفرعي أو الرئيسي وهذه ميزة في حدة ذاتها لأن ليس عليك الذهاب لصفحة إدخال الأصناف إذا كنت في صفحة دفتر المصاريف سيتم إلحاق الصنف الفرعي إلى الصنف الرئيسي تلقائيا .

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

الصنف الرئيسي : السيارة ( ليس موجود في قائمة الأصناف في قاعدة البيانات ( مدخل جديد ) )

الصنف الفرعي : بترول ( وهذا الصنف الفرعي سيتبع الصنف الفرعي )

التكلفة : 50 ريال

ملاحظات : لايوجد

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

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

هنا أستخدم TRIGGER مع STORED PROCEDURE للقيام بذلك

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

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

5- خاصية بحث سريعة

6- حاليا لم يبقى من البرنامج إلى صفحة الجرد وصفحة التقارير :

صفحة الأصناف = تم

صفحة المصاريف = تم

صفحة الجرد والتقارير = ( أنا حاليا هنا ووأوجه المشكلة التي طرحت لكم بصدد حلها )

بعدها سأقوم بتوزيعه للتجربة

7- ( صورة لصفحة إدخال الأصناف وصفحة إدخال المصاريف )

صفحة إدخال الأصناف :

728200891619pmpr7.th.png

صفحة إدخال المصاريف :

728200891210pmcd1.th.png

8- vbm هل متخصص في برجمة الواجهة أو ربط الواجهة بقاعدة البيانات أقصد هنا ADO.net أو فقط تخصصك تصميم وبرمجة قاعدة البيانات .

تم تعديل هذه المشاركة بواسطة vbzaidan في 28 يوليو 2008 في 21:05

#4
اقتباس
- vbm هل متخصص في برجمة الواجهة أو ربط الواجهة بقاعدة البيانات أقصد هنا ADO.net أو فقط تخصصك تصميم وبرمجة قاعدة البيانات .

-----------------------

-- متخصص فى تطوير التطبيقات vb.net & sql server 2005

-- أخر تطبيق قمت بة نظام لإدارة شركة موزع لخدمة الأنترنت والشبكات

-----------------------------

أخى

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

--------------------------------------

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

#5

بارك الله فيك وكثر الله من أمثالك :

عمل سير البرنامج :

الواجهة رقم : 1 ( حساب المستخدم ) وهي لإنشاء قاعدة بيانات جديدة خاصة مع كلمة سر -- > لم أبدا فيها بعد

الواجهة رقم : 2 ( الأصناف ) -- > تم الإنتهاء منها

الواجهة رقم 3 : ( دفتر المصاريف ) --> تم الإنتهاء منها أيضا

إريد إضافة خيار : عمل نسخ وإسترجاع قاعد البيانات الخاصة بالمستخدم في هذه الواجهة

الواجهة رقم 4 : ( جرد المصاريف ) وهي لمعاينة ومقارنة مجموع المواد المستهلكة شهريا وسنويا ويوميا -----------------> أنا الآن هنا والمشكلة التي طرحتها لكم في بداية الموضوع

الواجهة رقم 5 ( طباعة التقارير ) --> لم أبدا فيها بعد

الواجهة رقم 6 ( About us ) --> لم أبداء فيها بعد

طلب المساعدة :

1- إنشاء قاعدة بيانات جديدة لمستخدم جديدة بكلمة سر ( هذا كله بدون وجود الـ sql server 2005 على الجهاز ) يعني حيكون الشغل تقريبا على الفيجول ستيديو هو من سيقوم بإنشاء قاعدة بيانات جديدة بالنسبة للسكريبت الخاص بإنشاء قاعدة البيانات سأطلب من الـ sql server 2005 القيام بعمل سكريبت لإنشاء قاعدة البيانات وأعمله له لصق في الفيجيول ستيديو طبعا هناك أوامر خاص بذلك سأستخدمها

هل عندك رأي في هذه النقطة ؟

2- التقارير وما أدراك ما التقارير الله يعيني عليها ما نبغى نثقل عليك هذه سأقوم بها أنا عندي خلفية بسيط عن كيفية العمل لكن الآن ليس وقتها سيكون البدء في العمل التقارير مقرون بشرط الأنتهاء من واجهة رقم 4

3- في الواجهة رقم 4 سأقوم بعرض المشكلة مرة أخرى :

أريد datagridview بعر ض نتيجة الجرد كالتالي :

بحيث أجعل عمود المصاريف يضم صنف رئيسي وصنف فرعي في نفس الوقت ( ما أعتقد هذا ممكن لكن سأحاول )

لأن جرد التقارير يكمن عملها في هذه النقطة فإذا لم أستطع فلا فائدة من إضافتها للمشروع .

مثال :

فرضا أن تريد معرفة مصاريف الكهرباء ( وهو قسم فرعي متفرع من القسم الرئيسي (البيت ))

وتريد معرفة أيضا مصاريف السيارة ( وهي قسم رئيسي يضم تحته الأقسام الفرعية الأتية : بترول & زيت & تصليح )

إذا لدينا صنف فرعي وصنف رئيسي في نفس العمود كيف يتم عمل هذا إنظر الجدول بالأسفل :

الصنف _______ مجموع في شهر رجب __________ شهر شعبان _____________ شهر رمضان___________

الكهرباء____________ _1000__________________ 2000 ________________3000

السيارة ____________ _789___________________ 454 _________________900

أريد فقط الـ Querey الذي يجلعني أعرض مثل هذه النتيجة في جدول واحد أرجو أن تكون الصورة إتضحت الآن

4- هناك مشكلة أخيرة سالتفت إليها لاحقا وهو أنك عندما تغيير التاريخ من لوحة التحكم من تاريخ ميلادي إلى هجري يرسم لي الفيجول ستديو خطأ إنظر ا لصورة :

728200891210pmov8.png

728200891210pmov8.d1d4a92ed0.jpg

أعتقد أن هناك عملية تحويل تتم من الـ sql server 2005 إذا كان التاريخ ميلادي أو هجري وهذا كله طبعا سيتم داخل الـ stored proceduer لكي لايظهر لي رسالة الخطأ أعلاه

تحياتي للجميع

تم تعديل هذه المشاركة بواسطة vbzaidan في 29 يوليو 2008 في 05:05

#6

بخصوص الجرد - أولا -

هل ما تريدة هو جرد الصنف الرئيسى وأسفلة أصنافة الفرعية

---------------------------

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

من فضلك ضع لى صورة تصورك لواجهة الجرد - صورة الفورمة -

حتى أعرف على أى أساس يمكن مساعدتك بالكود - سيكون الكود vb.net -

ويمكن شرح الفكرة لتتولى تنفيذها

-----------------------------------------

اقتباس
1- إنشاء قاعدة بيانات جديدة لمستخدم جديدة بكلمة سر ( هذا كله بدون وجود الـ sql server 2005 على الجهاز ) يعني حيكون الشغل تقريبا على الفيجول ستيديو هو من سيقوم بإنشاء قاعدة بيانات جديدة بالنسبة للسكريبت الخاص بإنشاء قاعدة البيانات سأطلب من الـ sql server 2005 القيام بعمل سكريبت لإنشاء قاعدة البيانات وأعمله له لصق في الفيجيول ستيديو طبعا هناك أوامر خاص بذلك سأستخدمها

هل عندك رأي في هذه النقطة ؟

-----------

لا يمكن تنفيذ قاعدة بيانات بدون سيرفر sql server 2005

- أنصحك ب ms - sql server 2005 express

- يمكن طلب script من sql server ثم حفظة فى ملف وعمل ملف باتش لتنفيذة

- أو عمل إتصال عادى عن طريق ado.net بالسيرفر وبقاعدة master وتنفيذ الكود مع وضع بارميترات لإسم القاعدة الجديدة وإسم المستخدم وكلمة المرور وما تريدة

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

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

-------------------------------------------------------------------------------------------------------

اقتباس
الواجهة رقم 3 : ( دفتر المصاريف ) --> تم الإنتهاء منها أيضا

إريد إضافة خيار : عمل نسخ وإسترجاع قاعد البيانات الخاصة بالمستخدم في هذه الواجهة

-- لدى برنامج صغير يعتمد على smo قمت بتنفيذة فى عملى على البرنامج الأخير ولكن للأسف يقوم بعمل ربط وإزالة ووعمل نسخة إحتياطية وإسترجاعها لقاعدة بيانات البرنامج فقط - سوف أقوم بتطويرة ليعمل على كل قواعد البيانات من

نوع sql server وسيكون مجانى

--- أو يمكن أيضا تنفيذ نفس الفكرة بواسطة إسكريبت t - sql ويمكن لبرنامجك الأتصال مع قاعدة master

وعمل نسخة إحتياطية أو لإسترجاع نسخة إحتياطية

--- ولكنى أفضل كائنات smo

---------------------------------------------------------------

طريقة حفظ الأسكريبت - تعمل مع أى عملية على السيرفر

-------

TareqVB كتب:
السلام عليكم

1- ادخل على SQL Server Management Studio Express وادخل وفعل حساب SA وقبل عمل موافق في اعلى الصفحةالتفعيل يوجد زر Script اختر احدى الخيارات مثل ClipBoard واعمل بعد ذلك تراجع عن التغيير بعد ذلك يكون عندك في الحافظة السكربت الذي يقوم بالتغيير .

2-للتنفيذ يمكن استخدام الملفات الدفعية Batch Files فمثلا خزن الملف السكريبت باسم 1.SQL واعمل ملف دفعي .bat واكتب به مايلي :

sqlcmd -E -i 1.sql

--------------------------

-- لعمليات قاعدة البيانات أو الجداول -- إضغط بزر الماوس الأيمن على العنصر المطلوب وإختر العملية المطلوبة ثم طريقة حفظ الأسكريبت

-----------------------------------------------

وشكرا لك

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

#7

أشكر لكم إهتمامكم في تقديم يد المساعدة ...

اقتباس
بخصوص الجرد - أولا -

هل ما تريدة هو جرد الصنف الرئيسى وأسفلة أصنافة الفرعي

نعم أريد ذلك أنظر الصورة بالأسفل :

729200881521pmoa0.png

729200881521pmoa0.0becee591d.jpg

اقتباس
لا يمكن تنفيذ قاعدة بيانات بدون سيرفر SQL server 2005

- أنصحك ب ms - SQL server 2005 express

- يمكن طلب script من SQL server ثم حفظة فى ملف وعمل ملف باتش لتنفيذة

- أو عمل إتصال عادى عن طريق ado.net بالسيرفر وبقاعدة master وتنفيذ الكود مع وضع بارميترات لإسم القاعدة الجديدة وإسم المستخدم وكلمة المرور وما تريدة

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

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

بالنسبة لهذه النقطة فأنا أقصد عملية التوزيع فلا يعقل أن على والدي تنصيب برنامج الـ SQL SERVER 205 EXPRESS علي جهازه مثلا ؟؟

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

تم تعديل هذه المشاركة بواسطة vbzaidan في 29 يوليو 2008 في 20:13

#8
اقتباس
بالنسبة لهذه النقطة فأنا أقصد عملية التوزيع فلا يعقل أن على والدي تنصيب برنامج الـ SQL SERVER 205 EXPRESS علي جهازه مثلا ؟؟

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

-----------------

هذا للأسف لا مفر منة لا بد من تثبيت sql server ك server

وربط قاعدة البيانات بة -- وإلا فعليك بتحويل القاعدة إلى أكسيس

--------------------------------------------------------------------

بالنسبة للنقاط التالية

يرجى التوضيح أكثر بصورة للفورمة المطلوبة - شكلها كما هى بالبرنامج -

--------------------------------------------------------------------

غالبا سنحتاج لجملة sql معقدة تقوم بقراءة الصنف الرئيسى اولا ثم تضع بياناتة على النموذج

ثم تقوم بقراءة الأصناف الفرعية تحتة لتضع البيانات الخاصة بها أسفل البيانات الخاصة بالصنف الرئيسى

-------------------------------------

ما يعيب هذة الطريقة

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

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

بإنتظار ردك ..

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

#9

وجدت الكود المعقد مقدم من أحد الإخوة في موقع أجنبي :

WITH tempEntry
AS 
(
	SELECT 	main_name , sub_name	, cost, MONTH ( daydate ) AS Emonth
	FROM 	[entry]
	WHERE 	YEAR(daydate) = 2008
)
SELECT	*
FROM	
(
	SELECT 	sub_name   , cost, Emonth
	FROM 	tempEntry 
) s
PIVOT
(
	SUM(cost) FOR Emonth IN ([1],[7],[11] )
) AS o 

UNION All

SELECT	*
FROM	
(
	SELECT 	main_name, cost, Emonth
	FROM 	tempEntry 
) s
PIVOT
(
	SUM(cost) FOR Emonth IN ([1],[7],[11] )
) AS o

لكن لماذا يخرج لي رسالة الخطأ هذه :

Msg 8155, Level 16, State 2, Line 1
No column was specified for column 1 of 's'.
#10

وجدت الكود المعقد مقدم من أحد الإخوة في موقع أجنبي :

WITH tempEntry
AS 
(
	SELECT 	main_name, sub_name, cost, MONTH ( daydate ) AS Emonth
	FROM 	[entry]
	WHERE 	YEAR(daydate) = 2008
)
SELECT	*
FROM	
(
	SELECT 	sub_name COLLATE SQL_Latin1_General_CP1256_CS_AS, cost, Emonth
	FROM 	tempEntry 
) s
PIVOT
(
	SUM(cost) FOR Emonth IN ([1],[7],[11] )
) AS o 

UNION ALL

SELECT	*
FROM	
(
	SELECT 	main_name, cost, Emonth
	FROM 	tempEntry 
) s
PIVOT
(
	SUM(cost) FOR Emonth IN ([1],[7],[11] )
   ) AS o

لكن لماذا يخرج لي رسالة الخطأ هذه :

Msg 8155, Level 16, State 2, Line 1
No column was specified for column 1 of 's'.
#11

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

مر إسبوع ولم أجد حلا ...

تم تعديل هذه المشاركة بواسطة vbzaidan في 1 أغسطس 2008 في 05:01

#12

هل من الممكن أن ترفق لى القاعدة وبها عدة أصناف

----------------

أو مخطط لها لأقوم بعملها لدى وأطبق ما تريدة

------------

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

----------------

ولكن يبدو أنك تريد STORED Procedure

تم تعديل هذه المشاركة بواسطة vbm في 1 أغسطس 2008 في 06:22

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

#13

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

أتمنى أن أرى ردك في أقرب فرصة ممكنة ...

أخوك

زيدان

تم تعديل هذه المشاركة بواسطة vbzaidan في 2 أغسطس 2008 في 12:39

#14
اقتباس
.. تفضل هذه هي قواعد البيانات ....

---------------------------

-- أين ...............؟!!!!!

تم تعديل هذه المشاركة بواسطة vbm في 2 أغسطس 2008 في 14:23

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

#15

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

http://www.mediafire.com/?5g9gn2dzzgq

#16

لم أستطع التحميل من الرابط - برجاء الرفع على موقع أخر وليكن

http://www.4shared.com/

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

#18

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

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

#19

هل توصلت إلى شيء أخي vbm ؟

وحشتني ردودك ...

#20

أخى العزيز -- بعد التحية

------------ ملاحظات -----

-- أولا وجدت العلاقة الموجودة بين الجدول MainItem_Tو entry

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

المفروض تكون مع SubItem_T

---- الملاحظة الثانية هى قيامك بعدم إستخدام حقول المفتاح بصورة صحيحة

--------------------------------

-- فكرتى الحالية التى أحاول أن أطبقها

هى عمل متغير يعود بعدد صفوف الجدول الرئيسى للأصناف

ثم عمل loop لتعود كل مرة بإسم الصنف الرئيسى

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

-- ثم أخذ هذة المبلغ وجمعها كلها لتكون المبلغ الخاص بالصنف الرئيسى

-- ثم إخراج صفوف جديدة مرتبة تكون بالصنف الرئيسى وإجمالية ثم الأصناف الفرعية منة ولكلا منها صف بدورة

--- وهكذا إلى أن ينتهى loop

---------------------------------

حاليا أواجة بعض الصعوبات بها وقد أغيرها

---------------------------------------

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

#21

أشكرك على هذه الملاحظات القيمة ...

1- بالنسبة للعلاقات الغرض من العلاقة بين الـ mainitem_T و entry تمكين عملية الحذف النهائي إذا حذف مثلا الصنف الرئيسي ( ا لمواد الغذائية ) سيتم حذف كل سجل له علاقة بهذا الصنف الرئيسي بإستخدام خاصية casecade تحت وظيفة Delete Rule .

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

( store procedure )

(( قد أكون أخطأت في عمل الـ كاسكيد في قاعدة البيانات التي رفعتها لك على الموقع المذكور )) لأن لدي نسخة مماثلة من قاعدة البيانات .

2- يوجد Trigger تحت الجدول entry هذا فقط لتحديث المجموع عند الإضافة أو الحذف أو التحديث ..

3- ( لملاحظة الثانية هى قيامك بعدم إستخدام حقول المفتاح بصورة صحيحة ) لماذا هل توضح لي السبب أكون لك شاكرا ؟

تم تعديل هذه المشاركة بواسطة vbzaidan في 6 أغسطس 2008 في 08:57

#22

أعتقد يا إستاذي vbm أن الحل سيكون بإستخدام #C وليس بإستخدام T-sql ... لحل مشكلة عرض الأصناف الفرعية والرئيسية في عمود واحد فقط .... لإتمام عملية الجرد بنجاح ...

تم تعديل هذه المشاركة بواسطة vbzaidan في 6 أغسطس 2008 في 09:04

#23
vbzaidan كتب:
أعتقد يا إستاذي vbm أن الحل سيكون بإستخدام #C وليس بإستخدام T-sql ... لحل مشكلة عرض الأصناف الفرعية والرئيسية في عمود واحد فقط .... لإتمام عملية الجرد بنجاح ...

اخى العزيز --- أولا لست أستاذك فأنا ما زلت أتعلم مثلى مثلك

-------

ثانيا -- وهذا ما حاولت أن أقوم بتوصيلة لك من البداية - أن تستخدم كود لغة البرمجة الخاصة بك لعمل ذلك ( vb.net - c#)

------------------------

ثم ما رأيك بهذا الشكل للعلاقات

post-111738-1218014116_thumb.jpg

ويمكنك تفعيل خصائص الحذف والتحديث للعلاقات كما تريد

راجع

/index.php?showtopic=87202

----------------

وما زلت فى محاولة كود t -sql لأنة سيكون إجراء مخزن وبالتالى تضمن سرعتة

تم تعديل هذه المشاركة بواسطة vbm في 6 أغسطس 2008 في 12:29

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

#24

هناك نقاط مهمة سأوضحها :

1 - عامود sub_name يجب أن لايكون مفتاح أساسي لأن ذلك يخالف وظيفة عمل البرنامج مثال للتوضيح :

لديك :

صنف رئيسي - > سيارة صنف فرعي -> بترول

صنف رئيسي - > موتورسيكل صنف فرعي -> بترول

هنا سيرفض الـ sql server 2005 تكرار حقل الصنف الفرعي

أريت حقل الأصناف الفرعية يحتوي على أسماء متكررة ( بترول )

الحالة الثانية : في حالة عدم جعل sub_name مفتاح رئيسي

لذلك قمت بعمل إجراء إسمه : XinsertXupdateXdelete_subcat

هذا الإجراء يضمن لك هذه العملية :

صنف رئيسي - > سيارة صنف فرعي -> بترول صنف فرعي آخر -> بترول ( يخرج البرنامج رسالة خطأ في هذه الحالة )

صنف رئيسي - > موتورسيكل صنف فرعي -> بترول

هنا لن يرفض الـ sql server هذه العملية مهما كررت وسيتم الإجراء بالقيام بمهمة ( عدم تكرار صنفين فرعيين لهما نفس الإسم تحت صنف رئيسي واحد سيرسل الإجراء قيمة false )

شكرا لك على الرابط ...

تم تعديل هذه المشاركة بواسطة vbzaidan في 6 أغسطس 2008 في 15:06

#25

حسنا هل وجدت حلا لمشكلة الخطأ التي تحدث عند تغيير التاريخ إلى هجري ....

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

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

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

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

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