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

نام تاپیک: دو تا سوال در خصوص بانک اطلاعاتی و DataGrid

  1. #1

    دو تا سوال در خصوص بانک اطلاعاتی و DataGrid

    با سلام خدمت تمامی دوستان

    بدون مقدمه

    1- چه طور بفهمیم که کدام خانه از Data Grid دچار تغییر شده است؟

    2- چه طور باید Data Adapter را با متد Update آن به کار برد وقتی که اطلاعات آن تویسط یک Data Set در Data Grid ریخته شده است؟ منظور اینکه اطلاعات ویرایش شده‌ی درون Data Grid را در بانک اطلاعاتی دوباره ذخیره کنیم؟

    ببخشید

    با احترام- خدانگهدار

  2. #2
    سلام .

    1) برای اینکار میبایست از تایع GetChanges مربوط به شی ء دیتاست استفاده نمایید که در زیر طریقه استفاده از آن آمده است . این تابع دارای دو فرمت میباشد که در زیر آمده است :

    Public Function GetChanges() As System.Data.DataSet
    با فراخوانی این تابع ، یک کپی از دیتاست مورد شما که شامل تمام رکوردهای تغییر یافته(در تمام جداول موجود در دیتاست که شامل رکوردهای حذف شده ، تغییر یافته ، تغییر نیافته و اضافه شده میباشد . ) از آخرین باری که متد AcceptChanges مربوط به آبجکت دیتاست فراخوانی شده و یا دیتاست در حافظه بارگذاری شده است را برمیگرداند .

    Public Function GetChanges(ByVal rowStates As System.Data.DataRowState) As System.Data.DataSet
    در اینجا نیز تابع GetChanges همانند فرمت قبلی خود رکوردهای تغییر یافته را در یک کپی از شی ء دیتاست برمیگرداند با این تفاوت که در اینجا شما میتوانید رکوردهای تغییر یافته را با استفاده از مقدار شمارشی DataRowState فیلتر نمایید .
    این مقدار شمارشی دارای چهار ثابت میباشد :

    Detached = 1
    UnChanged = 2
    Added = 4
    Deleted = 8
    Modified = 16


    UnChanged
    سطرهایی که هیچ تغییری در آنها رخ نداده است انتخاب مینماید. (از آخرین باری که متد AcceptChanges مربوط به شی ء دیتاست فراخوانی شده است)

    Added
    سطرهایی که به شی ء DataRowCollection اضافه شده است (از آخرین باری که متد AcceptChanges مربوط به شی ء دیتاست فراخوانی شده است)

    Deleted
    سطرهایی که از شی ء DataRowCollection توسط متد System.Data.DataRow.Delete حذف شده اند (از آخرین باری که متد AcceptChanges مربوط به شی ء دیتاست فراخوانی شده است)

    Modified
    سطرهایی که دچار تغییر شده اند ((از آخرین باری که متد AcceptChanges مربوط به شی ء دیتاست فراخوانی شده است)

    همچنین شی ء DataTable نیز دارای تابع GetChanges میباشد ، با این تفاوت که این تابع یک کپی از شی ء DataTable که تمام رکوردهای تغییر یافته از آخرین باری که متد AcceptChanges مربوط به آبجکت DataTableفراخوانی شده و یا شی ء DataTable در حافظه بارگذاری شده است را برمیگرداند .
    I've just started tweeting!
    @Alireza_Maddah

  3. #3

    چه طور ادامه بدم

    با سلام خدمت دوست گرامی

    از جواب شما بسیار متشکرم

    و اما ...

    من چگونه بفهمم که کدام ستون جدول دچار تغییر شده است؟ چون برای به روز رسانی نیاز دارم بگویم:

    به روز رسانی کن
    ستون‌های الف، ب، پ و ...
    وقتی
    ستون x برابر y باشد

    بنابراین نیاز دارم بدانم که کدام ستون تغییر کرده تا بر اساس ستون‌های دیگر فقط همان را به روز رسانی کنم.
    اگر هم غیر از این راهی هست که من نمی دانم، خوشحال می شوم مرا راهنمایی کنید، چون ممکن است ستون تغییر نیافته در Data Grid در چند رکورد تکرار شده باشد که این امر به روز رسانی را دچار اشکال می کند.

    با احترام- خدانگهدار

  4. #4
    کاربر جدید
    تاریخ عضویت
    بهمن 1383
    محل زندگی
    iran-h- h pomp 18 -p6
    پست
    13
    برای اینکار میبایست از تایع GetChanges مربوط به شی ء دیتاست استفاده نمایید
    علیرضا مداح درست میگه

    قسمت اول سوالت تقریبا حرفه ای اما خودتو داری میپیچونی . شما هدف نهائیتون اینه که تغییرات رو ذخیره کنید برای این کارهم شما نمیتونید مستقیما از شئ جدول تو دیتاستتون چند ستون یا سطر خاص رو اپدیت کنی مگر اینه یک شئ جدول واسطه بسازی بعد جاهایی که میخوای جدا تغییر اتشون ذخیره بشن رو بفرستی اونجا و از اونجا کارت رو ادامه بدی . هرچند این راه حل منطقی نیست .
    پس بهتره به روش نرمال کار طراحیت رو تغییر بدی که اصلا نیازی به این قسمت پیدا نکنی.
    ولی قسمت دوم سوالت نسبت به سوال اول جوریه که شک بر انگیزه در هر صورت قسمت دوم جوابش اینه : ....
    (me.dataadapter.update(me.dataset.table
    یعنی شئ جدول ساخته شده تو دیتاستت رو قبل از متد اپدیت کنار دیتا ستت بیاری البته میتونی به نام شئ جدولت هم مستقیما اشاره کنی و هم اصلا نام شئ جدولت رو نیاری.
    شاید هم سوالت رو ما نفهمیدیم اگه اینطوره واضحتر بگو احتمالا براش جواب دارم. :flower:

  5. #5

    ادامه

    با سلام خدمت دوستان گرامی

    آقا اصلا بذارید این جوری بگم که اون Accept Changeی که می گید بعد از اون تابع GetGhage عمل می کنه و مقادیر تغییر کرده رو در خودش نگه می داره، چه چوری باید به سیستم اعمال کنم؟

    منظورم اینه که من در Data Grid تغییراتی داده‌ام و حالا می خوام بدون استفاده از هیچ دستور SQLی، این تغییرات را در بانک ذخیره کنم، آیا باید با دستور
    DataSet.Tables("x").AcceptChange

    این کار را انجام بدهم یا روش دیگری وجود دارد؟

    با احترام - خدانگهدار.

  6. #6
    وقتی که شما متد AcceptChanges مربوط به دیتاست را فرخوانی میکنید ، تمام سطرهایی که هم اکنون در حالت ویرایش هستند(در تمام جدول ها) از حالت ویرایش خارج شده و تغییرات آنها به طور موقف اعمال میشود . در این هنگام است که خاصیت RowState مربوط به شی ء DataRow تغییر میکند بدین صورت که سطرهایی که State آنها Deleted بوده حذف میشوند و سطرهایی که State آنها Added و یا Modified بوده به صورت UnChanged در می آیند .
    به طور خلاصه فراخوانی متد AcceptChanges تمام تغییرات معلق در بانک رو به طور موقف اعمال کرده خاصیت RowState را تغییر میدهد . .

    همچنین کلاسهای DataTable و DataRow نیز دارای متد AcceptChanges میباشند که واضح هست که این متد برای کلاس DataTable بر روی تمام سطرهای جدول عمل کرده و در کلاس DataRow تنها بر روی همان سطر عمل میکند .
    I've just started tweeting!
    @Alireza_Maddah

  7. #7

    جواب آخر رو بدید

    با سلام خدمت دوستان گرامی

    بابا چرا جواب آخری رو نمی نویسید

    خوب، Accept Change تغییرات رو به گفته خودتون به طور موقت ثبت می کنه ولی من که این رو نمی خوام

    من می خوام تغییرات در بانک اطلاعاتی اعمال بشه

    ببخشیدها
    بنویسید آقا فلان کار رو انجام بده تا تغییرات موقت در بانک برنامه اعمال بشه

    وقتی هم از متد
     DataAdapter.Update(DataSet,"table_name")

    استفاده می کنم با خطای زیر مواجه می شوم

    An unhandled exception of type 'System.Data.Odbc.OdbcException' occurred in system.data.dll

    Additional information: System error.


    با احترام- خدانگهدار

  8. #8
    استفاده می کنم با خطای زیر مواجه می شوم


    An unhandled exception of type 'System.Data.Odbc.OdbcException' occurred in system.data.dll

    Additional information: System error
    شما بهتر هست که کد خود را در داخل دستور Try----Catch---End Try قرار دهید تا متوجه شوید که مشکل دقیقا از کجاست . به کد زیر توجه کنید :

            Try
    OleDbDataAdapter1.Update(DataSet11, "YourTable")
    Catch ex As OleDb.OleDbException
    MsgBox(ex.Message)
    End Try


    به هر حال هنگامی که این خطا رخ میدهد احتمالات زیر وجود دارد :

    1 - مسیر بانک اطلاعاتی در ConnectionString اشتباه وارد شده باشد .
    2 - کلمه عبور بانک کطلاعاتی در ConnectionString اشتباه وارد شده و یا وارد نشده باشد .
    و یا هر مشکل دیگری در ConnectionString وجود داشته باشد .
    3 - یکی از آبجکت های INSERTCommand,DELETECommand,SELECTCommand,UPDATECo mmand دچار مشکل باشد .
    و...
    I've just started tweeting!
    @Alireza_Maddah

  9. #9

    نقل قول: دو تا سوال در خصوص بانک اطلاعاتی و DataGrid

    برای ذخیره اطلاعات datagridviewدر دیتا بیس از این کد استفاده کن

     SqlCommandBuilder objcommandbuilder = new SqlCommandBuilder(objdataadapter);
    objdataadapter.UpdateCommand = objcommandbuilder.GetUpdateCommand();
    objdataadapter.Update(objdataset,"tablename");

    البته خط دوم رو امتحان کن ببین حتما باید باشه یا بدون اونم جواب میده.

تاپیک های مشابه

  1. کنترل کلیدها در DataGrid
    نوشته شده توسط once4ever در بخش C#‎‎
    پاسخ: 10
    آخرین پست: چهارشنبه 26 آبان 1389, 23:31 عصر
  2. نمایش یک رکورد جدول به صورت دو سطر در datagrid
    نوشته شده توسط zahracomputer در بخش ASP.NET Web Forms
    پاسخ: 11
    آخرین پست: چهارشنبه 12 مهر 1385, 20:22 عصر
  3. دستور If در DataGrid
    نوشته شده توسط shahramasp در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: چهارشنبه 14 تیر 1385, 21:12 عصر
  4. مشکل در کار با datagrid
    نوشته شده توسط radan63 در بخش ASP.NET Web Forms
    پاسخ: 7
    آخرین پست: سه شنبه 29 فروردین 1385, 09:27 صبح
  5. سه رقم سه رقم جداکردن در datagrid
    نوشته شده توسط Beyondsoft در بخش VB.NET
    پاسخ: 8
    آخرین پست: پنج شنبه 24 فروردین 1385, 18:53 عصر

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

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