PDA

View Full Version : سوال: اولین برنامه ای که به روش شی گرا می نویسم



bashir_nashi
یک شنبه 24 شهریور 1387, 16:13 عصر
سلام به همه دوستان
من تا الان به روش شی گرا برنامه نویسی نمی کردم . البته خیلی از اصولش رو بلدم ولی همیشی احساس می کردم که ارزشش رو نداره !
به هر حال امروز شروع کردم که یه برنامه آزمایشی ساده رو به روش کاملا شی گرا بنویسم (یه نرم افزار فروش)

ولی در همون قدم اول به مشکل خوردم
یه کلاس CustomerC با پراپرتی هایش رو تعریف کردم. خواستم متد Update رو بنویسم که نشد.
من یه بانک اکسس رو بعنوان دیتا بیس به برنامه معرفی کردم ولی نمیدونم از توی یه کلاس چطوری به اون دسترسی پیدا کنم و مثلا دستور


TCustomerTableAdapter1.Update(Me.DataDataSet1.TCus tomer)

رو بنویسم.
ممنون میشم راهنماییم کنید.

__H2__
یک شنبه 24 شهریور 1387, 23:21 عصر
سلام
اگر به DataAdapter خود دات نت دقت کنید متوجه سلسله مراتب ارتباطات میشود.
هر DataAdapter با چهار Property برای گرفتن چهار Command جهت اعمال SELECT و INSERT و DELETE و UPDATE دارد.

در اصلی DataAdapter اصلبی خود دات نت فقط در یک حلقه تک تک سطهای تغییر کرده را تحویل Command مناسب برای اعمال در دیتابیس میدهد.

حال هر کدام از Command ها با یک Property یک Connection را میگیرند
(که معمولا در چهار Command از یک Connection واحد استفاده میشود)
و این شی Connection است که از محل وقاعی دیتابیس و چگونگی ارتباط اطلاع دارد

شی Connection هم در یک Property رشته ConnectionString را میگیرد که حاوی تمام اطلاعات لام جهت برقراری ارتباط و پیدا کردن دیتابیس است.

خلاصه در یک تعامل چرخ دنده کلاسس ها در یک دیگر میچرخد و هر کس هم کار خودش را میکند!

=====


من یه بانک اکسس رو بعنوان دیتا بیس به برنامه معرفی کردم ولی نمیدونم از توی یه کلاس چطوری به اون دسترسی پیدا کنم
شما باید در DataAdapter خوتان از یک شی DataAdapter دات نت استفاده کنید و در یک Property یا ConnectionString و یا Connection را از کد سازنده بگیرید، یا خود DataAdapter تان ConnectionString را از یک مکان عمومی مثل Settings بردارد.....

.....

bashir_nashi
دوشنبه 25 شهریور 1387, 18:45 عصر
ممنون
ولی راستش این توضیح آخرتون رو خوب متوجه نشدم




شما باید در DataAdapter خوتان از یک شی DataAdapter دات نت استفاده کنید و در یک Property یا ConnectionString و یا Connection را از کد سازنده بگیرید، یا خود DataAdapter تان ConnectionString را از یک مکان عمومی مثل Settings بردارد.....

.....
مشکلم رو یه کم باز تر می کنم .
من برای ایجاد اتصالات به دیتا بیس از ویزارد استفاده می کنم . و برای دسترسی به داده های جدول مربوط به یک DataAdapter کافی است DataSet , DataAdapter رو روی فرم بزارم و از متد DataAdapte.Fill استفاده کنم .
حالا وقتی توی یه کلاس هستم بهDataAdapter و Dataset دسترسی ندارم تا از طریق اونها به داده های جدول وصل بشم.


با تشکر

VisualStudio
دوشنبه 25 شهریور 1387, 22:13 عصر
دوست عزیز با متدFill شما میتونید 4 عمل اصلی را انجام یا اینکه اول تغییراتت را روی یک DataSet انجام بده بعد بعد اون دیناست را به متد Update پاس بده تو MSDN یک نمونه کوچک هست که متوجه میشه

__H2__
سه شنبه 26 شهریور 1387, 00:09 صبح
سلام

حالا وقتی توی یه کلاس هستم بهDataAdapter و Dataset دسترسی ندارم تا از طریق اونها به داده های جدول وصل بشم
یعنی فقط مشکلتان این است که در جایی غیر از فرم اصلی میخواهید از DataAdapter هایتان استفاده کنید؟


شما اصولاً نیازی به آن کامپونت های روی فرم ندارید، هر زمان نیاز داشتید در هر کجا میتوانید تولیدشان کنید.


Dim ds As New DataSet1
Using da As New DataSet1TableAdapters.Table1TableAdapter
da.Fill(ds.Table1)
End Using

یا

Dim ds As New DataSet1
Dim da As New DataSet1TableAdapters.Table1TableAdapter
da.Fill(ds.Table1)


ولی اگر قرار است این اعمال دیتاهای روی فرم را متاثر کنید، طبیعی است که باید DataSet روی فرم را با یک Property به کلاسس مورد نظر (که دسترسی مستقیم به فرم ندارد)، منتقل کنید.


بگذارید ببینم اصلاً درست متوجه شدم!
شما با خود DataAdapter و نحوه استفاده از آن مشکلی ندارید ولی یک کلاس جدا نوشته اید که این کلاسس میخواهد یک سری اعمال را روی دیتا ها انجام دهد ولی نمیتوانید بین این کلاس و دیتاهای روی فرم ارتباط برقرار کنید؟

bashir_nashi
سه شنبه 26 شهریور 1387, 15:36 عصر
جناب H2 واقعا ممنونم.
مشکل من دقیقا همونی بود که گفتید . طریقه استفاده از dataset , dataadapter رو در جایی غیر از فرم بلد نبودم که به لطف شما حل شد.