نمایش نتایج 1 تا 5 از 5

نام تاپیک: انتقال برخی رکورد های یک جدول به جدول دیگر در پروسیجر

  1. #1
    کاربر تازه وارد آواتار Ishtar_4552
    تاریخ عضویت
    مهر 1388
    محل زندگی
    اصفهان
    پست
    62

    انتقال برخی رکورد های یک جدول به جدول دیگر در پروسیجر

    با سلام
    Table-valuedمن در برنامه ام با استفاده از
    چند رکورد را همزمان به دیتابیسم ارسال کردم،و در همان لحظه هم نیاز دارم که این رکورد های ثبت شده در جدول اولم را در یک جدول دوم هم ثبت کنم و لازمه آیدی هایی که به طور اتوماتیک در جدول اول مقداردهی شده اند در جدول دوم هم به همراه سایر اطلاعاتشون ثبت بشن..
    برای مثال من جدول اولم شامل فیلدهای زیر هست که همه این رکوردها همزمان به دیتابیس ارسال شده و در جدول ثبت شدن:
    Table1
    -------------------------------------
    Id shift date
    1 2 09/30/2011
    2 1 10/01/2011
    3 3 10/02/2011
    4 1 10/03/2011
    و به محض اینکه در این جدول اطلاعات ثبت شد بعضی از این اطلاعات در جدول دیگری هم ثبت بشه..
    یعنی جدول دوم من به این صورت باید باشه:
    Table2
    --------------------------------------
    Id Table1_id date message
    1 1 09/30/2011 message1
    2 2 10/01/2011 message2
    3 3 10/02/2011 message3
    4 4 10/03/2011 message4
    لازمه که حتمآ تاریخ و آیدی جدول اول در جدول دوم هم وجود داشته باشه ، آیا میشه با استفاده از یک حلقه که رکوردهای
    جدول اول رو یک به یک پیمایش کنه و در جدول دوم ثبت بشه
    اگه میشه چطور باید این کار را در اسکیوال انجام داد؟ اصلآ استفاده از یک حلقه درست هست یا خیر؟
    پیشاپیش ممنونم از راهنماییتون

  2. #2

    نقل قول: انتقال برخی رکورد های یک جدول به جدول دیگر در پروسیجر

    سلام.
    اگر درست متوجه شده باشم دارید یک جدول مستر دیتیل رو انتقال می دید.
    اما راه ساده اش اینه که یک فیلد موقتی به مستر مقصد اضافه کنید و سریال اصلی اون رو در اون فیلد ذخیره کنید.
    در دیتیل هم در هنگام ذخیره باید به جای فیلد پدر مقدار اون فیلد رو بگذارید:
    insert into Master select F1,F2,F3,MySerial from TBL1
    insert into Detail select (select MasterSerial from Master where AddedField = FatherSN),F1,F2,..., from TBL2

    امیدوارم خوب توضیح داده باشم.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    پست
    61

    نقل قول: انتقال برخی رکورد های یک جدول به جدول دیگر در پروسیجر

    سلام

    می تونید از تریگر برای انجام این کار استفاده کنید. ولی اگه تعداد رکوردهای جدولتون بره بالا، ممکنه سرعت اجرا کند بشه.

  4. #4

    نقل قول: انتقال برخی رکورد های یک جدول به جدول دیگر در پروسیجر

    با روشی که ذکر شد فقط دو بار insert انجام میشه.
    حلقه نداره . کرسر هم نداره.
    فکر می کنم راحت ترین راه باشه.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  5. #5
    کاربر دائمی آواتار Esmail Solhkhah
    تاریخ عضویت
    مهر 1385
    محل زندگی
    بورکینافاسو
    پست
    1,774

    نقل قول: انتقال برخی رکورد های یک جدول به جدول دیگر در پروسیجر

    با سلام
    Table-valuedمن در برنامه ام با استفاده از
    چند رکورد را همزمان به دیتابیسم ارسال کردم،و در همان لحظه هم نیاز دارم که این رکورد های ثبت شده در جدول اولم را در یک جدول دوم هم ثبت کنم و لازمه آیدی هایی که به طور اتوماتیک در جدول اول مقداردهی شده اند در جدول دوم هم به همراه سایر اطلاعاتشون ثبت بشن..
    سلام دوست عزیز

    چون جزئیات رو نذاشتید بنده فرضهای زیر رو گرفتم

    جدول اول شما :

    CREATE TABLE [dbo].[Table1](
    [Id] [int] NOT NULL,
    [Shift] [int] NOT NULL,
    [Date] [varchar](10) NOT NULL,
    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
    (
    [Id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]


    جدول دوم شما

    CREATE TABLE [dbo].[Table2](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Table1Id] [int] NOT NULL,
    [Date] [varchar](10) NOT NULL,
    [Message] [nvarchar](100) NOT NULL,
    CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
    (
    [Id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]


    تایپ Table Valued شما

    CREATE TYPE [dbo].[MyType] AS TABLE(
    [Id] [int] NOT NULL,
    [Shift] [int] NOT NULL,
    [Date] [varchar](10) NOT NULL,
    PRIMARY KEY CLUSTERED
    (
    [Id] ASC
    )WITH (IGNORE_DUP_KEY = OFF)
    )


    استورد پروسیجر شما

    ALTER PROCEDURE [dbo].[uspInsertTable2]
    (
    @MyTable MyType READONLY
    )
    AS
    INSERT INTO Table2(Table1Id, Date,Message)
    SELECT Id as Table1Id ,Date, 'Message' as Message FROM @MyTable


    و اما کد #C لازمه

            private DataTable MyData()
    {

    DataTable tb = new DataTable();

    DataColumn col = new DataColumn("Id", typeof(int));

    tb.Columns.Add(col);

    col = new DataColumn("Shift", typeof(int));

    tb.Columns.Add(col);

    col = new DataColumn("Date", typeof(string));

    tb.Columns.Add(col);



    for (int i = 0; i < 20; i++)
    {

    DataRow row = tb.NewRow();

    row["Id"] = i;

    row["Shift"] = i;

    row["Date"] = "1390/07/08";

    tb.Rows.Add(row);

    }

    return tb;

    }



    private void btnInsert_Click(object sender, EventArgs e)
    {
    string ConnectionString = @"Data Source = .\sqlexpress;Initial CAtalog = Ishtar;Integrated Security = True";

    using (SqlConnection con = new SqlConnection(ConnectionString))
    {

    try
    {
    SqlCommand cmd = new SqlCommand("uspInsertTable2", con);

    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.AddWithValue("@MyTable", MyData());

    con.Open();

    cmd.ExecuteNonQuery();

    MessageBox.Show("Insert Completed.");

    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    finally
    {
    if (con.State == ConnectionState.Open)
    con.Close();
    }

    }
    }


    موفق باشید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •