تبلیغات :
خرید لپ تاپ استوک
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 4 از 7 اولاول 1234567 آخرآخر
نمايش نتايج 31 به 40 از 61

نام تاپيک: اشاره کمبو باکس و دیتاگرید به رکورد تازه درج شده

  1. #31
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    متاسفانه کدهای شما صحیح نمیباشد.
    سه مسئله اینجا وجود دارد که باید جداگانه متوجه شوید و کدصحیحش را بنویسید.
    1) درج دیتای جدید به DataTable به صورت مستقیم یا غیر مستقیم تا به گراید هم اضافه شود.
    2) حرکت سطرجاری گراید به رکورد تازه درج شده.
    3) ذخیره دیتاها در دیتابیس اصلی و به صورت پایدار و نهایی.

    -----

    آیا روشی که من برای Update استفاده کردم درست است؟
    آیا برای درج رکورد جدید نیازی به دستورات زیر وجود دارد؟
    اول مورد 3 را توضیح میدهم...
    الف)
    معمولاً در دات نت و با گراید رفتار عادی چنین است که دیتا را فقط به DataTable اضافه میکنیم و کاربر مثلاً 10 یا 20 سطر جدید اضافه میکند و تا این زمان تغییرات به دیتابیس اصلی اعمال نشده است...
    بعد کاربر دکمه Save را در برنامه کلیک میکند و تازه در این زمان کل تغییرات به صورت یکجا ذخیره میشود...
    یک چیزی شبیه برنامه های عادی غیر بانک اطلاعاتی (!) که تا وقتی فرمان Save را خودتان ندهید تغییرات ذخیره نمیشوند و یا موقع خروج از برنامه در خصوص ذخیره سازی تغییرات سوال میشود...
    امیدوارم متوجه شده باشید چه میگویم؟
    اگر این روند ذکر شده را بخواهید انجام دهید باید از DataAdapter و فرمان Update استفاده کنید تا کلیه تغییرات DataTable شما یکجا در دیتابیس اصلی اعمال شود (شامل درج و ویرایش و حذف) اگر این روش را خواستید توضیح بیشتر میدهم.

    ب)
    اگر این روند را نمیخواهید و میخواهید به دکمه Save در برنامه نداشته باشید یا حداقل درج هموراه به طور خودکار Save و اعمال شود و فوراً در لحظه به بانک اضافه شود، باید از شی Command استفاده کنید که اگر این روش را خواستید توضیح میدهم.

    -----

    1) و 2)
    در کد قبلی شما، شما همینطوری یک DataView ساخته اید و اضافه کرده اید، این هیچ فایده ای ندارد.

    بهترین راه آن است که یک DataView روی فرم قرار دهید، یعنی به نمایه Design بروید و DataView را از Toolbox خود VS روی فرم رها کنید.
    سپس ...
    نقل قول نوشته شده توسط _H2_
    خصیصه Table از dataView را به جدول مورد نظر تنظیم کنید و
    خصیصه DataSource از DataGrid را به DataView ست کنید.
    سپس از کدی شبیه این استفاده کنید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  2. #32
    آخر فروم باز قله بلند's Avatar
    تاريخ عضويت
    Mar 2008
    پست ها
    1,471

    پيش فرض

    اگر این روند ذکر شده را بخواهید انجام دهید باید از dataadapter و فرمان update استفاده کنید تا کلیه تغییرات datatable شما یکجا در دیتابیس اصلی اعمال شود (شامل درج و ویرایش و حذف) اگر این روش را خواستید توضیح بیشتر میدهم.

    ب)
    اگر این روند را نمیخواهید و میخواهید به دکمه save در برنامه نداشته باشید یا حداقل درج هموراه به طور خودکار save و اعمال شود و فوراً در لحظه به بانک اضافه شود، باید از شی command استفاده کنید که اگر این روش را خواستید توضیح میدهم.
    [/code]
    با عرض سلام
    خواهش می کنم این دو مورد رو حتماً توضیح دهید چون نکات مهمی هستند. هم برای من و هم برای کسی یا کسانی که بعداً این تاپیک رو نگاه می کنن.
    فوق العاده از زحماتتون ممنونم

  3. #33
    آخر فروم باز قله بلند's Avatar
    تاريخ عضويت
    Mar 2008
    پست ها
    1,471

    پيش فرض

    سلام
    اولین قطعه کد مربوط به Form1_Load است.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    من در خصیصه DataView - خاصیت Table را دیدم ولی نمی شد نام جدول را به آن نسبت داد. حتی یک لینک مانند هم نداشت که نام جدول مورد نظرم را در آن انتخاب کنم.
    تا این قسمت مشکلی نیست؟ درست جدول شماره صفر از dataset را به dataview1 نسبت داده ام؟
    حالا رویداد button1_click
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگر مشکلی در کد وجود نداشته باشه، به نظر جواب منطقی است. در هر جدولی رکورد تازه درج شده می رود در سطر آخر. حالا من در ثبت وقایع در بانک مشکل دارم. با ثبت داده در بانک، سطر تازه درج شده از خصوصیت جدول مورد نظر باید تبعیت کند و لزوماً سطر تازه درج شده دیگر در آخر جدول نمی ایستد بلکه سر جای واقعی خود می رود. خیلی دوست دارم بعد از ثبت داده در بانک، وضعیت جدید را ببینم.

  4. #34
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    اگر این روند ذکر شده را بخواهید انجام دهید باید از dataadapter و فرمان update استفاده کنید تا کلیه تغییرات datatable شما یکجا در دیتابیس اصلی اعمال شود (شامل درج و ویرایش و حذف) اگر این روش را خواستید توضیح بیشتر میدهم.
    همانطور که با متد Fill از DataAdapter اطلاعات را از دیتابیس به DataTable بارگذاری میکنید با متد Update میتوانید برعکس این رفتار را انجام دهید و تغییرات DataTable را به DataBase اعمال کنید.
    ولی ...
    برای Fill یک Command که متناظر دستور SELECT در SQL باشد، کافی است.
    اما برای Update شما نیاز به سه Command دیگر دارید، متنار با دستورات INSERT و UPDATE و DELETE.

    این سه Command را هم میتوانید دستی بسازید (که معمولاً خیلی بازدهی بیشتری دارد) ولی چون باید پارامترهم اضافه کنید و خصوصیتهای پارامترها را تک به تک و به دقت تنظم کنید، اینکار برای اغلب افراد کمی مشکل است نتیجتاً به عنوان راه حل سریع و بدون مشکل میتوانید از شی SqlCommandBuilder جهت تولید خودکار این سه Command از روی دستور SELECT اقدام کنید.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا DataAdapter شما حاضر است و به راحتی میتوانید با فرمان Fill اطلاعات را از دیتابیس به RAM منتقل کنید و با فرمان Update تغییرات RAM را به دیتابیس اعلام و نهایی کنید.

    اگر این روند را نمیخواهید و میخواهید به دکمه save در برنامه نداشته باشید یا حداقل درج هموراه به طور خودکار save و اعمال شود و فوراً در لحظه به بانک اضافه شود، باید از شی command استفاده کنید که اگر این روش را خواستید توضیح میدهم.
    Datatable برای داده های حجمی و DataSet مناسب است ولی برای کار روی یک سطر اطلاعات استفاده مستقیم از Command تفاوت بازدهی بسیار بیشتری دارد.

    کدی شبیه این
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    البته میتوان یک Command و Connection را یکبار تولید و بارها استفاده کرد ولی در این صورت باید به چند نکته دقت شود.
    1- حدالمقدور کدی تهیه شود که در پایان استفاده نهایی تمام این اشای صراحتاً Dispose و نابود شوند.
    2- در یک برنامه شبکه ای با حجم تراکنش بالا، شاید چندان عقلانی نباشد که یک Connection به مدت طولانی و بلا استفاده باز و بی مصرف رها شود.
    3- هر Connection و Command در هر لحظه فقط و فقط قادر به اجرای یک درخواست و دستور هستند پس در برنامه های چند ریسمانی نباید برای صرفه ای در ساخت این اشای از انها به طور اشتراکی استفاده کرد.

    -----

    اگر مشکلی در کد وجود نداشته باشه، به نظر جواب منطقی است. در هر جدولی رکورد تازه درج شده می رود در سطر آخر
    با کدفعلی قائدتاً اگر sort گراید را هم تغییر دهید نباید مشکلی در select سطر تازه درج شده داشته باشید.


    با ثبت داده در بانک، سطر تازه درج شده از خصوصیت جدول مورد نظر باید تبعیت کند و لزوماً سطر تازه درج شده دیگر در آخر جدول نمی ایستد بلکه سر جای واقعی خود می رود. خیلی دوست دارم بعد از ثبت داده در بانک، وضعیت جدید را ببینم
    متاسفانه هنوز کمی بحث را درک نکرده اید، این مطلب که شما گفتید کلاً مشکلی ایجاد نخواهد کرد.
    مگر مشکل شما این نیست که سطر درج شده همواره خودکار در گراید select شود؟
    خوب منبع گراید DataView است، نه دیتابیس!

    اگر با ADO کار میکردیم شاید مطلب و نگرانی شما منطقی بود چون ADO سیستمی آنلاین دارد ولی ...
    ADO.Net یک سیستم آفلاین است و دیتای RAM راتباطی با دیتای اصلی دیتابیس ندارد و در این ارتباط قطع شده تا ترافیک شبکه کاهش یابد و فقط در موقع لزوم با دستوراتی مثل Fill و Update برای لحظه ای این تبادل دیتا انجام میشود.

    -----

    پیشنهاد میکنم اگر واقعاً به برنامه نویسی علاقه مند هستید و فقط یک کار موضعی و موقت دانشجویی در جهت کسب نمره نمیخواهید انجام دهید، برای حل مشکلات بنیادین و تقویت کامل پایه ای خود برای حال و آینده حتماً یک کتاب ADO.Net تهیه و مطالعه کنید.

    موفق باشید.

  5. #35
    آخر فروم باز قله بلند's Avatar
    تاريخ عضويت
    Mar 2008
    پست ها
    1,471

    پيش فرض

    حتماً این کتاب رو تهیه می کنم و می خونم. در این کار فهمیدم که اونچیزی که بلد بودم اصلاً کارایی نداره. این کار که تموم بشه و تحویل بدم حتماً این کار رو خواهم کرد. چون وقت زیادی ندارم.

  6. #36
    آخر فروم باز قله بلند's Avatar
    تاريخ عضويت
    Mar 2008
    پست ها
    1,471

    پيش فرض

    سلام
    من تسلیمم!!
    آدرس فایل WA3 رو در آدرس زیر گذاشتم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مسلماً شما جدول مورد نظر رو درون بانکتون ندارید.
    من از روش دوم برای ثبت داده ها در بانک استفاده می کنم. یعنی بدون دکمه save . مستقیماً داده رو درون بانک ذخیره می کنم.
    گیج گیج ام و از طرفی هم نمی خوام وقتتون رو بگیرم و از طرفی دیگر هم می ترسم که این مطلب جالب رو نفهمم و از دستش بدم.

  7. #37
    آخر فروم باز قله بلند's Avatar
    تاريخ عضويت
    Mar 2008
    پست ها
    1,471

    پيش فرض

    با سلام
    آیا این قطعه کد می تونه کمک بکنه؟
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    مثلاً فرض کنیم که من تازه اومدم و این سوال رو پرسیدم و همچنان دارم از روش قدیمی خودم استفاده می کنم. حالا به جایی که از حلقه ها استفاده کنم تا به سطر تازه درج شده برسم، از کد بالا استفاده کنم و به سطر تازه درج شده برسم ولی اینبار با حلقه درونی خود dataview .
    ولی نمی دونم جای object[] Key چی بگذارم. دو فیلد رکوردی که قرار درج بشه ، یکی عدد صحیح و دیگری رشته است. شیء رو چگونه درست کنم؟
    اصولاً این راه ، راه خوبی است؟ یا من اشتباه می کنم؟

  8. #38
    آخر فروم باز قله بلند's Avatar
    تاريخ عضويت
    Mar 2008
    پست ها
    1,471

    پيش فرض

    پیشنهاد میکنم اگر واقعاً به برنامه نویسی علاقه مند هستید و فقط یک کار موضعی و موقت دانشجویی در جهت کسب نمره نمیخواهید انجام دهید، برای حل مشکلات بنیادین و تقویت کامل پایه ای خود برای حال و آینده حتماً یک کتاب ado.net تهیه و مطالعه کنید.
    لطفاً کتاب هایی رو که خوب هستند و مطالبشون مفید هست رو بفرمایید تا بخرم. آخه بعضی کتابها مطلب آنچنانی ندارند.
    کتاب ado.net کافی است یا همراه بودن آن با کتابی دیگر را نیز توصیه می کنید؟
    تجربه شما در حال حاضر بسیار گرانقدر است. هر آنچه شما بفرمایید بدون شک درست و راهگشاست.
    Last edited by قله بلند; 02-01-2009 at 04:55.

  9. #39
    آخر فروم باز قله بلند's Avatar
    تاريخ عضويت
    Mar 2008
    پست ها
    1,471

    پيش فرض DataView.FindRows Method ( Object [ ] )

    با سلام.لطفاً به این قطعه کد توجه کنید.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کد مورد نظر را از آدرس زیر پیدا کردم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ولی باز هم نشد. مهم پر کردن vals .

  10. #40
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    ولی نمی دونم جای object[] Key چی بگذارم. دو فیلد رکوردی که قرار درج بشه ، یکی عدد صحیح و دیگری رشته است. شیء رو چگونه درست کنم؟

    ...ولی باز هم نشد. مهم پر کردن vals .
    این باید فقط و فقط حاوی primnarykey شما باشد.
    چون کلید شما دو فیلدیاست، میشود چیزی شبیه این:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    کتاب ado.net کافی است یا همراه بودن آن با کتابی دیگر را نیز توصیه می کنید؟
    معمولاً دوست دارم نام خاصی را بیان نکنم.
    شما هر کتابی با عنوان ADO.NET تهیه کنید میتوانید مفید باشد.
    طبیعی است که خوادندن کتابهای دیگر هم میتواند موثر باشد، مثلاً در خصوص SQL و SQLServer و یا مباحث دیگر برنامه نویسی که در جاهای دیگر مفید هستند... ASP.Net و API و عموم کتابهای #C و...

    من کدتان را اصلاح کردم که الآن به نظر من کاری را که خواسته اید انجام میدهد. و در 2005 هم باز میشود.
    ) درج دیتای جدید به DataTable به صورت مستقیم یا غیر مستقیم تا به گراید هم اضافه شود.
    2) حرکت سطرجاری گراید به رکورد تازه درج شده.
    3) ذخیره دیتاها در دیتابیس اصلی و به صورت پایدار و نهایی.
    rapidshare.com/files/178978959/WA3.zip

    رفاموش نکنید جدول EmployeeTerritories در دیتابیس نمونه Northwind با جداول Employees و Territories رابطه دارد و مقادیر درجی شما باید از قبل در این دو جدول وجود داشته باشند.

    موفق باشید.

  11. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

برچسب های این موضوع

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •