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

عمل نسخة من فاتورة

بدأه bg3damx في 25 نوفمبر 2013 · 3 رد · 701 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكن عمل نسخة من فاتورة

بمعنى فى form تحتوى على جدولين (الفاتورة ، تفاصيل الفاتورة) ولتكن رقم الفاتورة 5 والمطلوب عمل فاتورة جديدة ولكن تحتوى على نفس بيانات الفاتورة 5

 

post-102278-0-28484700-1385368512_thumb.

#2

هل تريد حفظها فى الداتا بيس بشكل مباشر ام مجرد عرض فقط ؟

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

br17.gif

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

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

#3

على العموم دة مثال انا عملته الان على السريع لو عاوز تنسخ فاتورة من فاتورة مسجلة عندك انا بفترض فى المثال دة التالي انك ترسل ليه رقم الفاتورة القديمة ورقم الفاتورة الجديدة وهو يقوم بعمل نقال للبيانات بشكل مباشر

دة تصميم الجداول 

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

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

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

بالتوفيق ان شاء الله

1

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

br17.gif

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

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

#4

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

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