PDA

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



Petros
03-06-2007, 06:05 PM
بسم الله الرحمن الرحیم

سلام
در این تاپیک نحوه‌ي مدیریت پایگاه داده با استفاده از ویژوال بیسیک مورد بررسی قرار خواهد گرفت. با این امید که رضایت شما را جلب کند.
.
.
.

Creating and Managing Databases with Microsoft Visual Basic 6

Petros
03-06-2007, 07:30 PM
قبل از شروع کار بهتر است که با اصطلاحات و مفاهیم آشنا شویم تا در ادامه با مشکل مواجه نشویم.
----------------------------
پایگاه داده چیست؟
پایگاه داده یا بانک اطلاعاتی محلی است برای نگه‌داری اطلاعات و داده‌های گوناگون به صورت یکپارچه، منظم و مرتب که هر کدام از اطلاعات آن قابل دسترسی و پردازش می‌باشد.

سیستم مدیریت پایگاه داده:
سیستم مدیریت پایگاه داده‌ها، نرم‌افزاری است پیچیده که واسط بین کاربران و محیط فیزیکی ذخیره‌ی داده‌ها است. از جمله سیستم‌های مدیریت پایگاه اطلاعات می‌توان از: Oracle، My SQL، SQL Server، Access و .... نام برد. در این میان ویژوال بیسیک از Paradox، DBase، Foxpro، Access و ... که مهمترین آنها برنامه Microsoft Access می‌باشد پشتیبانی می‌کند و قابلیت ارتباط با آنها را دارا می‌باشد.

توضیحات اضافه:
سیستم‌های مدیریت پایگاه داده علاوه بر توانایی پردازش فایل، می‌توانند داده‌ها را به گونه‌ای سازماندهی کنند که مشکل و پیچیدگی پرس‌وجو ساده‌تر شود. اکثر سیستمهای پایگاه داده که مورد استفاده ویژوال بیسیک هستند از نوع پایگاه داده رابطه‌ای هستند.

اصطلاحات بانک‌های اطلاعاتی:
فیلد: Field یک قطعه داده است که دارای دو جزء نام و مقدار می‌باشد. (تصویر شماره یک)

http://www.myimagehub.com/files/3181/My%20Documents/1.jpg
تصویر شماره یک


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


فایل: مجموعه‌ای از رکوردها، تشکیل فایل را می‌دهند. به عنوان مثال، فایل تحصیلی دانش‌آموزان، محتوای فیلدهای رکوردهای مربوط به دانش‌آموزان را دارا می‌باشد.

Petros
03-07-2007, 03:29 PM
ایجاد Database توسط خود برنامه‌ي ویژوال بیسیک


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


ایجاد یک Database با استفاده از Visual Data Manager
1. به منوی Add-Ins رفته و سپس بر روی گزینه‌ی اول یعنی Visual Data Manager کلیک کنید. پنجره‌ای همانند پنجره‌ی واقع در شکل زیر و با عنوان VisData ظاهر می‌گردد.


http://www.myimagehub.com/files/3181/My%20Documents/2.jpg


2. به منوی فایل در پنجره‌ی VisData بروید و فرمان زیر را طی کنید.

New>Microsoft Access>Version 7.0 MDB

3. در این مرحله نامی برای پایگاه داده خود وارد کنید و آن را ذخیره کنید.


http://www.myimagehub.com/files/3181/My%20Documents/3.jpg


4. در این مرحله کادر زیر نمایان می‌شود.


http://www.myimagehub.com/files/3181/My%20Documents/4.jpg

Petros
03-09-2007, 07:56 PM
5. همانطور که در شکل می‌بینید در پنجره‌ی Database Window یک علامت + وجود دارد که با کلیک بر روی آن می‌توانید یک‌سری از خصوصیات را به دیتابیس خود نسبت دهید (ضرورتی یرای توضیح این بخش وجود ندارد). اما کار اصلی شما با کلیک راست روی گزینه‌ی Properties و انتخاب New Table آغاز می‌شود.


http://www.myimagehub.com/files/3181/My%20Documents/5.jpg


6. با انتخاب گزینه‌ی New Table کادری همانند کادر زیر و با عنوان Table Structure نمایان می‌شود که شما در این بخش می‌توانید برای پایگاه داده‌ای خود جدول و متقابلا فیلد در نظر بگیرید.



http://www.myimagehub.com/files/3181/My%20Documents/6.jpg



7. در قسمت Table Name نامی برای جدول خود انتخاب کنید (مثلا Student). سپس بر روی دکمه‌ی Add Field کلیک کنید تا کادر مربوط به آن باز شود.


http://www.myimagehub.com/files/3181/7.jpg


8. در قسمت Name نامی مانند First Name را تایپ کنید و در قسمت Type نوع داده‌ای فیلد را مشخص کنید. توضیح انواع Typeها را در اینجا مشاهده می‌کنید.

------------------
1. Boolean: این نوع داده‌ای می‌تواند مقادیر دو ارزشی True/False، Yes/No، On/Off یا دیگر مقادیر را دربر گیرد.


2. Byte: محدوده‌ی مقادیر این نوع داده‌ای 0 تا 255 می‌باشد و جهت پردازش سن افراد مناسب اسب.


3. Integer: محدوده‌ی مقادیر این نوع داده‌ای 32,768- تا 32,767 (کاراکتر) می‌باشد.


4. Long: محدوده‌ی مقادیر این نوع داده‌ای 2,147,483,648- تا 2,147,483,647 می‌باشد.


5. Currency: مقادیر پولی را نگه می‌دارد و می‌تواند به طور خودکار علامت $ داشته و محل‌های علامت جداساز هزارتایی «کاما» را نگه دارد. محدوده‌ی مقادیر این نوع داده‌ای 922,337,203,685,477.5808- تا 922,337,203,685,477.5807 می‌باشد.

6. Single: این نوع داده‌ای مناسب برای کار با اعداد اعشاری می‌باشد و محدوده‌ی مقادیر این نوع داده‌ای برای اعداد منفی 3.402823E38- تا 1.401298E-45- و برای اعداد مثبت از 1.401298E-45 تا 3.402823E38 می‌باشد.


7. Double: محدوده‌ی مقادیر این نوع داده‌ای برای اعداد منفی 1.79769313486232E308- تا 4.94065645841247E-324- و برای اعداد مثبت از 4.94065645841247E-324 تا 1.79769313486232E308 می‌باشد.


8. Date/Time: تاریخ، زمان یا ترکیبی از انها را نگه می‌دارد. توصیه می‌شود حدالامکان از این نوع داده‌ای برای تاریخ شمسی استفاده نکنید و بهتر است از نوع داده‌ای Text برای این منظور استفاده کنید.


9. Text: نوع پیش‌فرض و ترکیبی از حروف و ارقام می‌باشد و حداکثر تا 255 کاراکتر در این نوع فیلد امکان پذیر است.


10. Binary: برای کار با اعداد دودویی از این نوع داده استفاده می‌شود.


11. Memo: از نوع متن (Text) است که تا 64,000 کاراکتر را ذخیره می‌کند.
------------------
ادامه‌ی 8:
در قسمت Size می‌توانید فقط اندازه‌ی نوع داده‌ای Text را به تعداد مشخصی کاراکتر محدود کنید.
Validation Rule شرطی است که داده‌های وارد شده را محدود می‌کند. اگر می خواهید فیلد شما همیشه یک قالب را در دریافت اطلاعات دنبال کند از این قسمت استفاده کنید. مانند پلاک ماشین
Validation Text نیز متنی است که در زمان عدم احراز شرایط Validation Rule‌به عنوان پیغام خطا یا اخطار نمایش داده می‌شود.
DefaultValue: مقدار پیش‌فرض را تعیین می‌کند، گزینه‌ی Required مشخص می‌کند که در زمان ورود داده آن فیلد نمی‌تواند خالی رها شود و Allow Zero Lenght مشخص می‌کند آیا می‌توان مقدار خالی به فیلد نسبت داد یا خیر.

Petros
03-10-2007, 10:18 AM
افزودن اطلاعات به (فیلدهای) پایگاه داده

برای تمرین جدولی بسازید با عنوان Students و فیلدهای First Name, Last Name و Age را با خصوصیات زیر در آن ایجاد کنید.
First Name = نوع داده‌ای آن Text و Size آن برابر با 30
Last Name = نوع داده‌ای آن Text و Size آن برابر با 30
Age = نوع داده‌ای آن Byte و Validation Rule آن برابر با Between 1 And 150 و Validation Text آن برابر با:

Enter numbers which are between 1 And 150


بعد از اتمام کار در پنجره‌ی Table Structure گزینه‌ی Build the Table را کلیک کنید. همانطور که می‌بینید جدولی که ایجاد کرده بودید در زیر Properties نمایان می‌شود و آماده‌ی دریافت اطلاعات از سوی شما می‌شود.


http://i14.tinypic.com/30m8y3c.jpg


داخل پرانتز:
شرطی که در فیلد Age به کار بردیم این بود که کاربر فقط مجاز به وارد کردن اعداد بین 1 تا 150 می‌باشد. در اینجا تعدادی دیگر از عملگرهای رابطه‌ای را با هم مرور می‌کنیم.
> کوچکتر از
=> کوچکتر مساوی
< بزرگتر از
=< بزرگتر مساوی
= مساوی
<> نامساوی
طرز استفاده‌ی اینها در بخش Validation Rule هم به این صورت است:


http://i18.tinypic.com/2qirdyo.jpg


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


http://i16.tinypic.com/3zvscip.jpg


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


http://i19.tinypic.com/34i2ufl.jpg

ما در این قسمت اعلام کردیم مقداری که در فیلد داده می‌شود باید با حرف K و حداکثر 4 کاراکتر باشد. به جای علامت سوال هر نوشته‌ای می‌تواند قرار گیرد.


از قلم افتاده:
در بخش OrdinalPosition نیز می‌توانید ترتیب قرار گرفتن فیلدها را تنظیم کنید. مثلا در مثال ما ابتدا First Name سپس Last Name و در آخر Age که عدد 3 را به خود اختصاص داده است نمایش داده می‌شود.


ادامه:
برای ویرایش بانک اطلاعاتی (افزودن فیلد و حذف فیلد و ...) خود بر روی جدولی که ایجاد کرده‌اید کلیک راست کنید و گزینه‌ی Design را انتخاب کنید. اما برای افزودن اطلاعات به پایگاه داده، گزینه‌ی اول یعنی Open را انتخاب کنید. بعد از باز شدن کادر Table:Name of Table بر روی Add کلیک کنید، مقادیر مورد نظرتان را وارد کنید و در آخر بر روی Update کلیک کنید. برای اضافه کردن مجدد اطلاعات دوباره بر روی Add کلیک کنید. با استفاده از گزینه‌ی Edit می‌توانید داده‌ی مورد نظر را ویرایش و با استفاده از گزینه‌ی Delete می‌توانید آن را حذف کنید.


http://i19.tinypic.com/2wc4d3r.jpg

Petros
03-17-2007, 11:37 AM
کار کردن با کنترل Data یا Data Control
کنترل Data پیوندی بین اطلاعات موجود در بانک اطلاعاتی و کنترل‌های ویژوال بیسیک (نظیر Label, TextBox و ...) است که برای نمایش اطلاعات به کار می‌رود؛ در واقع این کنترل نماینده پایگاه داده در ویژوال بیسیک است و کارهایی از قبیل مدیریت جداول و رکوردها (حذف، ایجاد، بروزرسانی، جستجو و فیلترسازی)، پیمایش بین رکوردها و غیره را انجام می‌دهد.



http://www.myimagehub.com/files/3181/My%20Documents/13.jpg
تصویری از کنترل Data که متن موجود در بین دکمه‌های پیمایش آن توسط مشخصه‌ي Caption تنظیم می‌شود.


نکته:
به طور پیش‌فرض، کنترل Data یک مجموعه رکورد پویایی (Dynaset - Type) را از یک یا چند جدول بانک اطلاعاتی ایجاد می‌کند؛ این بدین معنی است که مجموعه رکورد پویاست، بنابراین هنگامی که داده‌های جدول اصلی تغییر می‌کنند، رکوردهای موجود در مجموعه رکورد نیز به هنگام می‌شوند. یعنی کوچکترین تغییر در مقدار فیلدهای بانک اطلاعاتی توسط برنامه ویژوال بیسیک، باعث تغییر آن فیلد می‌شود. در ادامه بیشتر با این نکته آشنا می‌شوید.


کاربرد کنترل Data
1. ویژوال بیسیک را اجرا کرده و یک پروژه از نوع استاندارد و با نام Database1 ایجاد کنید.
2. بر روی کنترل Data دوبار کلیک کنید تا در وسط فرم قرار گیرد یا آن را انتخاب کنید و به اندازه‌ی دلخواه آن را رسم کنید. البته این کنترل مشخصه‌ای با نام Align دارد که محل قرارگیری این کنترل را تعیین می‌کند. به عنوان مثال با انتخاب Align Bottom اصطلاحا کنترل شما به فرم Pin می‌شود؛ یعنی با تغییر اندازه‌ی طول و عرض فرم، اندازه‌ی کنترل داده نیز تغییر می‌کند.
3. طبق پایگاه داده‌ای که ما توسط VisData در مثال بالا ایجاد کردیم به سه TextBox و سه Label جهت نمایش اطلاعات نیاز داریم (به این دلیل که سه فیلد ایجاد کردیم).


http://www.myimagehub.com/files/3181/My%20Documents/14.jpg


4. در این مرحله نیاز دارید که خواص DatabaseName و RecordSource را نتظیم کنید. مشخصه‌ی DatabaseName، کنترل Data را به یک بانک اطلاعاتی خاص مرتبط می‌سازد. برای مثال اگر پایگاه داده‌ی شما در C:\Petros\Test.mdb قرار دارد، مقدار مشخصه‌ی DatabaseName نیز باید با این آدرس مقداردهی شود | مشخصه‌ی RecordSource نیز جداول و Queryهای موجود در بانک اطلاعاتی انتخاب شده را نمایش می‌دهد که بر حسب نیاز باید یکی از آنها انتخاب شود (در مثال ما جدول Students انتخاب شده است).
5. Text1 را انتخاب کنید و مشخصه‌ی DataSource آن را برابر با Data1 و مشخصه‌ی DataField آن را برابر با First Name قرار دهید.
6. Text2 را انتخاب کنید و مشخصه‌ی DataSource آن را برابر با Data1 و مشخصه‌ی DataField آن را برابر با Last Name قرار دهید.
7. Text3 را انتخاب کنید و مشخصه‌ی DataSource آن را برابر با Data1 و مشخصه‌ی DataField آن را برابر با Age قرار دهید.


توضیح:
1. DataSource تمام کنترلهای Dataی موجود بر روی فرم را لیست می‌کند و مشخص می‌کند که کنترل موردنظر می‌خواهد با کدام Data Control ارتباط برقرار کند. DataField نیز فیلدهای جدول انتخاب شده را لیست می‌کند.
2. از لیبل هم برای توضیح فیلدهااستفاده شده است تا کاربر درک درستی از برنامه داشته باشد.
3. در بانکهای اطلاعاتی از دو خصوصیت Locked و Enabled جعبه‌متن برای جلوگیری از تغییر مقدارهای بانک اطلاعاتی بیشتر استفاده می‌شود.


این هم نوع کدنویسی شده‌ی برنامه‌ی بالا، که بیشتر مورد تاکید برنامه‌نویسان است:
نکته: خاصیت DataSource مربوط به جعبه‌متن را باید هنگام طراحی تنظیم کنید. چون امکان تنظیم آن با کدنویسی وجود ندارد.



Private Sub Form_Load()
Data1.DatabaseName = "C:\Petros\Test.mdb"
'Data1.DatabaseName = App.Path & "\" & "Test.mdb"
Data1.RecordSource = "Students"
Text1.DataField = "First Name"
Text2.DataField = "Last Name"
Text3.DataField = "Age"
End Sub

برنامه را اجرا کنید و با استفاده از دکمه‌های پیمایش چرخی بین داده های خود بزنید.
همچنین برای فهمیدن نکته‌ای که در بالا ذکر کردیم لازم است تا سن یک فرد را تغییر دهید و بعد به رکورد بعدی بروید و سپس به همان رکورد بازگردید. چه تغییری مشاهده می‌کنید؟

Petros
03-17-2007, 01:20 PM
خاصیت ReadOnly:
این خاصیت مشخص می‌کند که آیا پایگاه داده می‌تواند پردازش شود یا خیر. این خاصیت به طور پیش‌فرض دارای مقدار False (یعنی قابل پردازش) می‌باشد.

خاصیت Connect:
نوع سیستم مدیریت پایگاه داده را مشخص می‌کند که در زمان تنظیم مشخصه‌ی DatabaseName به طور خودکار تنظیم می‌شود.

نکته:
همانطور که می‌دانید ویژوال بیسیک در سال 1990 به بازار ارائه شد و طبیعی بود که فقط از سیستمهای مدیریت پایگاه داده‌ی زمان خودش (مانند Access 97) پشتیبانی کند. اما با گذشت زمان و با روی کار آمدن نسخه‌های جدیدتر از سیستمهای مدیریت پایگاه داده، ویژوال بیسیک همچنان از همان سیستم‌ها پشتیبانی می‌کند. پس اگر بخواهید دیتابیسی که توسط Access XP یا Access 2003 یا Access 2007 ایجاد شده‌است را به VB متصل کنید با خطایی همانند خطایی که در شکل زیر آمده است رو‌به‌رو می‌شوید.


http://www.myimagehub.com/files/3181/15.jpg


اما راه حل چیست:
1. فایل موردنظرتان را باز و سپس مسیر زیر را طی کنید:

Tools>Database Utilities>Convert Database>To Access 97 File Format

نامی برای فایل جدید خود انتخاب کنید و آن را ذخیره کنید؛ سپس فایل جدید را به VB وصل کنید.


2. استفاده از Service Pack 6 که من به شخصه امتحان نکردم.


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


خاصیت Refresh:
برای چک کردن تغییرات انجام شده در بانک اطلاعاتی و اصطلاحا بارگذاری مجدد یا تازه‌سازی از متد Refresh استفاده می‌کنیم که معمولا در Form_Load قرار داده می‌شود تا یک بار و فقط در لحظه‌ی اجرای برنامه، عملیات درخواست شده صورت گیرد.


کاربرد RecordSet:


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

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


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


MoveFirst: برای مشاهده‌ی اولین رکورد از این متد استفاده می‌کنیم. روش استفاده از این متد به صورت زیر است:


Data1.RecordSet.MoveFirst


MoveLast: برای مشاهده‌ی آخرین رکورد، از این متد استفاده می‌کنیم. روش استفاده از این متد به صورت زیر است:


Data1.RecordSet.MoveLast


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


Data1.RecordSet.MoveNext


MovePrevious: از این متد برای رفتن به رکورد قبلی استفاده می‌شود. در این مورد هم باید رکود قبلی وجود داشته باشد. روش استفاده از این متد به صورت زیر است:


Data1.RecordSet.MovePrevious

Petros
03-19-2007, 12:48 PM
برخی از متدهای زیر فقط در برنامه‌های کاربردی، عملکرد خود را نشان می‌دهند؛ پس روش استفاده از این متدها به خود برنامه‌نویس و نیاز او مربوط می‌شود و ما فقط بخشی از آن را ذکر می‌کنیم:


BOF: این متد مشخص می‌کند که آیا اشاره‌گر در رکورد اول قرار دارد یا خیر؛ که در صورت قرار داشتن در رکورد اول مقدار True را به خود خواهد گرفت. BOF کوچک‌شده‌ی Beginning of File می‌باشد. روش استفاده از این متد:


M = Data1.RecordSet.BOF


EOF: این متد مشخص می‌کند که آیا اشاره‌گر در رکورد آخر قرار دارد یا خیر؛ که در صورت قرار داشتن در رکورد آخر مقدار True را به خود خواهد گرفت. EOF کوچک‌شده‌ی End of File می‌باشد. روش استفاده از این متد به صورت زیر است:


H = Data1.RecordSet.EOF


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


Data1.RecordSet.FindFirst ("FirstName = 'Petros' ") 'Our Field is FirstName
Data1.RecordSet.FindFirst ("FirstName = 'Petros' And LastName = 'Cruise' ") 'LastName is another Field


توضیح: در مثال بالا نام فیلدی که می‌خواهیم در آن جستجو انجام گیرد را نوشتیم یعنی FirstName (شما باید دقت کنید که در هنگام طراحی بانک اطلاعاتی نام فیلد خود را از هم جدا نسازید. زیرا اگر این کار را نکنید در این قسمت از طرف ویژوال بیسیک اررور دریافت خواهید کرد.) و سپس نام فردی را که می‌خواهیم جستجو کنیم را در ' ' گذاشتیم.

استفاده‌های دیگر:
استفاده از یک TextBox برای جستجو:


Data1.Recordset.FindFirst ("FirstName='" & Trim(txtSearch) & "' ") 'Search using a TextBox


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


Data1.Recordset.FindFirst "FirstName Like '*" & txtSearch & "*'" 'Search
Data1.Recordset.FindFirst "FirstName Like """ & txtSearch & "*""" 'Search


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

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


Data1.RecordSet.FindNext ("FirstName = 'Petros' ") 'FindNext Method

Petros
03-20-2007, 03:05 PM
FindPrevious: از این متد هم برای یافتن رکورد قبلی استفاده می‌کنیم. روش استفاده از این متد همانند متد قبلی می‌باشد.


Data1.Recordset.FindPrevious ("FirstName = 'Petros' ") 'FindPrevious Method
Data1.Recordset.FindPrevious ("FirstName ='" & Trim(Text1.Text) & "'") 'FindPrevious Method


NoMatch: این متد مشخص می‌کند که جستجوی ما چه نتیجه‌ای دربر داشته است. اگر جستجوی ما به نتیجه‌ای نرسیده باشد مقدار True برگشت داده خواهد شد. روش استفاده از این متد:


Data1.RecordSet.FindFirst ("FirstName = 'Petros' And LastName = 'Cruise' ") 'Using NoMatch Method
If Data1.Recordset.NoMatch = True Then
MsgBox "Not Found", vbCritical, "Search" 'Having No Result
Else
.........
End IF


AddNew: از این متد برای ایجاد رکورد جدید استفاده می‌کنیم. این متد به صورت اتوماتیک، مقدار کنترل متصل شده به بانک اطلاعاتی (مثل TextBox) را خالی و آماده‌ی دریافت اطلاعات می‌سازد. روش استفاده:


Data1.Recordset.AddNew


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


Data1.Recordset.Delete


Edit: این متد قابلیت ویرایش جدول را فراهم می‌سازد و ما می‌توانیم مقادیر فیلدهایمان را به نسبت دلخواه تغییر دهیم. روش استفاده از این متد:


Data1.Recordset.Edit


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


Data1.Recordset.Update


http://www.myimagehub.com/files/3181/18.jpg


CancelUpdate: از این متد برای توقف ویرایش و یا اضافه کردن رکورد جدید استفاده می‌کنیم. روش استفاده:


Data1.Recordset.CancelUpdate

Petros
03-26-2007, 11:26 AM
Close: از این متد برای قطع ارتباط یک شی از نوع DataConnection یا RecordSet با پایگاه داده استفاده می‌کنیم. همانطور که در قسمت‌های بالا مشاهده کردید کوچکترین تغییر در فیلدهای پایگاه داده باعث ثبت و ذخیره شدن آن مقدار می‌شود و تنها راه جلوگیری از این کار استفاده از دو متد Lock یا Enabled کنترل TextBox بود. اما شما با استفاده از متد Close هم می‌توانید از این کار جلوگیری کنید. برای برقراری ارتباط هم لازم است تا دوباره مشخصات بانک اطلاعاتی (نظیر DataBaseName و RecordSource و ...) را Load کنید. روش استفاده:


Data1.Recordset.Close


RecordCount: این متد مشخص می‌کند که جدول (Table) ما حاوی چند رکورد می‌باشد. این متد فقط قابل خواندن می‌باشد. روش استفاده از این متد:


A = Data1.Recordset.RecordCount


نکات:
1. تفاوت FindFirst و FindLast چیست؟
در صورتی که شما داده‌ای را از نظر زمانی، همزمان با داده‌ی دیگر وارد کرده باشید استفاده از متد FindFirst به جای FindLast (یا برعکس) هیچ ممانعتی ندارد یا به عبارت دیگر تفاوتی در جستجو نخواهید دید.
اما اگر مثلا پتروس 1 را زودتر از پتروس 2 و پتروس 3 وارد کرده باشید، دستور اول (یعنی FindFirst) پتروس 1 و دستور دوم (یعنی FindLast) پتروس دوم و سوم را نمایش می‌دهد. (البته به کمک متد FindNext)


2. کاربرد متد Edit چیست؟
همانطور که در قسمت‌های بالا مشاهده کردید کوچکترین تغییر در فیلدهای پایگاه داده باعث ثبت و ذخیره شدن آن مقدار می‌شود. یعنی به عبارتی ما همیشه می‌توانیم رکوردهای خودمان را ویرایش یا Edit کینم. با این وجود کاربرد متد Edit چیست؟ خيلي از مواقع مثلا توي صفحات Asp شي‌ای به نام Data Control، Combo Box ،Textbox و يا TextArea متصل به ديتابيس بصورت Real Time نداريد بلكه مجبوريد خودتون تزريق اطلاعات از توي صفحات ديتابيس و برعكس اون رو بعهده بگيريد؛ اینجاست که متد Edit کاربرد خود را نشان می‌دهد.


3. نحوه‌ي Sort کردن جدول به چه صورت می‌باشد؟
برای راحتی کار و برای Sort کردن جدول ما پیشنهاد می‌کنیم که از دستورات SQL استفاده کنید. در دستور زیر Students نام جدول و FirstName نام فیلدی است که می‌خواهیم بر اساس ان جدول مرتبط شود. در این کار دستور Order by به ما کمک می‌کند. در آینده با دستورات SQL بیشتر آشنا می‌شویم.


Data1.RecordSource = "Select * From Students order by FirstName" 'Using SQL Functions



4. ایجاد AutoNumber توسط ویژوال بیسیک و نه به کمک Access چگونه می‌باشد؟
برای ایجاد اتونامبر و چگونگی بدست آوردن شماره‌ی آخرین رکورد باید از کد زیر بهره ببرید:


General
Dim Last_ID As Long
-------------------------
Data1.RecordSource = "select * from simple order by StudentID DESC" 'DESC Stands for Descending
Last_ID = 0
Data1.Refresh
If Not Data1.Recordset.EOF Then Last_ID = Data1.Recordset("StudentID") 'Cheching
Last_ID = Last_ID + 1
Data1.RecordSource = "select * from simple order by Name" 'Using SQL Functions
Data1.Refresh
Data1.Recordset.AddNew
Data1.Recordset("StudentID") = Last_ID
txtID = Last_ID


کد بالا را در بخشی که قرار است رکورد جدید ایجاد کنید قرار دهید. مثلا AddNew


این هم Source کامل برنامه. دانلود کنید و ما را به یک صلوات کوچک مهمان کنید.


http://www.myimagehub.com/files/3181/My%20Documents/213123.jpg


464

alimehrabiyan
03-28-2007, 02:56 PM
سلام از از تلاشتون ممنونم
ولی میشه به زبون ساده تر بگین فایده ی این کار ها چیه (لیلی زنه یا مرد؟)
:"> :-/ :(

Petros
03-28-2007, 05:27 PM
سلام
ممنون از سوالی که پرسیدی. این سوال شما ممکنه سوال برخی دیگر از دوستان هم باشه. شاید شما برخی از اینها رو بدونید اما محض اطلاعات دوستان جواب رو یکم ساده می‌نویسم.
-------------
هدف:
++ ما برای اینکه روی اطلاعات صوتی، تصویری و متنی خودمون کنترل داشته باشیم یعنی خیلی منظم و دسته‌بندی شده اونها رو اون هم با سلیقه‌ی خودمون نگه‌داری کنیم از بانک اطلاعاتی استفاده می‌کنیم؛ ++ یا برای اینکه برنامه‌ای بتونه اطلاعات رو از جلسه‌ای به جلسه‌ی کاری دیگر نگه داره، باید توانایی ذخیره‌سازی داده‌ها روی دیسک سخت رو داشته باشه در غیر این صورت، هنگامی که برنامه‌ی کابردی قطع بشه، تمام داده‌های برنامه که در حافظه‌ی اصلی هستند از بین می‌ره. بنابراین، برای اینکه داده‌ها پایدار باشند، باید برنامه توانایی ذخیره و بازیابی داده‌ها در دیسک سخت را داشته باشد.
++ یکی دیگر از اهدافمون در ایجاد بانک اطلاعاتی، دسترسی سریع به داده‌هاست در حقیقت پایگاه داده مجموعه‌ای سازمان یافته از اطلاعات است. شما می‌توانید سطوحی امنیتی برای داده‌های خود ایجاد کنید و در صورت لزوم مانند یک Admin از آنها استفاده کنی.
-------------
مثال:
1. برنامه‌ی فرهنگ لغت یا دیکشنری: واضح‌ترین مثال همین مثال دیکشنریه. یعنی شما در یک فیلد نام لغت و در فیلد دیگر معنی آن را تایپ می‌کنید و با استفاده از یک رابط مانند VB یک برنامه‌ی دیکشنری ایجاد می‌کنید. مثلا مثل Babylon. البته این برنامه خیلی پیشرفته‌تر از این حرفاست (به هر حال شما با کمی جستجو و پرسش می‌توانید نحوه‌ي عملکرد یا ساختار این برنامه رو ببینید).

2. برنامه‌ی ویدئو کلوپ: اگر ویدئو کلوپ محل شما یکم پیشرفته باشه میتونه اطلاعات شما رو توی یک بانک اطلاعاتی ذخیره کنه (مثلا کی فیلم بردی، کی تحویل دادی، چه فیلم‌هایی دیدی، تا به حال چند تا دیدی، و آخرین فیلمی که دیدی چی بوده و ...).

3. ثبت احوال: اطلاعات مردم یک کشور رو توی چند بانک اطلاعاتی ذخیره می‌کنه. فکر می‌کنید رو کاغذ جواب میده؟

4. وضعیت کارکنان شرکت ایران خودرو.

5. لیست مشترکین یک مجله یا روزنامه

6. برنامه‌ای که کاربر جدید ثبت نام می‌کند. مثل همین انجمن. شما میتونی بگی فلان کس که فلان رمز رو خریده به صورت Admin وارد سیستم بشه وگرنه فقط یک Guest‌ باشه و فقط بتونه از بخش‌های خاص و ار قبل تعریف شده استفاده کنه.
7. ....
-------------
حالا برای چی از VB استفاده می‌کنیم؟ مگه برنامه‌هایی مثل Access یا Foxpro امکان جستجو یا اضافه کردن اطلاعات و ... رو نمیدن؟
بله اما همونطور که گفتم VB در این وسط فقط نقش واسط را بازی می‌کند و پردازش‌ها و ویرایش‌های صورت گرفته‌شده در سیستم مدیریت پایگاه داده را نمایش می‌دهد. راحتی کار یکی دیگر از عوامل استفاده از این رابط است.
-------------
اگر هنوز جواب سوالت رو نگرفتی می‌تونی یک سر به Wikipedia بزنی و پایگاه داده‌ها رو در اون سرچ کنی.

alimehrabiyan
03-29-2007, 08:43 PM
نه بابا دیگه این قدر که شما فکر میکنید .... نیستم با نشکر از شما اما به نظر شما نمیشه به جای این کار از یک سورس برای جستجو استفاده کرد

Petros
03-31-2007, 02:36 PM
ایجاد فرم‌های مقید به بانک اطلاعاتی با Data Form Wizard
ویژوال بیسیک ابزاری ارایه می‌کند که می‌توان به وسیله‌ی آن، راه طراحی و کدنویسی (در مورد پایگاه داده) را کوتاه‌تر و یا آسان‌تر کرد. این ابزار یک Wizard با نام Data Form Wizard می‌باشد، که تقریبا تمام کارهایی که ما در مثال‌های بالا انجام دادیم را یک‌جا انجام می‌دهد اما با چندین تفاوت کوچک (مثلا استفاده از کنترل ADO به‌جای کنترل Data)، که به نوبت به آنها هم می‌رسیم.

Load کردن Data Form Wizard
به طور عادی گزینه‌ای با نام Data Form Wizard در منوها و بخش‌های مختلف ویژوال بیسیک وجود ندارد. پس شما باید این برنامه‌ی کمکی (Add-in) را به ویژوال بیسیک اضافه کنید تا بتوانید از آن استفاده کنید. برای این کار مراحل زیر را طی کنید:
1. ویژوال بیسیک را اجرا کنید.
2. از منوی Add-Ins گزینه‌ی Add-In Manager را انتخاب کنید.
3. در کادر محاوره‌ای باز شده و از لیست موجود گزینه‌ی VB 6 Data Form Wizard را انتخاب کنید و کادر علامت Loaded/Unloaded را فعال کنید. این کار با دابل کلیک هم امکان پذیر است.


http://www.myimagehub.com/files/3181/My%20Documents/19.jpg
گزینه‌ی Load on Statup باعث می‌شود که گزینه‌ی انتخاب شده مهمان همیشگی ویژوال بیسیک باشد.


4. اکنون که ویزارد را به IDE ویژوال بیسیک اضافه کردید، می‌توانید آن را در تمام پروژه‌ها به کار ببرید.

نحوه‌ي استفاده از Data Form Wizard
1. بعد از Load کردن Data Form Wizard، دوباره به منوی Add-Ins رفته و این بار گزینه‌ی Data Form Wizard را انتخاب کنید.


2. در کادر محاوره‌ای Introduction روی Next کلیک کنید. در این کادر بخشی وجود دارد که با استفاده از می‌توان به پروفایلی که قبلا ایجاد شده است دسترسی پیدا کرد (در انتهای این ویزارد شما می‌توانید برای خود یک پروفایل ایجاد کنید و تنظیماتی که قبلا ایجاد کرده بودید را دوباره بارگزاری نمایید).


http://www.myimagehub.com/files/3181/20.jpg


3. در کادر محاوره‌ای Database Type گزینه‌ی Access را انتخاب کرده و بر روی Next کلیک کنید.


4. در کادر بعدی یعنی کادر Database روی دکمه‌ی Browse کلیک کنید تا کادر محاوره‌ی Access Database باز شود. اکنون می‌توانید بانک اطلاعاتی مورد نظر برای ایجاد فرم را انتخاب کنید. پس از انتخاب بر روی Next کلیک کنید.


5. ویژوال بیسیک کنترل‌ها و امکانات جدید را در یک فرم جدید ثبت می‌کند. بنابراین یک نام برای فرم خود در نظر بگیرید و از لیست Form Layout گزینه‌ی Single Record را انتخاب کنید. از گزینه‌های Binding Type گزینه‌ی ADO Data Control را انتخاب کرده و روی Next کلیک کنید.


http://www.myimagehub.com/files/3181/21.jpg

6. جداول موجود در بانک اطلاعاتی شما، در قسمت Record Source لیست شده است. بسته به نیاز یکی را انتخاب کنید و فیلد‌های مورد نظرتان را به لیست Selected Fields انتقال دهید (با استفاده از دکمه‌های بین لیستها). در آخر بر روی Next کلیک کنید.


http://www.myimagehub.com/files/3181/22.jpg

7. اگر می‌خواهید رکوردهایتان بر اساس فیلد خاصی مرتب شوند، از کادر Column to sort by نام فیلد مورد نظر را انتخاب کنید.


8. در کادر محاوره‌ای Control Selection کادرهای علامت را از حالت انتخاب خارج نکنید. بر روی Next کلیک کنید.


9. اگر می‌خواهید که تنظیماتی که تا کنون انجام داده‌اید در فایلی ذخیره شود، بر روی سه نقطه کلیک کنید و آن را با نامی مناسب بر روی دیسک ذخیره کنید. این فایل در مرحله‌ی اول به کار می‌آید.


http://www.myimagehub.com/files/3181/23.jpg


10. روی Finish کلیک کنید و از منوی Project گزینه‌ی Project Propeties را انتخاب کنید. در تب General و در بخش Startup Object فرم مورد نظر را انتخاب کنید.


http://www.myimagehub.com/files/3181/My%20Documents/24.jpg


Congratulation! Petros

Petros
04-01-2007, 11:54 PM
ادامه ...
در این قسمت، مطالبی درباره‌ی نوع فرم‌هایی که Data Form Wizard می‌تواند ایجاد کند مطالبی را خواهیم آموخت.

بعد از انتخاب بانک اطلاعاتی مورد‌نظر برای استفاده در Data Form Wizard، چندین گزینه نمایش داده خواهد شد که نحوه‌ی کار فرم را تعیین می‌کنند (شکل پایین).


http://www.myimagehub.com/files/3181/21.jpg

بخش Binding Type نشان می‌دهد که چگونه فرم کار خواهد کرد:

ADO Data Control از تکنیک‌های عام استفاده می‌کند (مفهوم این گزینه در درس‌های بعدی مشخص‌تر می‌شود).

ADO Code از کنترل‌های ADO Data استفاده نمی‌کند. در عوض، ویزارد کدی را تولید می‌کند که مانند کنترل‌ها عمل می‌کند.

Class: یک مدول کلاس ایجاد می‌کند که وظایف دسترسی به داده ها را ارایه می‌کند.

------------------------------
بخش Form Layout تعیین می‌کند که برنامه‌ی شما از چه کنترل‌ها یا تکنولوژی‌هایی استفاده کند.

Single Record: نوع ساده‌ی نمایش اطلاعات است و فقط در حد قرار دادن فیلدها بر روی فرم می‌باشد.

Grid: این گزینه، از کنترل DataGrid استفاده می‌کند که ورود سریع و راحت اطلاعات ویژگی مهم آن است.

Master/Detail: نوع پیشرفته‌ی نمایش اطلاعات است که از چندین کنترل کاربردی برای نمایش اطلاعات استفاده می‌کند.

MS HFelxGrid: این گزینه، انواع نمایش اطلاعات را در اختیار شما قرار می‌دهد تا بتوانید بر حسب سلیقه و نیاز یکی از آنها را نتخاب کنید.

MS Chart: این گزینه هم اطلاعات را در یک Chart یا نمودار نمایش می‌دهد.

Petros
04-04-2007, 10:34 PM
برنامه‌نویسی بانک اطلاعاتی با کنترل‌های ADO
مقدمه:
همانطور که می‌دانید از کنترل Data می‌توان برای پیوند خودکار با یک بانک اطلاعاتی استفاده کرد. علاوه بر مقید سازی داده‌ها با کنترل Data، می‌توان یک فرم ورود داده‌های ساده را به سرعت ایجاد کرد. کنترل Data روش خوبی برای مرور رکوردها و ویرایش یک رکورد در لحظه است اما این کنترل بیشتر در برنامه‌های کوچک استفاده می‌شود و توانایی چندانی برای پروژه‌های بزرگتر ندارد. اما اگر بخواهید برنامه‌ای پیشرفته بسازید نیاز دارید تا از ابزارهای پیشرفته استفاده کنید. یکی از این ابزارها، کنترل ADO می‌باشد که در قسمت زیر با آن آشنا می شویم.

تاریخچه‌‌‌:
برای آسانتر شدن کار برنامه‌نویسان و یکسان کردن روشهای ذخیره و بازیابی، استاندارد ODBC یا Open Database Connectivity پایه‌گذاری شد. ODBC توابع و روشهای پیچیده‌ای را برای اتصال به پایگاه داده و استفاده از آن را در اختیار برنامه‌نویسان قرار می‌داد.


http://www.myimagehub.com/files/3181/My%20Documents/fig1-odbc.gif

بنابراین شرکت مایکروسافت مدل برنامه‌نویسی DAO یا Data Access Object را برای راحتی کار برنامه‌نویسان و کاربران ارائه داد. DAO بر پایه‌ی موتور Jet بود و با استفاده از اشیا داده‌ای که ارائه کرده بود اتصال به بانک و کار با آن را آسانتر کرده بود.


http://www.myimagehub.com/files/3181/My%20Documents/fig2-dao.gif


پس از آن شرکت مایکروسافت مدل OLE DB یا Object Linking and Embedding Database را ارائه کرد که از ODBC پیشرفته‌تر بود و امکان اتصال به منابعی مانند Email و منابع غیر SQL را نیز داشت (پشتیبانی از امکانات اینترنتی). کار کردن با توابع OLE DB بسیار سخت و پیچیده بود.


http://www.myimagehub.com/files/3181/My%20Documents/fig4-ole.gif

بنابراین مایکروسافت ADO را که بر مبنای OLE DB است را ارائه کرد. ADO که مخفف ActiveX Data Objects می‌باشد همه‌ی امکانات OLE DB را از طریق Objectها ارائه می‌کند (کم شدن کدنویسی).

ADO راهبرد دسترسی به داده‌ها در مایکروسافت است. ADO جایگزین DAO، RDO، ODBC و غیره شده است. همچنین ADO می‌تواند داده‌ها را از منابع دیگری غیر از بانک‌های اطلاعاتی نیز بخواند. به عنوان مثال، ADO می‌تواند داده‌ها را از Microsoft Index Server بخواند. ADO از OLE DB استفاده می‌کند و OLE DB اتصال واقعی به یک منبع داده‌ها را ارایه می‌کند.

مشابه DAO که برای اتصال به موتور Access Jet مورد استفاده قرار می‌گرفت، از ADO نیز می‌توان برای اتصال به OLE DB استفاده کرد.


http://www.myimagehub.com/files/3181/My%20Documents/fig5-ado.gif

Petros
04-25-2007, 04:36 PM
اضافه کردن و پیکربندی کنترل ADO Data


1. از منوی Project گزینه‌ی Components را انتخاب کنید و یا بر روی جعبه ابزار کلیک راست کنید و گزینه‌ی Components را انتخاب کنید(CTRL+T)


2. (Microsoft ADO Data Control 6.0 (OLEDB را از لیست انتخاب کرده و روی OK کلیک کنید. اکنون کنترل ADO Data در جعبه‌ابزار نشان داده خواهد شد.



http://www.myimagehub.com/files/3181/albums/Flash/25.jpg


3. روی کنترل ADO Data در جعبه‌ابزار دابل کلیک کنید تا آن را به فرم اضافه کنید. نام کنترل را adcCustomers قرار دهید، زیرا می‌خواهیم اطلاعات مشتری را از بانک اطلاعاتی نمونه نشان دهد.

Mahdi
04-30-2007, 10:50 PM
ميگم اي كاش ميشد اين ها رو در قالب يك Pdf ميگذاشتي. اينطوري خيلي عالي ميشد.

mehdi_taheri59
05-02-2007, 08:55 AM
اساتید محترم برای یک بانک اطلاعاتی که در اختیار دارم میخواهم نموداری رسم کنم که هر 5 ثانیه اطلاعاتی را از بانک بگیرد و به داخل نمودار ببرد . در ضمن می دانم که باید از microsoft chart استفاده کنم ولی طریقه آن را نمی دانم اگر راهنمایی و یا اینکه جزوه ای و یا لینکی در این زمینه دارید ممنون می شوم من را راهنمایی کنید .