كيف يمكن عمل نسخة من فاتورة
بمعنى فى form تحتوى على جدولين (الفاتورة ، تفاصيل الفاتورة) ولتكن رقم الفاتورة 5 والمطلوب عمل فاتورة جديدة ولكن تحتوى على نفس بيانات الفاتورة 5
هل تريد حفظها فى الداتا بيس بشكل مباشر ام مجرد عرض فقط ؟
{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

على العموم دة مثال انا عملته الان على السريع لو عاوز تنسخ فاتورة من فاتورة مسجلة عندك انا بفترض فى المثال دة التالي انك ترسل ليه رقم الفاتورة القديمة ورقم الفاتورة الجديدة وهو يقوم بعمل نقال للبيانات بشكل مباشر
دة تصميم الجداول
جدول الفواتير
CREATE TABLE [dbo].[Invoice](
[Invoice_number] [int] NOT NULL,
[Invoice_Date] [datetime] NULL CONSTRAINT [DF_Invoice_Invoice_Date] DEFAULT (getdate()),
CONSTRAINT [PK_Invoice] PRIMARY KEY CLUSTERED
(
[Invoice_number] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]ودة جدول تفاصيل الفاتورة
CREATE TABLE [dbo].[Invoice_Details](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Invoice_number] [int] NULL,
[Work_Desc] [nvarchar](50) COLLATE Arabic_CI_AS NULL,
[Amount] [money] NULL,
CONSTRAINT [PK_Invoice_Details] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]ودة الاجراء لعملية النقل
CREATE PROC dbo.Copy_Invoice
@Old_number INT ,
@New_number INT
AS
BEGIN TRANSACTION MyTransaction
INSERT INTO dbo.Invoice
( Invoice_number ,
Invoice_Date
)
SELECT @New_number ,
Invoice_Date
FROM dbo.Invoice
WHERE Invoice_number = @Old_number
DECLARE cur CURSOR
FOR
SELECT @New_number ,
Work_Desc ,
Amount
FROM dbo.Invoice_Details
WHERE Invoice_number = @Old_number
OPEN cur
DECLARE @@New_number INT
DECLARE @Work_Desc NVARCHAR(50)
DECLARE @Amount MONEY
FETCH NEXT FROM cur INTO @New_number, @Work_Desc, @Amount
WHILE @@Fetch_Status <> -1
BEGIN
INSERT INTO dbo.Invoice_Details
( Invoice_number, Work_Desc, Amount )
VALUES ( @New_number, -- Invoice_number - int
@Work_Desc, -- Work_Desc - nvarchar(50)
@Amount -- Amount - money
)
FETCH NEXT FROM cur INTO @New_number, @Work_Desc, @Amount
END
CLOSE cur
DEALLOCATE cur
IF @@Error = 0
COMMIT TRANSACTION myTransaction
ELSE
ROLLBACK TRANSACTION myTransaction
GOمثال للتجربة انا بنقل بيانات فاتورة رقم 1 فى رقم اخر هو رقم 2
EXEC dbo.Copy_Invoice @Old_number = 1, @New_number = 2
دة فى حاله الحفظ بشكل مباشر اما فى حاله اللنقل على الداتا سيت انت تعمل استعلام عادى جدا وتنقل محتوى الداتا سيت الاولي الى الثانية
بالتوفيق ان شاء الله
{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

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