PDA

نسخه کامل مشاهده نسخه کامل : مشکل در اتصال به پایگاه داده ی اکسس



mo.mo
29-05-2010, 19:54
سلام دوستان.
من کد زیر رو برای اتصال به پایگاه داده ی اکسس نوشتم ولی میگه که name متعلق به هیچ جدولی نیست.
کمک کنید. من که حسابی گیج شدم :41:

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

anvar.net
30-05-2010, 00:03
عجب دنیای پرسرعتی شده ؟

پسوند این فایل اکسس شما چی هست. مربوط به ورژن جدیده؟

در خود اکسس اول تست کنید.

ولی اگر من بودم از این کدها استفاده نمی کردم

mo.mo
30-05-2010, 07:47
من تو اتصال مشکلی ندارم. (دارم از اکسس 2007 هم استفاده می کنم).
فقط نمیدونم مشکل این کد کجاست؟ حالا میشه بگین از چه کدی استفاده کنم؟
اگه میشه یه راهنمایی بکنید.

pezhmax
30-05-2010, 09:17
کلمه Name از واژه های رزرو شده است حداقل توsql server اینجوریه. یا اسم ستون رو عوض کن و یا مثل بقیه ستونها داخل کروشه بذارش.

mo.mo
30-05-2010, 09:25
کلمه Name از واژه های رزرو شده است حداقل توsql server اینجوریه. یا اسم ستون رو عوض کن و یا مثل بقیه ستونها داخل کروشه بذارش.
از کمکتون ممنونم دوست عزیز.
ولی فرقی نکرد.
اصلا مشکل اونجا نیست. با این دستور مشکل داره:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این هم خطا یی که میده:
System.InvalidOperationException was unhandled by user code
Message="Update requires a valid InsertCommand when passed DataRow collection with new rows."
Source="System.Data"

L u K e !
30-05-2010, 09:43
چرا از این روش استفاده کردی ؟
این جوری خیلی درد سر داره و خیلی کد باید بنویسی
از Wizard استفاده کن
خیلی راحته اینقدر درد سرم نداره و امکاناتشم خیلی بیشتره
این جوری همه رو خودش می سازه
از منوی Data>Add New Data Source

Open-Source
30-05-2010, 09:55
یه سوال؟
شما از چه ورژنی از Visual Studio استفاده میکنید؟

mo.mo
30-05-2010, 10:01
از کمکتون ممنون.
ولی من میخوام با کد نویسی این کاره انجام دم. آخه با ویزارد همه کار و نمیشه انجام داد.
در ضمن ویزوال استدیو 2008 استفاده می کنم.

L u K e !
30-05-2010, 10:19
هر کاری که بگی می شه انجام داد
منم اول مثل تو بودم ولی یکم جلوتر رفتم دیدم واقعا خیلی کار می بره
من پروژمو با همین ویزارد درست کردم هیچ مشکلی هم نداشتم
این ویزارد در واقع یه امکاناتی می یاره واسط که خیلی راحت کاراتو انجام بده و دیگه نیاز به Access نداشته باشی ( برای ویرایش یا ... )

mo.mo
30-05-2010, 11:15
میشه بگی چه جوری باید یه فرم ویزارد بسازم؟

L u K e !
30-05-2010, 11:42
از منوی Data َ گزینه ی Add DataSource رو بزن
بعد یه سری تنظیمات داره که انجام می دی
بعدشم یه سری فایل ( DataSet ) به Explorere پروژت اضافه می شه
بعد ّبرو رو منوی Data اینبار گزینه ی Show DataSource رو بزن فیلدهاتو اون گوشه می یاره
بعد واسه ساخت Adapter , Binding Source ,Dataset هم که توی کنترل های Vs هستش فقط بیار و به DataSet اصلیت وصلش کن ( کاری نداره )
یا می تونی یه دونه از اون فیلدهایی که اون گوشه هستن رو ورداری بکشی بندازی توی فرم و خودش همه رو واست می سازه

pezhmax
30-05-2010, 12:21
ببخشید من کد شما رو نخونده بودم کاملا. فکر کردم میخواید اطلاعات رو از بانک بخونین.
من فکر میکنم اشکال در تعریف OleDbCommandBuilder باشه. احتمالا اگر به شیوه زیر تعریف خودتون رو اصلاح کنید مشکل حل بشه :



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

البته خودم تست نکردمش.

البته من توصیه میکنم اگر میخواهید بدون wizard برنامه بنویسید اصلا از dataset استفاده نکنید. چون سرعت تبادل اطلاعات در dataset به دلیل سربار اطلاعاتی موجود در آن ، کمتر از شیوه های دیگه است. البته نظر منه. من توصیه میکنم از ترکیب datareader و Generics و با استفاده از اصول OOP در دات نت برنامه خود را پیاده سازی کنید. و اگر هم نگران کدهای زیادی هستید که باید پیاده سازی کنید( و البته به نظر من در آینده برای توسعه نرم افزارهایی که می نویسید کمک بسیاری خواهد بود) به سرغ linq بروید که هم از اصول OOP به درستی پشتیبانی می کند و هم سرعت تبادل اطلاعات در آن سریع است و هم نیاز به کد نویسی کمی دارد و در واقع لایه Data Access زا برای شما ایجاد می کند.

البته این روشها به درد برنامه های تجاری و قابل توسعه میخوره. اگه برنامه ات پروژه دانشجویی هست یا یه برنامه کوچک(از نظر حجم فرآیندهای اجرایی) با همون wizard کار کن.

mo.mo
30-05-2010, 16:21
ببخشید من کد شما رو نخونده بودم کاملا. فکر کردم میخواید اطلاعات رو از بانک بخونین.
من فکر میکنم اشکال در تعریف OleDbCommandBuilder باشه. احتمالا اگر به شیوه زیر تعریف خودتون رو اصلاح کنید مشکل حل بشه :



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدالبته خودم تست نکردمش.

البته من توصیه میکنم اگر میخواهید بدون wizard برنامه بنویسید اصلا از dataset استفاده نکنید. چون سرعت تبادل اطلاعات در dataset به دلیل سربار اطلاعاتی موجود در آن ، کمتر از شیوه های دیگه است. البته نظر منه. من توصیه میکنم از ترکیب datareader و Generics و با استفاده از اصول OOP در دات نت برنامه خود را پیاده سازی کنید. و اگر هم نگران کدهای زیادی هستید که باید پیاده سازی کنید( و البته به نظر من در آینده برای توسعه نرم افزارهایی که می نویسید کمک بسیاری خواهد بود) به سرغ linq بروید که هم از اصول OOP به درستی پشتیبانی می کند و هم سرعت تبادل اطلاعات در آن سریع است و هم نیاز به کد نویسی کمی دارد و در واقع لایه Data Access زا برای شما ایجاد می کند.

البته این روشها به درد برنامه های تجاری و قابل توسعه میخوره. اگه برنامه ات پروژه دانشجویی هست یا یه برنامه کوچک(از نظر حجم فرآیندهای اجرایی) با همون wizard کار کن.
از کمکت ممنون دوست عزیز.
من کاریو که گفتین انجام دادم. ولی باز درست نشد.
این کد من بعد از اصلاح هست. اگه عیب یابیش سخته لطفا خودتون یه کد برای ارتباط با پایگاه داده ی اکسس بزارین. من که دیگه حسابی گیج شدم. البته ویزارد روش جالبیه ولی به درد برنامه های تجاری نمیخوره.

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


اینم متن خطایی که میده:
[
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

L u K e !
30-05-2010, 17:33
ببین این خطا که دلیلش اینه که تو چند به مقدار دهی چند تا از فیلدات توجه نکردی

pezhmax
30-05-2010, 21:26
اگه عیب یابیش سخته لطفا خودتون یه کد برای ارتباط با پایگاه داده ی اکسس بزارین.


راستش من با access اصلا کنار نمیام شرمنده. بانک خیلی مزخرفیه. :31:
تو این access گاهی خطا بخاطر case sensitive بودن query ها پیش میاد. ممکنه خطات به خاطر این هم باشه.

Open-Source
30-05-2010, 22:29
اگه شما از VS 2008 SP1 یا بالاتر استفاده کنی میتونی از Access 2007 استفاده کنی در غیر اینصورت نمیتونی.
و درمورد روش ویزاردی:
اصلا روش بهینه ای نیست.
سربار زیادی داره.
نمیتونی کنترل 100% روی بانکش داشته باشی.
برای کاربران راحت طلب خوب هستش.


بهترین روش اتصال به بانک از طریق کد نویسی هستش.

naser_feb8646
03-06-2010, 09:37
سلام

دوست عزیز شما می تونید دقیقاً بگید که می خواید چه کاری انجام بدید که اگر بشه، یه کد درست حسابی براتون بنویسیم

یا علی