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

كيف يمكن نسخ بيانات فاتورة Master Details

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

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

عندى بيانات فاتورة بالشكل التالى مسلسل - رقم الشهر الاجمالى ودة فى جدول ال Master وعندى جدول اخر Details بحفظ فيه تفاصيل الفاتورة

المطلوب منى نسخ بيانات جميع الفواتير المحصلة فى شهر 1 مثلا الى شهر جديد شهر 2

المقصود نسخ ال Master وكل ال Details التابع له

الجدول الرئيسى

مسلسل - رقم الشهر - رقم الموظف - الاجمالى

1 1 100 1000

جدول التفاصيل

ترقيم تلفائى -مسلسل من الجدول الرئيسى fk- المبلغ

1 1 100

2 1 200

3 1 700

المطلوب يااخوان نسخ البيانات مرة اخرة مع تغير كود الشهر يارب يكون المطلوب وضح

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

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#2

يمكن كتابة برنامج صغير يقوم بعمل Loop لإضافة الـ Records لكن مع تغيير قيمة الشهر!

#3

انظر الى الككود التالي وقد استخدمت به ال cursor وتحتاج الى تغيير اسماء الجداول والحقول

DECLARE test_cursor CURSOR
READ_ONLY
FOR SELECT   id,empid,total  FROM tblMaster  --where DECLARE @id int ,@empid int ,@total int 
DECLARE @identity int

OPEN test_cursor

FETCH NEXT FROM test_cursor INTO @id  ,@empid  ,@total 
WHILE (@@fetch_status <> -1)
BEGIN IF (@@fetch_status <> -2)
	BEGIN --بدل  2   تضع  اي  شهر  تريد
	insert  into tblMaster (empid,month,total) values(@empid ,  2  ,@total)

     select @identity =@@identity  -- ألرقم الجديد 

    insert  into Detail (pk,total) select @identity ,total from detail where pk = @id 
	END
	FETCH NEXT FROM test_cursor INTO  @id  ,@empid  ,@total
END

CLOSE test_cursor
DEALLOCATE test_cursor

وفي النهاية هذه الفكرة ويمكن التطوير عليها واضافة الكود الى اجراء مخزن واستخدام ال trans وما الى ذلك

#4
use tempdb

GO

Drop Table Detail
Drop Table Master


create Table Master(id int identity Primary Key, _month int , emp_no int)
Create Table Detail(id int identity , MasterId int Foreign Key references Master(id), _value int )

Insert Master(_month, emp_no) Select 1,1
Insert Master(_month, emp_no) Select 1,2
Insert Master(_month, emp_no) Select 1,3
Insert Master(_month, emp_no) Select 1,4

GO

Insert Detail(MasterId, _value)  Select 1,1455
Insert Detail(MasterId, _value)  Select 1,1548
Insert Detail(MasterId, _value)  Select 1,1365

Insert Detail(MasterId, _value)  Select 2,2544
Insert Detail(MasterId, _value)  Select 2,2544
Insert Detail(MasterId, _value)  Select 2,2447

Insert Detail(MasterId, _value)  Select 3,3554
Insert Detail(MasterId, _value)  Select 3,3264
Insert Detail(MasterId, _value)  Select 3,3254

Insert Detail(MasterId, _value)  Select 4,455
Insert Detail(MasterId, _value)  Select 4,4655
Insert Detail(MasterId, _value)  Select 4,4521

GO

-- إنشاء إجرائية مخزنة للنقل
Create Procedure Transfer_to_New_Month
	@month Int
AS

	Create Table #Master(id int , _month int , emp_no int) 
	Insert #Master Select * From Master

	Declare @id int , @newId Int 

	Declare C Cursor For Select id from #Master  
	Open C

	Fetch Next From C Into @id 

	while @@fetch_status = 0
	begin

		Insert Into Master(_month, emp_no) Select @month, emp_no From Master Where id =@id
		Select @newId  = @@identity 

		Insert Into Detail(MasterId, _value) 
			Select @newId, _value From Detail Where MasterId = @id

		--Select @newId, _value From Detail Where MasterId = @id

		Fetch Next From C Into @id 

	end

	Close C
	DeAllocate C



GO

-- إختبار
exec Transfer_to_New_Month @month = 2

-- النتائج
Select * From Master
Select * From Detail

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

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

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

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

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

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