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

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




صفحه 2 از 4 اولاول 1234 آخرآخر
نمايش نتايج 11 به 20 از 32

نام تاپيک: مشکلاک من با بانک اطلاعاتی (ADO.net)

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

    پيش فرض

    سلام
    دوست عزیز این ها همه بانک های اطلاعاتیشون SQL server هست درسته؟ چون بنده می خواهم فقط یبا sql server کار کنم...
    نمونه از Binding (+رفع مشکل فیلدهای Autonumber در بانک Access در حالت Binding)
    support.h02.ir/fwlink/?LinkId=1001498227

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


  3. #12
    آخر فروم باز vorojax's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    آنجا که دل خوشست....
    پست ها
    1,270

    پيش فرض

    دوست عزیز تشکر...
    -------
    یک سوال دیگر..
    اخوی بنده یک تکس رو از خود مشخصاتش نه با کد نویسی وصل کردم به یک تیبل دیتا بایندینگ و اتصال به یک فیلد....
    برای ویرایش اون فیلیدی که تکس داخلش هست و ما وقتی تکس رو عوض کردیم بخواهیم فیلد مرتبط با اون هم عوض بشه چه کدی رو باید بنویسیم؟ البته نه تک تک براشون کد بنویسیم یک فرم هست با مقادیر زیادی ورودی که به بانک اطلاعاتی اکسس توسط همین دیتا تیبل بایندینگ وصله...حالا اگر بخوام با یک دکمه تمام تغییرات رو به ثبت برسونم چه باید بکنم؟
    با تشکر

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

    پيش فرض

    سلام
    اگر شما به درستی از Binding استفاده کرده باشید ...
    (مثل همین نمونه ساده support.h02.ir/fwlink/?LinkId=1001498227)

    برای خواندن از دیتابیس باید متد DataAdapter.Fill را اجرا کنید.
    (مثل متد DBLoad در فرم frmMain همین سورس کد نمونه)

    و

    برای ذخیره داخل دیتابیس باید متد DataAdapter.Update را اجرا کنید.
    (مثل متد DBSave در فرم frmMain همین سورس کد.)

    =====

    یعنی برای ذخیره باید به وسیله همان نوع TypedDataAdapter که Fill کرده اید اینبار Update کنید.
    موفق باشید.

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

    پيش فرض

    سلام
    اگر شما به درستی از Binding استفاده کرده باشید ...
    (مثل همین نمونه ساده support.h02.ir/fwlink/?LinkId=1001498227)

    برای خواندن از دیتابیس باید متد DataAdapter.Fill را اجرا کنید.
    (مثل متد DBLoad در فرم frmMain همین سورس کد نمونه)

    و

    برای ذخیره داخل دیتابیس باید متد DataAdapter.Update را اجرا کنید.
    (مثل متد DBSave در فرم frmMain همین سورس کد.)

    =====

    یعنی برای ذخیره باید به وسیله همان نوع TypedDataAdapter که Fill کرده اید اینبار Update کنید.
    موفق باشید.

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


  7. #15
    آخر فروم باز vorojax's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    آنجا که دل خوشست....
    پست ها
    1,270

    پيش فرض

    سلام
    چندتا فرم هست بنده می خواهم یک متغییری باشه که تو همه فرمها بتونم ازش استفاده کنم و اگر توسط فرمی تغییرش داد متغییر رو تو فرمهایه دیگه هم مقدارش قابل دسترس باشه و تغییر کرده باشه.....آیا امکانش هست؟یا حتما باید از بانک اطاعاتی استفاده کنم...با تشکر
    و همچنین نمی دونم چرا نمی تونم عملیاتی رو نوع Memo اکسس تو ویژال استادیو با خود بیندینگ سورس انجام بدم...آیا راهی هست؟

  8. #16
    اگه نباشه جاش خالی می مونه cdcenter's Avatar
    تاريخ عضويت
    Sep 2007
    پست ها
    201

    پيش فرض

    اکر با ADO.NET مشکل دارید از روش ساده تر LINQ استفاده کنید .

  9. #17
    آخر فروم باز vorojax's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    آنجا که دل خوشست....
    پست ها
    1,270

    پيش فرض

    روش ساده تر LINQ استفاده کنید .
    هیچی در بارش نمی دانم! پی دی اف اموزشی چیزی دربارش دارید؟

    و همچنین بانک اطلاعتی با فیلدهای بسیار ساخته شده دیگه نمیشه ، یعنی وقت زیادی میبره بخام عوضش کنم....

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

    پيش فرض

    سلام
    چندتا فرم هست بنده می خواهم یک متغییری باشه که تو همه فرمها بتونم ازش استفاده کنم
    دقت کنید که برای ارسال اطلاعات بین بخشهای مختلف نباید از متغیرهای عمومی استفاده کرد و این کار راه حجل شی گرایی خود را دارد ...
    مثل دیالوگ های Open و Save و... خود داتنت ... دقت کنید ... شما فرم باز میکنید و مواردی را میتوانید در این فرمها تنظیم کنید و نتایج حاصل انتخاب کاربر را بخوانید ولی متغییر عمومی استفاده نمیکنید !!!


    متغیر عمومی برای موارد خیلی خاصی مثل ConnectionString و سایر تنظیمات سرتاسری برنامه کاربرد دارد ...
    (که تازه اینها هم با تئوری های سرویس گرایی نیازش مرتفع خواهد شد.)

    بحرحال با حصول شرایط منطقی برای داشتن متغیرهای عمومی در سطح برنامه میتوانید یک مثل این کدها عمل کنید:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا با ارجاعاتی مثل Module1.Field1 و یا Class1.Field2 میتوانید در سرتاسر برنامه به این متغیرهای عمومی دسترسی داشته باشید.

    چرا نمی تونم عملیاتی رو نوع Memo اکسس تو ویژال استادیو با خود بیندینگ سورس انجام بدم...آیا راهی هست؟
    نباید مشکلی به وجود آید؟
    دقیقاً چه اتفاقی می افتد یا نمی افتند(!)؟
    خطا و پیغامی دریافت میکنید؟

  11. #19
    آخر فروم باز vorojax's Avatar
    تاريخ عضويت
    Mar 2006
    محل سكونت
    آنجا که دل خوشست....
    پست ها
    1,270

    پيش فرض

    سلام و تشکر فراوان
    شما فکر کنم کد وی بی برای بنده گزاشتی چون بنده shared پیدا نکردم اما جاش یاد استاتیک افتادم و از اون استفاده کردم جواب داد تشکر.
    و اما Memo ارور زیر رو در هنگام وارد کردن دیتابیس به ویژوال استادیو می ده(داخل پنجره دیتا سورس کانفیگوریشن ویزارد)
    some updating commands could not be generated automatically.The database returned the following error:
    Dynamic SQL generation for the updateCommand is not supported against a selectCommand that does not return any key column information
    و موقع ذخیره و به روز رسانی اطلاعات نیز ارور زیر رو می ده:
    Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
    و از کدهای زیر برای آپدیت استفاده می کنم:
    private void button1_Click(object sender, EventArgs e)
    {
    table1BindingSource.SuspendBinding();
    table1TableAdapter.Update(new_Microsoft_Office_Acc ess_ApplicationDataSet);
    }

    و اما مشکل بدی که تو پروژم الان بهش بر خوردم!
    از اونجا که تو هی جدول تعداد فیلدهام خیلی بالاست . وقتی اطلاعات رو آپدیت کنم ارور زیر رو می ده
    Too many fields defined.
    کدهای به روز رسانی نیز اینها هستند:
    private void Save_Click(object sender, EventArgs e)
    {
    bindingSource1.SuspendBinding();
    damdariTableAdapter1.Update(_mehre_mdfDataSet1);

    }
    می خواستم پروژه رو هر چه زودتر به استاد تحویل بدم ولیکن با این مشکل اساسی گیج شدم! نمی دونم باید وقت بزارم دیتابیس رو تیکه تیکه کنم و بعد بایند کنم....
    یا انیکه اگه تبدیلش کنم به اس کی ای ، بانک اطلاعتی رو درست میشه؟
    متوجه شدم با اس کی ال 2005 میشه اکسس رو تبدیل کرد به اس کی ال 2005 می خواستم برم سی دی های اس کی ال 2005 رو بگیرم ، به این نتیجه رسیدم اول از شما بپرسم....در صورت نبودن راهی برم اینکار رو انجام بدم. البته یک سوال هم برام پیش اومد اس کی ال با تعداد زیاد فیلد تو یه جدول مشکلی نداره؟

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

    پيش فرض

    سلام
    شما فکر کنم کد وی بی برای بنده گزاشتی
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    و اما Memo ارور زیر رو در هنگام وارد کردن دیتابیس به ویژوال استادیو می ده
    متن خطای شما حرفی از MEMO نزده!
    مشکل شما از دستور SQL-SELECT اولیه و یا کل جدولتان ناشی میشود.

    یا جدول بانک اطلاعاتی اصلی شما کلید یا همان primarykey ندارد !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    یا در دستور SQL-SELECT تان فیلد primarykey وجود ندارد.

    Too many fields defined
    چند تا فیلد دارید؟
    از Access چند استفاده میکنید؟

    اگر تعداد فیلدهای زیادی دارد احتمال زیادی دارد که اصول نرمال سازی اطلاعاتی رعایت نکرده باشید.
    =====

    مثلا اگر قرار باشد بانک اطلاعاتی نویسنده-کتاب را داشته باشید باید آن را دو جدول کنید.
    جدول نویسنده که مشخصات شخصی را شامل میشود و هر نویسنده کدی میگیرد و جدول دوم جدول کتابهای نویسندگاه که کد نویسنده در جدول دوم وجود دارد.

    باید روابط یک به چند و چند به چند را به چند جدول بشکنید (مثل هر نویسنده که میتواند بینهایت کتاب داشته باشد)

    =====

    در یک جدول به صورت معمول نباید فیلدهای خالی زیادی داشته باشید اگر فیلدهای زیادی وجود دارد که فقط برای تعداد کمی از سطرها و موارد این فیلدها پر میشود اینها را میتوانید یک جدول جدا کنید و رابطه یک به یک ایجاد کنید.

    و...
    و...

    =====

    راه حل:
    - احتمال دارد دیتابیس شما مشکل پیدا کرده باشد.
    موتور JET و Access یک محدودیت اسمی 255 تایی دارند (و احتمالاً با کمتر از این تعداد هم به مشکل بر میخورد!) و احتمال ان وجود دارد که فیلدهایی قبلاً داشته اید که حدفشان کرده اید ولی شمارنده تعداد فیلدها کم یا ریست نشده باشد.
    بانکتان را با برنامه Access باز کنید و فرمان Compact & Repair را روی ان اجرا کنید.

    - قواعد و قوانین نرمال سازی را در ذخیره اطلاعات مد نظر بگیرد و حتماً دیتابیس و بانک اطلاعاتی رابطه ای نرمال شده تهیه کنید.

    - دیتابیس را با برنامه Access باز کنید و به نسخه های بالاتر 2003 یا 2007 تبدیل (Convert) کنید.

    - کل بانک اطلاعاتی و دیتابیس را به SQL Server منتقل کنید و از این برنامه به جای Access استفاده کنید.
    (البته نسخه SQL Server Express همراه VS وجود دارد و نصب هم میشود و همان مشکل شما را رفع میکند و شاید نیازی به خرید CD و برنامه هم نباشد.)

    موفق باشید.

Thread Information

Users Browsing this Thread

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

User Tag List

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

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

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