آموزش ویژوال بیسیک و برنامه نویسی

سورس,ویژوال بیسیک,نرم افزار,باشگاه,بدنسازی,فوتبال,آنالیز,پیش بینی,کد,برنامه نویسی

آموزش ویژوال بیسیک و برنامه نویسی

سورس,ویژوال بیسیک,نرم افزار,باشگاه,بدنسازی,فوتبال,آنالیز,پیش بینی,کد,برنامه نویسی

آموزش پایگاهای داده ایی

http://mediavb.persiangig.com/Ansverd/Change%20Pass.zipآشنایی کلی با پایگاه داده


» از آنجا که پایگاه داده اصلی ترین مبحث ویژوال بیسیک است برای همین کار کردن با این بخش نسبت به مباحث دیگر دشوارتر و پیچیده تر بوده و تجربه و خلاقیت بالایی را باید برای کار کردن با این بخش داشته باشیم .


» پایگاه داده : پایگاه داده یا بانک اطلاعاتی محلی است برای نگهداری اطلاعات و داده های گوناگون به صورت یکپارچه ، منظم و مرتب که هر کدام از اطلاعات آن قابل دسترسی و پردازش می باشند .


» انواع برنامه هایی که توانایی ساخت فایلهای پایگاه داده را دارند و ویژوال بیسیک 6 قادر به ایجاد ارتباط با آنها می باشد عبارتند از : Access ، Foxpro ، dbase ، Paradox ، .... که مهمترین آنها برنامه Access از مجموعه برنامه های آفیس است . و کار با آن ساده تر و راحت تر از پایگاه داده های دیگر است . ما نیز از این پایگاه داده استفاده خواهیم کرد .


» برای اینکه ما بتوانیم به اطلاعات و داده های موجود در پایگاه داده توسط ویژوال بیسیک 6 دسترسی داشته باشیم به ابزار هایی برای برقراری ارتباط نیازمندیم . ولی قبل از آن باید با اجزای یک پایگاه داده ساده و نوع داده هایی که در این پایگاه داده تعیین شده اند و ما برای ذخیره کردن اطلاعاتمان باید از آنها استفاده کنیم آشنا شویم :


» اجزای یک پایگاه داده : فایل با پسوند *.mdb ----> جدول ها ----> فیلد ها ----> رکوردها


» جدول ها از مجموعه فیلدهایی با انواع زیر ساخته می شوند :

 

Text 
نوع متنی که طول ظرفیت آن 256 کاراکتر است

Memo 
نوع متنی که طول ظرفیت آن میتواند بیش از 256 کاراکتر باشد.( معمولا ذخیره کردن توضیحات )

Number 
نوع عددی که خود آن به انواع مختلف تقسیم میشود(Integer، LongInt و ...)

Date\Time 
نوعی برای نگهداری داده هایی با فرمت تاریخ و زمان

Currency 
برای نگهداری داده های مالی یا ارزی از این نوع استفاده می شود

Yes\No 
همانند نوع Boolean است که فقط مقدار -1 و 0 را می پذیرد

AutoNumber 
نوعی برای تولید اعداد خودکار و غیر تکراری ( معمولا برای ساخت فیلد کلید )

 

که رکوردها کوچکترین و اساسی ترین جزء مجموعه بانک اطلاعاتی هستند و داده ها را مستقیما درخود نگهداری می کنند .

» برای مثال جدولی برای نگهداری اطلاعات شخصی افراد که می تواند فیلدی برای نگهداری نام ، فیلد دیگری برای نگهداری نام خانوادگی و انواع فیلدهای دیگر برای ذخیره سازی اطلاعات دیگر داشته باشد که با توجه به نوع داده ای که باید در آن ذخیره شود نوع آن تعیین می گردد . مثلا چون نام افراد باید متنی باشد از نوع Text انتخاب خواهد شد .


» برای آشنایی بیشتر شما برنامه Access را باز کنید و پایگاه داده را با نام Test.mdb ذخیره کرده و جدولی با نام Simple بسازید و فیلد های آن را به صورت زیر تنظیم کنید تا با این مبحث و برنامه Access به طور مختصر آشنا شوید . همچنین از این پایگاه داده که می سازید در ادامه استفاده خواهیم کرد :

 

ID 
از نوعAutonumber برای نگهداری شماره مخصوص هر فرد به طور خودکار

Name 
از نوع Text برای نگهداری نام افراد

Family 
از نوع Text برای نگهداری نام خانوادگی

************************************

آشنایی با ابزار مخصوص برقراری ارتباط با پایگاه داده


» همانطور که در درس گذشته ( درس اول ) مشاهده نمودید ، یک آشنایی کلی با مفهوم پایگاه داده پیدا کردیم و با اجزا و انواع داده های موجود در یک پایگاه داده Access آشنا شدیم . حال در این درس می خواهیم با ابزارها و کنترلهایی که امکان ایجاد ارتباط ویژوال بیسیک با بانک اطلاعاتی را برای ما فراهم می کنند آشنا شویم .


» دو ابزار یا کنترلی که امکان ایجاد این ارتباط را به ما می دهند عبارتند از :


1- Data Control : این کنترل که به طور پیشفرض در جعبه ابزار یا Tool Box ویژوال بیسیک وجود دارد یکی از ابزارهای قدرتمند VB در زمینه کار با پایگاه داده است . در واقع این کنترل نماینده پایگاه داده در ویژوال بیسیک است و کارهایی از قبیل مدیریت جداول و اندیکس ها و همچنین ایجاد و حذف جدول و رکورد و جستجو و فیلتر سازی و غیره را به عهده دارد . کارایی این کنترل بسیار گسترده و وسیع است و می تواند بهترین انتخاب برای نوشتن برنامه هایی باشد که قرار است فقط روی یک کامپیوتر به طور مستقل اجرا گردند .

تصویر کنترل :

 

 

2- ADO Objects : این کنترل ابزار دیگری برای ایجاد ارتباط با پایگاه داده است و گستردگی کمتری نسبت به Data Control دارد . از این کنترل معمولا برای ایجاد ارتباط سریع و آسان با پایگاه داده استفاده می شود . همچنین این کنترل توانایی برقراری ارتباط با پایگاه داده واقع در مکانی دیگر با استفاده از سیستم شبکه ای را دارد . ولی این کنترل در جعبه ابزار وجود ندارد و باید به آن اضافه گردد که بعدا خود این کنترل به طور کامل توضیح داده خواهد شد .


تصویر کنترل :

 

 

» برای کار با پایگاه داده فقط ایجاد ارتباط با آن کافی نیست . بلکه ما نیاز داریم که اطلاعات درون جدول ها و رکوردها را مشاهده کنیم و بر روی آنها پردازش انجام دهیم که این کار مستلزم استفاده از ابزارها و کنترل های دیگر است . برای نمونه اگر ما بخواهیم اطلاعات درون یک رکورد که نام یک شخص در آن ذخیره شده است را ببینیم باید آن را توسط یک کنترل که با پیوندی به یکی از کنترل های ایجاد کننده ارتباط با پایگاه داده متصل است به نمایش در آوریم . برای مثال ازکنترل Label استفاده کنیم . حال اگر بخواهیم بر روی این مقدار پردازش هم انجام دهیم باید آن را توسط کنترل Text Box نمایش دهیم چون درون آن را می توانیم ویرایش کنیم.


» برای شروع ما با Data Control کار خواهیم کرد.خصوصیت های مهم شی ء Data Control :

 

Connect 
این خصوصیت مشخص کننده نوع پایگاه داده که قرار است ارتباط با آن برقرار گردد و به طور پیشفرض Access تعیین شده است.

DataBaseName 
این خصوصیت مهمترین خصوصیت کنترل Data به شمار می رود که مسیر و نام پایگاه داده را در خود جای می دهد .

ReadyOnly 
این خاصیت مشخص می کند که آیا پایگاه داده میتواند پردازش شود یا باید هیچ تغییری در آن ثبت نشود . که به طور پیشفرض False یعنی قابل پردازش میباشد .

RecordSetType 
نوع رکوردست کاری را مشخص می کند که در صورت لزوم توضیح داده خواهدشد .

DataSource 
این خصوصیت بعد از تکمیل خصوصیت DataBaseName قابل استفاده است و نام جدول ها و بازجست های ( Query ) موجود در پایگاه داده را به صورت لیست کشویی برای ما نمایش می دهد که ما می توانیم یکی از آنها را انتخاب کنیم .

 


» نکته اساسی : در واقع مهمترین مشکل ویژوال بیسیک 6 در کار با پایگاه داده Access این است که اگر شما از کنترل Data برای برقراری ارتباط استفاده کنید و فرمت پایگاه داده شما بالاتر از Access 97 باشد یعنی ( 2000 ، XP ، 2003 ) با خطایی مبنی بر عدم پشتیبانی یا شناسایی مواجه خواهید شد . یا به عبارتی شما در صورتی میتوانید از کنترل Data برای برقراری ارتباط با پایگاه داده Access استفاده نمایید که فرمت پایگاه داده شما Access 97 یا همان ( Office 97 ) باشد . برای حل این مشکل چند راه حل وجود دارد :


» راه حل 1 : از کنترل ADO یا Adodc به جای Data استفاده کنید که این کار در بیشتر مواقع نمی تواند به صرفه باشد .

» راه حل 2 : فرمت پایگاه داده شما Access 97 باشد یعنی باید از برنامه Access موجود در Office 97 استفاده کنید که در این صورت مجبور خواهید بود با ویندوز 98 کار کنید . چون XP قادر به پشتیبانیAccess 97 نخواهد بود .

» راه حل 3 : این راه حل بهترین راه حل است ، یعنی استفاده از تکه برنامه ای به نام Service Pack 6 که پس از نصب ویژوال بیسیک6 بر روی کامپیوتر نصب میشود و مشکل را رفع می کند . یعنی شما میتوانید پس از نصب این تکه برنامه از هر کدام از فرمت های پایگاه داده Access در کنترل Data استفاده کنید . ظرفیت فشرده شده این برنامه حدود 26 مگابایت است که شما می توانید از سایت Microsoft دانلود کنید . البته با نرم افزار Download Accelerator Plus می توانید به صورت بخش به بخش این برنامه را دانلود نمایید که به نظر من بهترین روش است .


» پس از دانلود این برنامه برای نصب آن فایل Setupsp6.exe را اجرا نمایید.

» توجه داشته باشید که هنگام نصب این برنامه نباید ویژوال بیسیک شما در حالت اجرا باشد.


» انشا ء الله در درس بعدی کار خود را با یک مثال ساده دنبال خواهیم کرد .

********************************************

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

 

 

» همانطور که میدانید پردازش اطلاعات و داده ها در پایگاه داده عبارت است از ایجاد رکورد جدید برای ثبت اطلاعات جدید ، حذف رکورد اطلاعاتی ، ویرایش اطلاعات و داده ها و بسیاری کارهای دیگر . کنترل داده علاوه بر این که خصوصیتهایی برای ایجاد ارتباط با پایگاه داده دارد خاصیتی به نام RecordSet دارد که که بیشترین متدهای پردازش بر روی پایگاه داده را در خود جای داده است . با این خاصیت بیشتر آشنا می شویم :

 

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

 

_ Move : با استفاده از این متد ما میتوانیم به رکورد مورد نظر حرکت کنیم . روش استفاده از این متد به صورت زیر است :

( شماره رکورد )  Data1.RecordSet.Move

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

_ MoveFirst : با استفاده از این متد ما میتوانیم به اول لیست یا جدول تغییر مکان دهیم . روش استفاده از این متد :

Data1.RecordSet.MoveFirst

 

_ MoveLast : این متد هم رفتن ما را به آخرین رکورد جدول فراهم می کند و روش استفاده از آن به صورت زیر است :

Data1.RecordSet.MoveLast

 

_ MoveNext : از این متد برای رفتن به رکورد بعدی استفاده می شود . نکته ای که در مورد این متد وجود دارد این است که برای استفاده از این متد باید رکورد بعدی موجود باشد وگرنه پیغام خطا صادر خواهد شد. روش استفاده :

Data1.RecordSet.MoveNext

 

_ MovePreivous : این متد هم برای برگشت به رکورد قبلی استفاده می شود که در این مورد هم باید رکورد قبلی موجود باشد . روش استفاده :

Data1.RecordSet.MovePrevious

 

_ EOF : این متد مشخص میکند که آیا اشاره گر در رکورد آخر قرار دارد یا خیر که در صورت قرار داشتن در رکورد آخر مقدار True و در غیر این صورت مقدار False به خود خواهد گرفت :

A = Data1.RecordSet.Eof

 

که مقدار A با توجه به موقعیت اشاره گر یکی از دو مقدار True یا False خواهد شد .

_ BOF : این متد هم مانند متد قبلی عمل می کند ولی با این تفاوت که قرار داشتن اشاره گر در ابتدای لیست را مشخص می کند .

A = Data1.RecordSet.Bof

 

_ FindFirst : از این متد برای جستجوی اولین رکوردی که با ضابطه ما مطابقت دارد استفاده می شود . برای مثال اگر ما در لیست دنبال شخصی با اسم " Ali " باشیم برای جستجوی آن باید از کد زیر استفاده کنیم :

( " 'Data1.RecordSet.FindFirst ( "Name= 'Ali

از ' ' برای جستجو در فیلد رشته ای استفاده می کنیم ، یعنی برای جستجوی فیلدهای عددی نباید از این علامتها استفاده کنیم این جستجو می تواند ضابطه پیچیده تر داشته باشد مانند :

 

( " 'Data1.RecordSet.FindFirst ( "Name= 'Ali' AND Family= 'Media

در واقع این ضابطه به صورت کلی باید یک رشته باشد . از Or و And برای ایجاد ضابطه های طولانی تر و دقیقتر هم میتوانیم استفاده کنیم .

 

_ FindLast : این متد برای پیدا کردن آخرین رکورد موجود در لیست که با ضابطه و شرط ما همخوانی دارد استفاده می شود و طریقه استفاده از آن مانند متد FindFirst است :

 

( " 'Data1.RecordSet.FindFirst ( "Name= 'Ali' AND Family= 'Media

_ FindNext : این متد هم برای یافتن رکورد بعدی استفاده می شود . باید توجه داشت که برای استفاده از این متد حتما باید قبل از آن از متد FindFirst استفاده کرده باشید .

( " 'Data1.RecordSet.FindNext  ( "Name= 'Ali' AND Family= 'Media

_ FindPrevious : از این متد هم برای یافتن رکورد قبلی استفاده می شود .

( " 'Data1.RecordSet.FindPrevious  ( "Name= 'Ali' AND Family= 'Media

_ NoMatch : این متد مشخص می کند که جستجوی ما چه حاصلی در بر داشته است . اگر جستجوی ما به نتیجه نرسیده باشد مقدار آن True خواهد بود و در غیر این صورت False خواهد شد . برای مثال :

 

( " 'Data1.RecordSet.FindFirst ( "Name= 'Ali' AND Family= 'Media

If  Data1.RecordSet.NoMatch  Then

 "شخص مورد نظر شما در لیست یافت نشد"MsgBox  

Else

 " شخص مورد نظر شما در لیست موجود است"MsgBox  

End If

_ AddNew : از این متد برای ایجاد رکورد جدید در جدول استفاده می شود .

Data1.RecordSet.AddNew

_ Delete : از این متد هم برای حذف رکورد مورد نظر استفاده می شود .

Data1.RecordSet.Delete

_ Edit : این متد قابلیت ویرایش جدول را فعال می کند و ما میتوانیم محتویات رکوردها را تغییر دهیم :

 

Data1.RecordSet.Edit

_ Update : از این متد برای ذخیره کردن رکورد ایجاد شده و یا ویرایش شده استفاده می کنیم . البته قبل از این متد باید یکی از متدهای AddNew یا Edit اجرا شده باشد :

Data1.RecordSet.Update

_ RecordCount : این متد مشخص می کند که جدول ما دارای چند رکورد است و فقط قابل خواندن می باشد :

A = Data1.RecordSet.RecordCount

_Filter : از این متد برای نمایش دادن اطلاعات خاصی که ما برای آن ضابطه تعیین می کنیم استفاده می شود . البته تأثیر این متد در استفاده از کنترل جدول نمایانتر است :

 

"  'Data1.RecordSet.FindFirst "Name= 'Ali

در این مثال رکوردهایی نمایش داده خواهند شد که فیلد نام آنها برابر با 'Ali' باشد . در این متد هم می توانیم از OR و AND برای دقیقتر کردن ضابطه استفاده کنیم .

 

_ Sort : ما با این متد می توانیم اطلاعات و رکوردهای جدول خود را بر اساس یک فیلد مرتب سازی کنیم :

 

Data1.RecordSet.Sort

**********************************************گزارش گیری از پایگاه داده در ویژوال بیسیک


» همانطور که شما عزیزان می دانید گزارشگیری می تواند یکی از ویژگیهایی باشد که یک برنامه پایگاه داده را کاملتر و قابل استفاده تر می کند و کاربران به استفاده از این نوع برنامه ها رغبت بیشتری دارند . یعنی به طور کلی امکان گزارشگیری در یک برنامه از مهمترین ویژگیهای آن است . از گزارشگیری بیشتر در چاپ استفاده می شود و کاربر می تواند قبل از چاپ اطلاعاتی را مشاهده و ارزیابی کند . در این درس من روش ساخت گزارش معمولی با استفاده از امکانات آماده خود ویژوال بیسیک را توضیح خواهم داد ، ولی اکتیوایکس های پیشرفته تری مانند کریستال ریپورت ( Crystal Report ) که توانایی ساخت گزارشهای جالبتر و بهتری را دارند نیز وجود دارند که خود شما باید پیگیر آنها باشید .


» قبل از شروع ساخت گزارش شما باید چند نکته در این مورد یاد بگیرید . در ایجاد یک گزارش معمولی ویژوال بیسیک از از رابط OLE DB برای برقراری ارتباط با پایگاه داده مورد نظر استفاده می کند . برای شروع شما VB خود را باز کرده و یک پروژه استاندارد ایجاد کنید . سپس برای ایجاد رابط از منوی Project گزینه Add Data Environment را انتخاب کنید . با زدن این گزینه فرمی به صورت زیر ایجاد می شود :

 

 


» همانطور که در تصویر می بینید این فرم از یک لیست درختی تشکیل شده که سر شاخه آن همان نام رابط است . شاخه Connections لیست ارتباطها با پایگاه داده ها را مشخص می کند . مثال Connection1 با یک پایگاه داده مرتبط است و حال این که Connection بعدی که ایجاد میکنید می تواند با یک پایگاه داده دیگر ارتباط برقرار کند . شاخه Commands هم جدول یا جدول های انتخابی از هر پایگاه داده را مشخص میکند که بیشترین کاربرد را دارد . حال به توضیح هر یک از این دو شاخه می پردازیم :


شاخه Connections : همانطور که گفته شد این ابزار یا شی ء پایگاه داده ای را که قرار است از آن گزارش تهیه شود مشخص می کند . برای مثال ما مراحل انتخاب یک پایگاه داده مراحل زیر را دنبال می کنیم :


1 ) روی Connection1 راست کلیک کنید تا منویی باز شود . از این منو گزینه Properties را انتخاب کنید تا دیالوگ Data Link Properties نمایش داده شود . برگه اول این دیالوگ دارای یک لیست است.


2 ) شما از این لیست گزینه Microsoft Jet 4.0 OLE DB Provider را انتخاب کرده و گزینه Next را بزنید تا برگه دوم این دیالوگ نمایش داده شود .


3 ) در این مرحله پایگاه داده مورد نظر خود را انتخاب کنید . برای آگاهی از این که آیا اتصال به درستی انجام گرفته می توانید از دکمه Test Connection استفاده کنید . سپس دکمه OK را برای پایان این مرحله انجام دهید .


با انجام این مراحل ما توسط Connection1 به پایگاه داده مورد نظر خود متصل شدیم . حال زمان استفاده از شی ء Command است . برای ایجاد یک Command برای Connection1 روی Connection1 کلیک راست کرده و گزینه Add Command را بزنید . با این کار Command1 به لیست Command ها اضافه خواهد شد .


شاخه Commands : همانطور که گفته شد شی Command برای مدیریت جدول یا فیلد ها استفاده می شود . برای تنظیم این شی ء مراحل زیر را دنبال می کنیم :


1 ) روی Command1 کلیک راست کرده و گزینه Properties را انتخاب کنید تا دیالوگ زیر نمایش داده شود :

 

 


در این دیالوگ اصلی ترین قسمت برگه General است که ما باید آن را تکمیل کنیم .


2 ) در برگه General از کشوی DataBase Objects گزینه Table را انتخاب کنید تا در کشوی Object Name نام جدول های موجود در پایگاه داده قرار گیرد و شما جدول مورد نظر خود را انتخاب کنید . حتی شما می توانید با استفاده از دستورات SQL که در قسمت SQL Statement می نویسید جدول مورد نظر خود را انتخاب نمایید .


3 ) سپس دکمه Apply و دکمه Ok را برای تکمیل این قسمت فشار دهید . برگه های دیگر این دیالوگ برای ساخت گزارشهای پیشرفته تر کاربرد دارند که ما از تکمیل این قسمت ها را به خود شما عزیزان واگزار می کنم .


» در این قسمت تنظیمات مربوط به رابط پایگاه داده به پایان رسید . حال برای ایجاد صفحه طراحی گزارش از منوی Project گزینه Add Data Report را انتخاب کنید . یک صفحه طراحی گزارش با جعبه ابزار مخصوص با نام Data Reprot1 در اختیار شما قرار داده می شود . در این قسمت دو روش برای طراحی گزارش وجود دارد :


روش اول این است که خود شما برای هر کدام از فیلدهایی که می خواهید در گزارش قید شوند یک Rpt Text Box و Rpt Lable قرار دهید و خواص هر کدام از آنها را به طور جداگانه تنظیم کنید .


روش دوم این است که فرم رابط یا Data Environment و DataReport1 را به صورت زیر قرار داده و با کشیدن و انداخت هر کدام از فیلد ها و یا کل جدول از فرم رابط بر روی فرم گزارش ، گزارش خود را تنظیم کنید .

 

 


مهم ترین قسمت : مهمترین قسمت این بخش مرتبط کردن فرم گزارش با فرم رابط است . برای این کار شما باید خواص DataReport1 یا همان فرم گزارش خود را به صورت زیر تنظیم کنید :


1 ) خاصیت DataSource را برابر با DataEnvironment1 قرار دهید .

2 ) خاصیت DataMember را برابر با Command1 قرار دهید .


حال گزارش شما برای نمایش آماده است . برای این کار شما باید در Form1 خود یک CommandButton قرار داده و کد زیر را در آن بنویسید :


()Private Sub Command1_Click

DataReport1.Show

End Sub

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

******************************************

ذخیره کردن تصویر در پایگاه داده


» قطعاً همه برنامه نویسان مایلند که در برنامه های مربوط به پایگاه داده خود بتوانند تصویر را نیز ذخیره کنند چون این امر یکی از ویژگیهای خوب و کارآمد برنامه خواهد بود . برای همین من این بار می خواهم روش ذخیره کردن تصویر را در پایگاه داده به شما عزیزان آموزش دهم .


» همینطور که شما عزیزان برنامه نویس می دانید در پایگاه داده اکسس نوع مشخصی برای ذخیره کردن تصویر وجود ندارد که ما به طور اختصاصی از آنها استفاده کنیم ولی یک نوع داده به نام OLE Object وجود دارد که می تواند هر گونه داده ای مانند صدا و تصویر را پشتیبانی کند . برای شروع شما برنامه Access را باز کرده و این فیلد ها را در آن ایجاد نمایید :

ID => AutoNumber

Picture => OLE Object

حال این جدول را با نام Sample ذخیره کنید و پایگاه داده را با نام db.mdb ذخیره نمایید . حال بدون این که داده ای در در این جدول وارد کنید از Access خارج شده و ویژوال بیسیک عزیز خودمان را باز کنید .


» مواد لازم: ابزارهای مورد نیاز برای کار را به صورت جدول زیر بر روی فرم خود قرار داده و خاصیت های آنها را تنظیم کنید :

 

نام کنترل 
خاصیت DataSource 
خاصیت DataField

Data1 
------------- 
------------

Text1 
Data1 
ID

Image1 
Data1 
Picture

 

 

نام کنترل 
خاصیت Name 
خاصیت Caption

Command1 
CmdNew 
New

Command2 
CmdSave 
Save

Command3 
CmdCancel 
Cancel

CommonDialog1 
CmDialog 
-------

 

کدهای زیر را برای ایجاد ارتباط با پایگاه داده در Form_Load بنویسید :


()Private Sub Form_Load

       "Data1.DatabaseName = App.Path & "\db.mdb

"Data1.RecordSource = "SELECT * FROM Sample

Data1.Refresh

End Sub

» کد باز کردن کادر محاوره ای برای انتخاب عکس با دابل کلیک کردن بر روی ImageBox :


()Private Sub Image1_DblClick

"CmDialog1.Filter = "(*.jpg)|*.jpg

CmDialog.ShowOpen

If CmDialog.FileName <> "" Then

(Image1.Picture = LoadPicture(CmDialog.FileName

End If

End Sub

» کد برای ایجاد رکورد جدید :

()Private Sub CmdNew_Click

Data1.Recordset.AddNew

CmdNew.Enabled = False

CmdSave.Enabled = True

CmdCancel.Enabled = True

Call Image1_DblClick

End Sub

» کد برای ذخیره کردن رکورد ایجاد شده :

()Private Sub CmdSave_Click

Data1.Recordset.Update

CmdNew.Enabled = True

CmdSave.Enabled = False

CmdCancel.Enabled = False

Data1.Recordset.MoveLast

End Sub

» کد برای صرف نظر کردن از رکورد ایجاد شده :

()Private Sub CmdCancel_Click

Data1.Recordset.CancelUpdate

CmdNew.Enabled = True

CmdSave.Enabled = False

CmdCancel.Enabled = False

End Sub


نکته : باید توجه داشته باشید که ذخیره کردن تصویر در پایگاه داده ظرفیت آن را به اندازه زیادی افزایش خواهد داد .

***********************************

انتقال اطلاعات از یک پایگاه به پایگاه داده دیگر


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


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


» برای مثال شما دو پایگاه داده با نام های mdb1 ( پایگاه داده مادر ) و mdb2 ( پایگاه داده فرعی ) که دارای ساختار یکسانی هستند را در نظر بگیرید . ما قصد داریم اطلاعات موجود در پایگاه داده فرعی را بر روی اطلاعات موجود در پایگاه داده مادر بیفزاییم . پس در این حالت اطلاعاتی باید از پایگاه داده فرعی یا رابط به پایگاه داده مادر کپی گردند که نظیری در پایگاه داده مادر ندارند تا به این صورت از ذخیره سازی داده های تکراری در پایگاه داده مادر جلوگیری شود .


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


» پایگاه داده مادر ( mdb1 ) :


--> یک جدول با نام Table1 دارای فیلد های زیر :


> ID : از نوع عددی به عنوان کلید

> Name : از نوع متن

> Family : از نوع متن


» پایگاه داده فرعی ( mdb2 ) :


--> یک جدول با نام Table2 دارای فیلد های زیر :


> ID : از نوع عدد

> Name : از نوع متن

> Family : از نوع متن


» دستور :


جدول فرعی  SELECT _ FROM '  مسیر و نام جدول اصلی ' IN  جدول اصلی INSERT INTO

_ در این دستور فقط مسیر و نام پایگاه داده مقصد ذکر می شود و پایگاه داده مبدا باید در اجرای برنامه گشوده شود . حال مثال را کامل می کنیم . ابتدا شما باید از دیالوگ References گزینه Microsoft DAO 3.51 Object Library را تیک بزنید و کد زیر را در دکمه ای قرار دهید :


()Private Sub CmdCopy_Click

Dim DBase As Database

Dim SQL As String

(Set DBase = OpenDatabase(App.Path & "\mdb2.mdb", True, False


" SQL = " INSERT INTO Table1 IN '" & App.Path & "\mdb1.mdb' SELECT * FROM Table2


DBase.Execute SQL


  " vbInformation , " Copy Completed  , " عمل انتقال اطلاعات با موفقیت به پایان رسید" Msgbox

End Sub

_ در این مثال اطلاعات موجود در جدول پایگاه داده فرعی ( Table2 ) به جدول موجود در پایگاه داده مادر ( Table1 )بدون تکرار در فیلد ID کپی می شوند . با استفاده از این دستور حتی می توان اطلاعات موجود در یک پایگاه داده نوع دیگر مانند Excel را به پایگاه داده Access کپی کرد که انشا الله در قسمت کار با پایگاه داده Excel توضیح خواهم داد .

****************************************

کار با فایل هایی از نوع Excel و Word


» به دلیل این که برنامه Excel و Word یکی از ساده ترین و پرکاربردترین برنامه های مورد استفاده بوده و ساخت شرکت مایکروسافت است و ویژوال بیسیک به راحتی قادر به برقراری ارتباط با آن است ، امروز می خواهم به صورت خلاصه روش ایجاد یک فایل از نوع Excel و Word و برقراری ارتباط با آنها را به شما عزیزان توضیح دهم .


» برای این که شما از امکانات کار با Excel و Word در ویژوال بیسیک 6 برخوردار باشید باید از رابطی که مخصوص خود Excel و Word است استفاده نمایید . برای این کار شما باید از دیالوگ References گزینه های زیر را تیک بزنید :


Microsoft Excel 9.0 Object Library

Microsoft Word 9.0 Object Library


البته بسته به نسخه آفیسی که شما بر روی سیستم خود نصب می کنید شماره یا ورژن این گزینه ها تغییر خواهد کرد .


@ کار با Excel : در ابتدا شما باید تعریفات زیر را در قسمت General برنامه خود انجام دهید :


Dim X_Excel As Excel.Application

Dim X_WorkBook As Excel.Workbook

Dim X_WorkSheet As Excel.Worksheet

_ حال برای ایجاد یک فایل از نوع Excel از دستور زیر باید استفاده کنید :


Set X_Excel = New Excel.Application

_ سپس یک صفحه کاری ایجاد می کنیم که باید از دستور زیر استفاده کنیم :


Set X_WorkBook = X_Excel.Workbooks.Add

_ پس از این کار شیت ( Sheet ) مورد نظر را باید انتخاب کنیم :

(Set X_WorkSheet = X_WorkBook.Worksheets(1

_ که در این مثال Sheet1 را انتخاب کردیم .


» همانطور که می دانید صفحه Excel به صورت گسترده بوده و کار با آن بر اساس خانه های موجود در آن است که هر کدام آدرس مخصوصی دارد . برای مثال خانه شماره یک دارای آدرس ( 1 , 1 ) می باشد . ما هم از این آدرسها برای دسترسی به این خانه ها استفاده می کنیم :


 داده مورد نظر = ( ستون ,  سطر ) X_WorkSheet.Cells

  "X_WorkSheet.Cells( 1 , 1 ) = "Ali

"X_WorkSheet.Cells( 1 , 2 ) = "Hassan

_ در مثال بالا رشته Ali در اولین خانه و رشته Hassan در خانه دوم ردیف اول صفحه یا جدول ذخیره می شود و محدوتی برای وارد کردن انواع داده وجود ندارد و شما می توانید هر نوع داده ای را در خانه ها قرار دهید .


» پس از ایجاد یک صفحه کاری و قرار دادن داده در خانه های آن نوبت به ذخیره کردن آن به عنوان یک فایل Excel می رسد که باید از دستور زیر برای این کار استفاده کنیم :

"X_WorkBook.SaveAs FileName:= "C:\Smple.xls


_ همچنین شما میتوانید برای نمایش صفحه کاری خود توسط برنامه اکسل به صورت زیر عمل کنید :


X_Excel.Visible = True

_ و برای خروج از صفحه کاری از دستور زیر استفاده کنید :


X_Excel.Quit

_ این دستور زمانی کاربرد دارد که از دستور قبلی آن استفاده نمایید .


@ کار با Word : کار با این برنامه هم مانند کار با Excel است و تفاوت آنها بیشتر در قسمت وارد کردن داده ها و اطلاعات می باشد . مانند قبل تعریفات زیر را در قسمت General قرار دهید :


Dim X_Word As Word.Application

Dim X_Doc As Word.Document

_ حال برای ایجاد یا باز کردن یک فایل از نوع Word دستور زیر را به کار ببرید :


Set X_Word = New Word.Application

_ سپس شما باید یک پرونده ) Document ) جدید ایجاد کنید :


Set X_Doc = X_Word.Documents.Add

_ پس از انجا این کارها نوبت به وارد کردن داده ها و اطلاعات است که برای این کار شما بیشتر باید از متد Selection مربوط به X_Word استفاده نمایید :


X_Word.Selection.Borders.OutsideLineStyle = wdLineStyleInset

X_Word.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

X_Word.Selection.Font.Bold = True

X_Word.Selection.Font.Size = 20

"X_Word.Selection.Text = "Media Soft Is For All

در این مثال پس از تنظیمات دلخواه در صفحه پرونده نوشته ای را در آن قرار می دهیم . البته این متدها فقط تعداد اندکی از امکانات کار با فایل های پرئنده ای است و شما باید خودتان آنها را بررسی کنید .


_ حال مانند مثال قبل نوبت به ذخیره کردن پرونده کاری می رسد که روش آن مانند مثال قبل است :


"X_Doc.SaveAs FileName:="C:\Sample.Doc

_ برای نمایش پرونده کاری خود توسط برنامه Word دستور زیر استفاده کنید :


X_Word.Visible = True

------------------------------------------------------------------------------------


---> برنامه نمونه برای آموزشهای داده شده : دانلود


---> برنامه نمونه برای کپی کردن اطلاعات از Excel به یک پایگاه داده Access : دانلود

---> برنامه نمونه برای کپی کردن اطلاعات از یک پایگاه داده Access به Word : دانلود

*********************************************

روش تغییر پسورد پایگاه داده Access از طریق VB


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


1. ابتدا یک پروژه را در VB باز کنید . سپس از منوی Project گزینه References را انتخاب کنید تا دیالوگی نمایش داده شود . از لیستی که مشاهده می کنید گزینه ( Microsoft DAO 3.51 Object library ) را علامت بزنید . البته این در صورتی است که پایگاه داده شما پایین تر از فرمت Office 2003 باشد . ( مثلا Office 2000 ) . در غیر این صورت باید گزینه ( MicroSoft DAO 3.6 Object Library )علامت بزنید . تا احیانا با خطایی مواجه نشوید . ( نسخه 3.6 میتواند بهترین انتخاب باشد ).


2. سپس مثلا یک دکمه روی فرم خود گذاشته و نام آن را به Cmd_PassChange و عنوان آن را به PassChange تغییر دهید . حال کدهای زیر را داخل آن بنویسید یا کپی کنید :


Dim db As DAO.Database

("Set db = DBEngine.OpenDatabase(App.Path & "\Test.mdb", True, False, ";pwd=media

"db.NewPassword "media", "ali

db.Close

_ در این مثال ابتدا ما یک متغیر ( db ) را از نوع کتابخانه DAO تعریف می کنیم . در دستور Set کردن پایگاه داده Access توجه داشته باشید که چون پایگاه داده ما از قبل دارای کلمه عبور است ، ما مجبوریم برای ورود به آن از کلمه عبور ( در این مثال media ) استفاده کنیم . همچنین دقت داشته باشید که در این دستور حتما باید مقدار ورودی Option ( مقدار دوم که تعیین می کند ما به تنظیمات پایگاه داده دسترسی داشته باشیم یا نه) مقدار True باشد . درغیر این صورت از تغییر کلمه عبور جلوگیری خواهد شد . در دستور سوم هم که مشاهدی می کنید ، اولین پارامتر ورودی کلمه عبور قبلی و دومین پارامتر ورودی کلمه عبور جدید شما خواهد بود . خط آخر هم در اصطلاح برای بستن پایگاه داده به کار می رود .


برنامه نمونه ---> دانلود

نظرات 2 + ارسال نظر
محمد جئاد رضایی یکشنبه 29 اردیبهشت‌ماه سال 1387 ساعت 12:29 ب.ظ http://www.javadrr.blogfa.com

سلام دوست عزیزوبلاگت خیلی توپ بود حال کردی با ویروسهات
به من هم سر بزن

سلام به وبلاگت سر زدم.عالی بود.

تیموری سه‌شنبه 14 خرداد‌ماه سال 1387 ساعت 09:40 ق.ظ

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

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد