آشنايي با اكسس

مقدمه

مديريت پايگاه داده ها (چه داده هاي متني يا تصويري يا غيره) شايد مهمترين كاربردي بوده است كه همواره از كامپيوترهاي تجاري خواسته شده است. به همين دليل در چند سال گذشته قبل از ظهور محيطهاي مبتني بر رابط گرافيكي شاهد حكومت زبان cobol بر امپراطوري كامپيوتر بوديم.

بعد از اين امر ظهور برنامه dBase و فروش حيرت آور آن خبر از همين احتياج مبرم به پايگاه داده ها مي داد.
باز در اين عرصه نيز شركت مايكروسافت بيكار ننشست و Access كه كاستيها و اشكالات برنامه هاي قبلي را برطرف نموده و كار با داده ها را به صورت فوق العاده اي راحت تر ميکند عرضه کرد.

اين برنامه كه همراه با كار در محيط كاملا گرافيكي ويندوز حتي قابليت نصب در شبكه و internet را نيز دارد بدون شك يك نياز شركتهاي تجاري, برنامه نويسان, طراحان صفحات وب و حتي براي اشخاص معمولي براي كنترل داده ها و اطلاعات خود بوده است.

ما در اين دوره آموزشي شما را با قابليت access آشنا كرده و شايد اگر اغراق نكرده باشم شما را استاد اين برنامه بي نظير خواهيم كرد شما نيز لحظه به لحظه به آشنايي با قابليتهاي اين برنامه مطمئنا مشتاق ياگيري هرچه سريع آن خواهيد شد.
قابل ذكر است كه ما در اين دوره برنامه اكسس 2000 را براي آموزش انتخاب كرده ايم كه البته نسخه هاي ديگر اين برنامه فرق چنداني با نسخه 2000 آن ندارد و شما مي توانيد با يادگيري اين نسخه با ان نيز به راحتي كار كنيد. (البته توصيه خود من به استفاده از نسخه 2000 است)

آشنايي با اكسس

اكسس كه يكي از برنامه هاي موجود در بسته نرم افزاري آفيس( Microsoft Office ) است براي ساماندهي و كنترل و مديريت پايگاه داده ايجاد شده است.
اين برنامه داراي قابليتهاي بسيار است , مانند ايجاد صفحه ورود اطلاعات به شكل دلخواه.
به عنوان مثال وقتي شما مي خواهيد اطلاعات موجود در يك چك را در كامپيوتر خود ذخيره كنيد شما با استفاده از برنامه اكسس مي توانيد صفحه ای درست همانند صفحه چك ايجاد كنيد و اطلاعات را به صورت كاملا گرافيكي در آن وارد كنيد.
شما پس از ايجاد پايگاه داده هايتان حتي مي توانيد از آنها گزارش گرفته و يا در بين اطلاعات خود جستجو كرده البته تمامي اين امكانات را شما با دستان قدرتمند خود ايجاد خواهيدكرد.
از موارد استفاده برنامه اكسس به طور شهودي مي توان به استفاده آن در قسمت حسابداري يك شركت و يا نگهداري اطلاعات اشخاص عضو در سايتتان و حتي نگهداري اطلاعات كارمندان (حتي عكس آنها) و موارد بسيار متنوع ديگر اشاره کرد.
شما پس از ايجاد اين پايگاه داده حتي مي توانيد آن را در شبكه در اختيار ديگران قرار داده يا بر روي آن كليد رمز گذاشته يا حتي در سطح كاربران مختلف مقدار دسترسي هر كاربر را تعيين كنيد.
روش ادامه درس ما در جلسات بعدي به صورت زير خواهد بود:

ابتدا آشنايي با محيط اكسس و تسلط كامل بر آن
كار با help برنامه(به صورت مختصر)
آشنايي با پايگاه داده هاي نمونه
بررسي و كار با اجزاي اصلي
طراحي يك پايگاه داده جديد
كار با جدولها
كار با داده ها
كار با بازجست ها ( Query )
كار با فرمهاي ورود اطلاعات
كار با گزارشها
خودكارسازي با ماكروها
برنامه نويسي با مدولها
كاربرد پيشرفته اجزاي اكسس
حفظ امنيت در پايگاه داده
كار با برنامه هاي كمكي اكسس

سوالات خود را به طور كامل بيان كنيد تا امكان پاسخگويي به آنها باشد.

برای مطالعه ی این دوره ی آموزشی نیاز است کاربران محترم آشنایی مقدماتی با محیط Windows داشته باشند .
جهت نصب و اجرای نرم افزارهای Office که اکسس نیز شامل آن می شود ، نیاز به سیستمی با مشخصات ذیل می باشد :
– حداقل سیستم مورد نیاز پنتیوم 233
– 16 مگابایت Ram
– حدود 600 مگا بایت فضای آزاد

شروع کار با اکسس

در درس قبل با قابليتها و كاربردهاي اكسس آشنا شديد و ضرورت استفاده از اين برنامه در جهات مختلف زندگي آشنا شديد و با توجه به كاركرد راحت اكسس و شي گرا بودن آن اكسس نسبت به برنامه هاي ديگر مديريت پايگاه داده ها امتيازات بيشتري دارد.

مفهوم شي گرائي:

وقتي كه در مورد يك برنامه از مفهوم شي گرايي صحبت مي كنيم يعني در هنگام كار با آن همواره با شي هاي مختلف سروكار داريد و حتما لازم نيست كه زبان برنامه نويسي خاصي بلد باشيد يعني در واقع شي گرايي كنترل و مديريت اشيا و نحوه قرارگيري آنها به جاي استفاده از دستورات است. به عنوان مثال وقتي ما مي خواهيم در محيطي مانند faxpro يك دكمه ايجاد كنيم كه هنگام فشاردادن آن اطلاعات كاربري مشتري در جدول ثبت شود بايد دستورات بسيار پيچيده و ويژه اي بنويسيم ولي در محيط اكسس كافي است از قسمت ابزار با استفاده از شي دكمه (وسيله اي جهت ساخت دكمه هاي مختلف) اين دكمه را به راحتي ايجاد مي كنيم .

آغاز كار با اكسس:

شما بعد از نصب بسته نرم افزاري آفيس مي توانيد با رفتن به قسمت start سپس قسمت programs و انتخاب microsoft access وارد محيط اكسس شويد. البته بسته به نحوه نصب شدن برنامه ممكن است برنامه اكسس در قسمت ذكر شده نباشد و به صورت معمول اين برنامه در اين قسمت قرار مي گيرد.

با وارد شدن به محيط اكسس با پنجره اي مانند شكل 21 ظاهر مي شود كه به شما امكان مي دهد تا آنچه را كه مي خواهيد انجام دهيد انتخاب كنيد.گزينه هاي موجود در اين قسمت به ترتيب زير است:

1- Blank access database : با استفاده از اين گزينه شما مي توانيد يك پايگاه داده جديد ايجاد كنيد. 2

– access database wizards : با استفاده از اين گزينه شما مي توانيد با استفاده از جادوگر اكسس كه كار شما را بسيار آسانتر مي كند يك پايگاه داده بسازيد (بعدا به طور مفصل توضيح خواهم داد)

3- open an exiting file: با اين گزينه شما مي توانيد پايگاه داده اي را كه قبل ايجاد كرده ايد براي ايجاد تغييرات دوباره باز كنيد.

4- از كادر زير قسمت 3 شما مي توانيد پايگاه داده اي را كه به تازگي برروي آن كار كرده ايد باز كنيد. بعد از انتخاب گزينه مورد نظر شما بايد با زدن Ok به مرحله بعدي برويد. اگر هر خواستيد با زدن دكمه Cancel به محيط اكسس وارد شويد. (فعلا براي آشنايي با محيط اكسس Cancel را بزيند)
ضمن قابل ذكر است كه براي ساختن پايگاه داده جديد آنرا بايد در همان ابتدا ذخيره كنيد و اينگونه نيست كه بعد از پايان كار آنرا ذخيره كنيد.

آشنايي با محيط كار:

محيط كار اكسس همانطور كه در شكل 22 مي بينيد بسيار شبيه محيطهاي ديگر ويندوز است و كار با آن بسيار آسان است. حال به صورت كوتاه به معرفي قسمتهاي مختلف محيط كار مي پردازيم:

– ميله عنوان (Title bar): عنوان پايگاه داده در حال كار در اين قسمت ثبت مي شود و همچنين كنترل پنجره اكسس از همين قسمت صورت مي گيرد(چون فرض ما بر اين است كه شما بر محيط ويندوز و كنترل پنجره ها مسلط هستيد نياز به توضيح بيشتر نيست)

2- ميله منو (Menu bar): در اين ميله شما به وسيله منوهاي مختلف اقدام به ايجاد. كنترل و ويرايش پايگاه داده مي كنيد. در زير توضيح كوتاهي در مورد هر منو آمده است.

——————

الف) File (فايل): فرامين لازم براي بازكردن و بستن پايگاه داده. دريافت داده از ساير پايگاه داده ها. ذخيره داده ها. تغيير خصوصيات پايگاه داده. چاپ و غيره ب) Edit (ويرايش): فرامين لازم براي ويرايش و وارد كردن داده ها
پ) View (مشاهده): فرامين لازم براي انتخاب اجزا مختلف پايگاه داده. تغيير خصوصيات پايگاه داده فعال و غيره را در اختيار شما مي گذارد.
ت) Insert (درج): فرامين لازم براي درج اقلام مختلف پايگاه داده
ج) Tools (ابزارها): فرامين لازم براي اجراي برنامه هاي كمكي مختلف. تحليل پايگاه داده. امنيت و گزينه هاي متفاوت پيشرفته پايگاه داده
چ) Windows (پنجره ها): فرامين لازم براي تغيير آرايش پنجره ها در محوطه كاري پايگاه داده
ح) Help (كمك): دسترسي به كمك مستقيم

——————-

3- ميله ابزار (Tool bar): در اين قسمت تعدادي از فرامين ضروري و پراستفاده در برنامه قرار دارد. 4- محوطه كاري پايگاه داده: در اين محوطه بزرگ شما بر روي پايگاه داده كار مي كنيد و داده ها را به آن مي افزاييد و آنها را ويرايش مي كنيد.

5- دستيار: اين دستيار براي آن است كه شما سوالات احتمالي ممكن خود را به طور مستقيم از او پرسيده و او با جستجو در خود برنامه و همچنين اينترنت تا حد ممكن جواب شما را پيدا كند(البته به صورت انگليسي)

6- ميله وضعيت: در ميله وضعيت اطلاعاتي راجع به كاري كه انجام مي دهيد. نمايش داده مي شود. و همچنين خطاها را مشاهده خواهيد كرد.

توجه به اين نكته ضروري است كه در بعضي مواقع كه امكان استفاده از بعضي از فرامين موجود نمي باشد آنها به صورت غير فعال در مي آيند.
در اينجا بايد تين نكته هم ذكر شود كه شما در هنگام انتخاب فرامين از منوها هم مي توانيد با استفاده از ماوس آنها را انتخاب كنيد و هم از كليدهاي ميانبر استفاده كنيد. روش كار كليدهاي ميانبر با استفاده از كليدهاي Ctrl و Alt و حرفي كه در هر فرمان زير آن خط كشيده شده است شما مي توانيد به صورت خيلي سريع به فشار همزمان آنها به فرمان دسترسي پيدا كنيد. اين قابليت هنگامي مفيد است كه شما در محيط اكسس بسيار ماهر شده ايد كه ديگر نياز به استفاده از ماوس نداريد.

خروج از محيط اكسس:

شما مي توانيد با انتخاب فرمان Exit از منو File از محيط اكسس خارج شويد.

پایگاه داده های نمونه

در درس قبل كار با اكسس را آغاز كرديم و در مورد محيط برنامه صحبت كرديم. در اين درس قصد داريم ابتدا مختصرا در مورد Help در برنامه صحبت كنيم و سپس به صورت مفصل در مورد پايگاههاي داده نمونه كه در خود اكسس موجود است صحبت كنيم.

دسترسي به راهنما:

راهنماي برنامه براي كساني كه آشنايي كامل به زبان انگليسي دارند مي تواند مانند يك مرجع كامل و معتبر باشد مثلا هرگاه در مورد عملكرد پايگاه داده. طراحي جدول. يا تعريف بازجست مشكل داشتيد مي توانيد از راهنماي برنامه كه به زبان انگليسي ساده و روان نوشته شده استفاده كنيد و مسلما در مورد سوال شما چه در خود برنامه يا تحت وب جوابي پيدا خواهد شد. در اكسس راههاي مختلفي براي دسترسي به راهنما وجود دارد كه متداولترين آنها استفاده از منو Help است.كه فرمامين موجود در اين منو را شرح مي دهيم:

1- Microsoft access Help : اين فرمان دستيار را فعال مي كند در صورتي كه دستيار فعال باشد وارد سيستم راهنمايي مي شود. شما مي توانيد با انتخاب اين گزينه سوالات خود را از دستيار بپرسيد و او نزديكترين جواب را به سوال شما خواهد داد اين امكان بسيار مي تواند براي شما مفيد باشد و دستيار مانند يك شخص ماهر به تمامي سوالات شما به طريقي پاسخ خواهد داد.

2- Hide The Office Assistant: شما مي توانيد با استفاده از اين فرمان دستيار را مخفي كنيد و اين در مواقعي به كمك شما مي آيد كه دستيار قدرت ديد شما در محيط را كاهش دهد.

3- What`s This: با استفاده از اين گزينه ماوس شما به يك علامت سوال تبديل مي شود و هر كجايي از محيط كه كليك كنيد در مورد آن شما را راهنمايي مي كند.

4- Office On The Web: به كمك اين گزينه مي توانيد به سايت ماكروسافت رجوع كنيد و آخرين امكانات و اصلاحات در برنامه و همچنين متداولترين سوالها را بپرسيد.

5- Detect and Repair: با استفاده از اين گزينه اگر در برنامه اكسس شما ايرادي باشد به صورت اتوماتيك رفع مي شود.

6- About Microsoft Access: در مورد نسخه فعلي اكسس اطلاعاتي در اختيار شما مي گذارد.

يكي ديگر از راهنمايي ها كه در اكسس موجود است راهنماي شناور است به اين ترتيب كه با نگه داشتن نشانه ماوس بر روي يك فرمان به مدت چند ثانيه اسم و شايد راهنمايي كوچكي در مورد آن فرمان ظاهر شود. با توجه به اينكه بيشتر خوانندگان اين درس با محيط ويندوز و راهنماي آن آشنا هستند و راهنماي اكسس نيز مانند آن است من نياز بيشتري به توضيح نمي بينم.

سيري در پايگاه داده هاي نمونه:

در اكسس چهار پايگاه داده نمونه وجود دارد كه مي توانيد آنها را باز كرده. بررسي نموده و يا مورد استفاده قرار دهيد.(البته اين نكته قابل ذكر است كه شما حتما بايد در موقع نصب اين پايگاهها را انتخاب كرده باشيد تا نصب شوند وگرنه با قراردادن CD در درايو و نصب دوباره آنها كار را دنبال كنيد) اين پايگاهها براي كساني كه تازه شروع به كار با اكسس مي كنند بسيار مفيد است و چيزهاي مفيدي را در برمي گيرد.

بعد از نصب پايگاه داده نمونه شما مي توانيد با استفاده از منو File و گزينه Open به پوشه Samples در جايي كه اكسس را نصب كرده ايد رفته و پايگاه داده را بازكنيد(امكان دارد اين پايگاه داده به صورت پيش فرض در پايين ترين قسمت منو File موجود باشد) ما در اين درس به توضيح پايگاه داده Northwind خواهيم پرداخت.

قبل از شروع كار بايد اين نكته را ذكر كنم كه تمامي فايلها و جدولهاي اكسس در فايلي با پسوند MDB ذخيره مي شود.
پايگاه داده Northwind امكان تمرين با يك نرم افزار پايگاه داده كامل را به شما مي دهد. اين پايگاه داده يك نرم افزار كنترل موجودي براي شركت فرضي Northwind Traders است. بعد از باز كردن اين پايگاه داده كه ممكن است مدتي طول بكشد. صفحه ابتدايي ظاهر مي شود كه شما مي توانيد با كليك روي Ok اين پنجره را رد كنيد. بعد از اين كار پنجره Database اين پايگاه نشان داده خواهد شد. اين پنجره جايي است كه اكثر كارهاي اكسس در آن انجام مي شود. اين پنجره هفت شاخص دارد كه شما را به شش جز اصلي Access مي برد. اين پنجره در شكل 31 نشان داده شده است.

براي حركت در صفحات پنجره Database با ماوس برروي شاخصهاي كناري پنجره كليك كنيد. كلماتي كه در هر صفحه مشاهده مي كنيد. معرف جداول. پرسانه ها. فرمها. گزارشها. ماكروها و برنامه هاي خاص اين پايگاه است. مثلا نام يكي از جداول پايگاه داده Shippers است. اگر برروي هر يك از جداول دوبار كليك كنيد جدول مورد نظر باز مي شود.

ديگر موارد را نيز مي توانيد با دوبار كليك باز كنيد به جز ماكروها كه اين اشيا به دليل اينكه شما تازه كار هستيد از دسترسي شما حفاظت مي شوند و من پيشنهاد مي كنم زياد با آنها ورنرويد و اين كار را به زماني كه به طور كامل با عملكرد آنها آشنا شديد موكول كنيد.

هنوز انتظار درك پايگاه داده هاي نمونه را به طور كامل نداشته باشيد مثلا با كليك زدن مكرر به روي جدولOrders. Access جدول مورد نظر را نشان مي دهد كاري كه با اين جدول مي توانيد انجام دهيد اين است كه به سفارشات نگاه كنيد. جدول مانند يك صفحه گسترده الكترونيكي كه سطر و ستون دارد كار مي كند. با جدول كارهاي متنوعي مي توانيد انجام دهيد اما در اين مقطع فقط سعي كنيد با اكسس. منوهاي آن و صفحه رابط آن آشنا شويد. در ادامه دروس جزئيات لازم براي تسلط شما بر هر يك از اين موارد ذكر خواهد شد. شما در اين مرحله به تمامي فرمها و جدول يك نگاهي بياندازيد و سعي كنيد كه با انها بيشتر از قبل آشنا شويد.

در اينجا توضيحات من در مورد اين پايگاه داده به پايان ميرسه شما تا درس بعدي تمامي پايگاههاي نمونه را يك مرور كلي كنيد و با آنها آشنا شويد و اين نكته را از ياد نبريد كه عجله نداشته باشيد با تمامي قسمتها به مرور آشنا خواهيد شد تا اينجا كه شما مي توانيد در بين پايگاهها به راحتي گردش كنيد كار بسيار موثري انجام داده ايد.

از جلسات بعد بحث پيشرفته تري را در مورد اكسس شروع خواهيم كرد يعني تا اين قسمت دروس چيز خاصي را بيان نكرده ايم و فقط با محيط آشنايي كامل پيدا كرده ايد و كار اصلي ما از درس بعد شروع خواهد شد.(ضمنا كار با پايگاه داده هاي نمونه ديگر را فراموش نكنيد)

آموزش اكسس ( بخش دوم )

بررسی اجزای اصلی

در درسهاي گذشته به طور كامل با محيط اكسس آشنا شديم و اميدوارم كه شما تمامي پايگاهاي نمونه را بررسي كرده باشيد و كاملا مفهوم كار با اكسس براي شما روشن شده باشد. درس اين جلسه يكي از مهمترين دروس در رابطه با اكسس است و شما حتما سعي كنيد به طور كامل اين درس را بفميد و حتما در مورد اين درس اگه سوالي بود بپرسيد چون واقعا فهميدن اين قسمت از اكسس كار را بسيار ساده خواهد كرد.
در اين درس ما با بخشهاي مختلف پنجره Database آشنا مي شويم و چگونگي استفاده از هر يك را توضيح خواهيم داد. مي توان گفت پنجره Database سكوي پرتاب شما به سوي Access است, تمامي فعاليتهاي كه در اكسس انجام مي شود از اين محل شروع مي شود, آشنايي با اين پنجره مي توان گفت آشنايي با خود اكسس است. بعد از يادگيري اين بخش ار اكسس شما براحتي خواهيد توانست ديگر خصوصيات پايگاه داده را ياد بگيريد. من به شما توصيه مي كنم يكي از پايگاههاي داده نمونه را باز كنيد تا هنگام درس اجزاي اصلي پنجره Database را مشاهده كنيد.

معني دقيق پايگاه داده ها

به احتمال بسيار قوي شما با مفهوم پايگاه داده آشنا هستيد ولي ما براي ادامه كار اشاره كوچكي به آن مي كنيم. شايد اساسي ترين تعريف پايگاه داده اين باشد:

پايگاه داده: مجموعه اي از داده هاي مرتبط به هم است.

در واقع اين تعريف شامل هر نوع فايل داده اي كه با آن كار مي كنيد مي شود. مثلا نامه, گزارش و كتاب مجموعه اي از داده ها به صورت كلمات مرتبط به هم است. يا فايلهاي گرافيكي داده هاي مرتبطي است متشكل از نقاط رنگي بسياري (پيكسل) كه تصوير را تشكيل مي دهند. با توجه به اينكه ممكن است تعريف بالا كمي پيچيده و عمومي تر باشد در زير اشاره به تعريفي خاص در مورد پايگاه داده در اكسس مي كنيم:

پايگاه داده اكسس: مجموعه اي است از داده هاي مرتبط و ابزارهايي كه با استفاده از آنها با داده ها كار مي كند.
بنابراين پايگاه داده در اكسس از فايلهاي داده مرتبط به يكديگري تشكيل شده است كه به همراه ابزارهايي كه شي ناميده مي شوند به شما امكان دسترسي, گردآوري و گزارش گيري از داده ها را مي دهد. هر پايگاه داده ارتباطي برخلاف انواع ديگر فايلها مجموعه هايي از داده ها را شامل مي شود كه به آنها جدول گفته مي شود. در خارج پايگاه داده, هر جدول, ممكن است بعنوان يك فايل مجزا در نظر گرفته شود. مثلا يك پايگاه داده تجاري ممكن است شامل فايل مرتب شده اي از سفارشات خريداران, فايل موجودي, فايل فهرست نشاني خريداران, فايل اطلاعات كارمندان و فايل دستمزد باشد كه تك تك اين فايلها در اكسس به صورت جدول هستند.
بدون ساخت پايگاه داده ها, هريك از اين فايلها را بايد جداگانه مديريت كرد, اما پايگاه داده ها قادر است تا در صورت وجود مقادير مشترك. اين جدولها (فايلها) را به هم مرتبط كند, مثالي در اين مورد كد مشتركي است كه در جدول مشتريان و جدول سفارشات مشتريان وجود دارد.

توجه:

اكسس پايگاه داده ارتباطي ناميده مي شود زيرا مي تواند جداول داده ها را براساس مقادير مشترك به يكديگر مرتبط كند.
جدول خريداران (فايل داده هاي خريداران)ممكن است شامل كد, نام و نشاني هر خريدار باشد. جدول سفارشها, ممكن است شامل اطلاعات سفارش هر خريدار در طي يكسال گذشته باشد. در اينجا بايد توجه كرد كه جدول سفارشها نبايد نام و نشاني خريداران را داشته باشد فقط كد آنها كافي است. اگر تمامي اطلاعات خريدار در جدول سفارش نيز موجود باشد اينكار سبب هدر رفتن وقت و وجود اطلاعات مشابه و تكراري بسيار خواهد شد و همچنين در موقعي كه مثلا نشاني خريدار عوض مي شود بايد تمامي سفارشها را چك كرد و همه را عوض كرد ولي در موقعي كه فقط كد در جدول سفارشها مي باشد نيازي به تغيير در جدول سفارشها نيست و فقط بايد جدول خريدار عوض شود.

در شكل 41 يعني شكل زير اين مطلب به طور كامل نشان داده شده است يعني ارتباط بين جدول خريداران و جدول سفارشات مشخص است. ممكن است جدول متعدد ديگري نيز وجود داشته باشد. در هر پايگاه داده, تقريبا هر جدولي از طريق داده ها و اطلاعات مشترك به يك يا چند جدول ديگر مرتبط مي شود در مثال زير اين داده مشترك در دو جدول كد خريدار است.

هر پايگاه داده, علاوه بر جداول, شي هاي ديگري نيز دارد. هرچند كه شايد جداول يك پايگاه داده مهمترين شي آن باشد (جداول, داده هاي پايگاه داده را نگهداري مي كنند). اشياي ديگر در پنجره Database ما را در مديريت, پهنگام سازي و گزارش گيري از جداول همياري مي كنند. اكثر پايگاههاي داده اكسس از بجز جدولها كه در تمام پايگاهها موجود است از بيشتر عناصر پنجره Database نيز استفاده مي كنند.

توجه:

هر از چند گاهي به پنجره پايگاه داده, ظرف پايگاه داده نيز گفته مي شود زيرا تمامي اشياي پايگاه داده را شامل مي شود.
حال هر يك از اجزا در پنجره Database را به طور مختصر توضيح مي دهيم:(اين اجزا در زير ستون Objects قرار دارند و به اجزاي اصلي مشهورند)

———————

1-جدولها(Tables):
مجموعه اي از داده ها را كه به يك موضوع مشخص مربوط هستند در خود نگهداري مي كنند. مثلا اگر يك سيستم حسابداري خانگي ايجاد كنيد بايد جدولي براي درآمدها, جدولي براي مخارج, جدولي براي هزينه هاي مشخص و غيره ايجاد كنيد.

2-بازجست ها(Queries):
زيرمجموعه اي از داده ها را ايجاد مي كند, كه براي گزارشگيري و جستجو قابل استفاده مي باشند. مثلا اگر شما بخواهيد كليه مخارجي را كه در 10 روز آتي پرداخت شده اند را بدست آوريد بايد از بازجست استفاده كنيد.

3-فرمها(Forms):
صفحه اي گرافيكي براي ورود داده ها يا نمايش آنها را نشان مي دهد كه از فرمهاي كاغذي تقليد شده است. فرم, روش ساده اي است براي مشاهده تمام يا بخشي از داده ها. مثلا شما مي توانيد يك فرم مانند صفحه چك درست كنيد و هر وقت چكي پرداخت كرديد در وارد كردن صورتحساب يك چك معمولي را در صفحه پر كنيد.

4-گزارشها(Reports):
فهرست شكل بندي شده اي از داده ها را چاپ مي كند. يك گزارش ممكن از مواردي از يكي از جداول, فهرستي از اقلام انتخاب شده, تمامي اقلام يك جدول يا فهرستي از مقادير گوناگون از جداول مختلف را چاپ كند. مثلا شما ميتوانيد در حسابداري خانه گزارشي از كليه بدهي هايتان بگيريد.

5-صفحه ها(Pages):
عملي مشابه گزارشگيري را انجام مي دهد با اين تفاوت كه در اين حالت گزارش به صورت يك صفحه اينترنتي به بيرون داده مي شود و موارد استفاده آن در طراحي صفحات اينترنتي است.

6-ماكروها(Macros):
بسياري از كارهاي متداول اكسس را خودكار مي كند. مانند مرتب كردن داده ها, ايجاد گزارشها و ايجاد سرجمع ها. مثلا سيستم پايگاه داده حسابداري خانه مي تواند ماكرويي براي محاسبه گردش پولي در يك ماه داشته باشد.

7-مدولهاي برنامه(Macros):
قابليت خودكار كردن اكسس و ايجاد سيستم هاي آماده براي كار را فراهم مي كند, بطوري كه براي افرادي كه چيزي از اكسس نميدانند قابل استفاده باشد. زماني كه برنامه اي براي اكسس مي نويسيد, در واقع آن را براي انجام كارهاي پيچيده اي برنامه ريزي مي كنيدكه از طريق منوها و ماكروها بخودي خود امكان انجام آن نيست. در واقع ماكروهاي اكسس شكلي از مدولهاي ترجمه شده هستند, بدين معني كه ماكروها شما را در راستاي تمامي اطلاعات لازم براي تكميل يك فرمان Visual Basic for Applications هدايت مي كنند. برخي افراد پس از سالها استفاده از اكسس هيچگاه به مدول نويسي نيازي نداشته اند. اگر سابقه برنامه نويسي نداشته باشيد, نوشتن برنامه دشوار است. ولي به نظر من شما فقط در واقع خيلي پيچيده به مدولها نياز خواهيد داشت.

———————

توجه به اين نكته ضروري است كه پايگاه داده ممكن است پيوسته در حال تغيير باشد. مثلا شما با توجه به نيازهايي كه پيش مي آيد اقدام به ساخت جدولهاي جديد و ايجاد گزارشهاي ديگري كنيد. در شكل 42 در زير شما شش شي پايگاه داده را كه تركيب آنها پايگاه داده مستقلي را شكل مي دهد, مشاهده مي كنيد. شايد يكي از مشكلترين چيزهائي كه در هنگام كار با اكسس بايد راجع به آن تصميم گيري كنيد اين است كه چه وقت مجموعه اي از اطلاعات را در پايگاه داده جديد يا پايگاه داده موجود قرار دهيم.

پايگاه داده مي تواند هدفي گسترده داشته باشد, هر پايگاه داده معمولا يك برنامه كاربردي است. در مثالهاي زير به كاربردهاي پايگاه داده هاي خاص اشاره اي مي شود:
1-اگر بخواهيد حسابهاي شما با يكديگر بده-بستان يا تعامل داشته باشند, حساب دفتر كل به يك پايگاه داده مجزا احتياج دارد. هنگامي كه از حسابي پرداختي انجام مي دهيد, مي خواهيد تا هم در جدول پرداختها و هم در جدول حسابها منعكس شود.
2-اگر بخواهيم يك سيستم مستقل پرداخت دستمزد داشته باشيد, بطوري كه بخش پرداخت دستمزد منحصرا براي پرداخت چك و نگهداري سوابق پرداخت مورد استفاده قرار گيرد, سيستم دستمزد نيز يك پايگاه داده مجزا نياز دارد.
3-نرم افزار بودجه بندي, براي بودجه بندي هريك از حسابهاي خانه, از قبيل پرداختهاي قبض, حساب اتومبيل و گزارش گيري از تمامي حسابها, به يك پايگاه داده مجزا نيازمند است.
4-يك سيستم كنترل موجودي به پايگاه داده اي نيازمند است تا بتواند ثبتهاي موجودي مربوط به شركت را پيگري, بهنگام و نگهداري كند.
بايد توجه داشت كه فهرست بالا تنها چند مورد مثال خاص مي باشد كه بسيار مختصر است و فقط براي آشنايي ذكر شده اند. به طور كلي بايد ذكر كرد هر يك از جداولي كه به نوعي با هم در ارتباط هستند بايد در يك پايگاه داده قرار داده شوند.

استفاده از اجزا’ پنجره Database:

هنگامي كه يك پايگاه داده جديد ايجاد مي كنيد, اكسس يك پنجره Database خالي را نمايش مي دهد كه براي هر يك از هفت شي پايگاه داده در آن شاخصي وجود دارد.اگر قصد كار كردن با هر يك از اين هفت شاخص را داريد بايد بر روي آن كليك كنيد مثلا اگر قصد ايجاد ماكرو را داريد بايد بر روي گزينه Macros در پنجره Database كليك كنيد. بسته به انتخابي كه شما از شاخصها مي كنيد در بالاي پنجره Database كليدهاي فرمان مختلفي نمايش داده مي شود كه در زير به طور مختصر به معرفي آنها مي پردازيم:

———————

1-باز كردن(Open): براي باز كردن شي موجود مثلا باز كردن يك جدول يا يك فرم

2-طراحي(Design):براي ايجاد تغيير در شي كه با انتخاب اين فرمان حالت نمايشي Design پديدار مي شود مثلا شما اگر بعد از ايجاد يك فرم قصد ايجاد تغيير در آن را داشتيد بايد بر روي Design كليك كنيد.

3-جديد(New):براي ايجاد شي جديد مثلا ايجاد جدولي جديد

4-بازنگري(Preview):
اين فرمان فقط در قسمت گزارش وجود دارد و براي مشاهده گزارش قبل از چاپ مي باشد.

5-اجرا(Run):يك فرمان در شاخصهاي ماكرو و مدول وجود دارد و براي اجراي يك ماكرو يا مدول(برنامه) به كار مي رود.

6-حذف(Delete): در تمامي شاخصها موجود است و براي حذف شي به كار مي رود. اين راحترين قسمت است.

7-مرتب سازي: چهار گزينه بعدي كه در همه شاخصها موجود است براي مرتب سازي اشيا به كار مي رود و درست مانند مرتب سازي آيكونها در ويندوز عمل مي كند.

———————

هنگامي كه شي جديدي ايجاد مي كنيد بايد آنرا نامگذاري كنيد. مي توانيد نامهايي با حداكثر درازي 64 كاراكتر(حرف و عدد), كه در آن فاصله نيز مي توان استفاده كرد اختيار كنيد.با ايجاد و نامگذاري يك شي آن شي در پنجره Database نمايش داده خواهد شد.
درس اين جلسه تا بدينجا بود در درس بعدي در مورد هر يك از شاخصها به طور مفصلتر بحث خواهيم كرد. پیشنهاد می کنیم قبل از آنکه به درس بعدی بروید اجزايي كه ياد گرفتيد آشنايي كامل پيدا كنيد.

نگاهی کلی به اجزای اصلی

در درس پيش با مفهوم پايگاه داده آشنا شديم و تا حدودي به جزئيات پنجره Database پرداختيم و آشنايي لازم را با دكمه هاي اين پنجره پيدا كرديم در اين قسمت درس قصد داريم تا پنجره Database را بيشتر از قبل بررسي و تحليل كنيم. اين درس در واقع ادامه درس قبلي مي باشد پس اين درس نيز از نظر اهميت داراي درجه بالايي است.

نگاهي به جداول:

اگر پايگاه داده, هيچ شي ديگري نداشته باشد, همواره بايد حداقل يك جدول داشته باشد. داده هاي پايگاه داده را جدول نگهداري مي كند. همانطوري كه در درس قبل اشاره شد,جداول اغلب با مقادير داده مشترك به يكديگر مرتبط مي شوند, به ترتيبي كه دو يا چند جدول نبايد داده هاي زيادي يا تكراري داشته باشند. براي نمايش اسامي جداول موجود در پايگاه داده بر روي شاخص Tables در پنجره Database كليك كنيد. براي باز كردن و مشاهده محتويات هر جدول مي توانيد بر روي نام آن جدول دوبار كليك كنيد. كه در اين حالت Access جدول را در حالت نمايش Datasheet يا كاربرگ باز مي كند,كه در اين حالت شما مي توانيد داده هاي موجود در جدول را مشاهده كنيد.
معمولا در حالت نمايشي كاربرگ تمامي داده هاي يك سطر جدول در صفحه نمايش جا نمي گيرد. براي مشاهده بقيه داده هاي هر سطر مي توانيد از ميله هاي گردش افقي پنجره در زير آن استفاده كنيد و به چپ و راست برويد.
جدول براي مشاهده و كار با آن, به حالات ديگري هم براي نمايش نياز دارد. در حاليكه حالت نمايشي Datasheet يا كاربرگ امكان مشاهده, افزودن, حذف و اصلاح داده هاي جدول را مي دهد, حالت نمايشي طراحي كه در اكسس با عنوان Design view شناخته مي شود امكان تغيير شكل جدول و طراحي خود جدول را فراهم مي كند. البته وقتي كه بيشتر راجع به ساختار جدول صحبت كرديم شما تصوير بهتري از حالت طراحي خواهيد داشت. به طور كلي حالت Datasheet براي اضافه كردن و مشاهده داده ها و حالت طراحي براي طراحي و تغيير خود جدول نه داده ها به كار مي رود.
براي ديدن جدول در حالت نمايشي طراحي يا Design مي توانيد جدول خود را انتخاب كرده و سپس بر روي دكمه design در بالاي پنجره Database كه قبلا معرفي شد كليك كنيد. بعد از باز كردن پنجره در حالت Design ملاحظه خواهيد كرد كه در اين حالت هيچ خبري از داده هاي موجود در جدول نيست و فقط شكل جدول در اين حالت در دسترس است.
اگر جدول را در حالت Datasheet باز كرده ايد و قصد رفتن به حالت design را داريد اين كار را مي توانيد با استفاده از منو view و انتخاب دو حالت Datasheet view و Design view انجام دهيد و به راحتي بين دو حالت جدول حركت كنيد.
جدول ساختاري مشخص و اكيد دارد. داده هاي جدول در داخل جدول درون سطرها و ستونها جدول قرارگرفته و سازماندهي مي شوند كه به اين سطرها و ستونها به ترتيب ركورد و فيلد گفته مي شود(حتما به خاطر بسپاريد سطر در معناي ركورد و ستون در معناي فيلد به كار مي رود.)
هر ركورد جدول بيانگر يك داده مستقل است. مثلا: در جدول اقلام موجودي در انبار هر ركورد جدول نشان دهنده يكي از انواع قطعات موجود در انبار است.هر فيلد ركورد, نشانه دهنده جزيي از داده هاي مربوط به هر قطعه, مانند شماره قطعه, تعداد و شرح است. اگر قطعه اي 32 عدد موجود باشد, ركورد قطعه فقط يك بار در جدول تكرار مي شود اما ميزان موجودي در فيلد تعداد منعكس مي شود. با توجه كردن به شكل 51 زير بيشتر مفهوم اين بيان را خواهيد فهميد.

اين كه تمامي ركوردها, فيلدهاي مشابهي دارند, به اين معني نيست كه تمامي فيلدهاي هر ركورد بايد پر باشد. مثلا يك جدول موجودي, ممكن است فيلدي به نام قيمت خرده فروشي داشته باشد, ولي فقط تعداد اندكي از ركوردها, مقداري را در اين فيلد نگه داشته باشند. بنابراين برخي از ركوردها قيمت خرده فروشي ندارند عليرغم اينكه پاره اي از ركوردهاي جدول, قيمت خرده فروشي دارند.
توجه به اين نكته ضروري است كه فيلد مشترك مانند شماره قطعه يا كد مشتري, مبناي ارتباط بين دو جدول مرتبط را تشكيل مي دهد و امكان خالي رد كردن اين فيلدها داده نمي شود.
وجود فيلد مشتركي كه دو جدول را به يكديگر مرتبط مي كند, بدين معني است كه امكان رهائي كامل از داده هاي تكراري وجود ندارد. براي دو جدول مرتبط, داده ها بايد تكرار شوند زيرا هر دو جدول بايد فيلدهاي مشتركي براي ارتباط داشته باشند. شايد اگر براي تمامي داده ها يك جدول بزرگ ايجاد كنيد, مجبور به داشتن فيلدهاي تكراري نباشيد, اما با اينكار زمان زيادي را در ورود داده ها هدر خواهيد داد, چون در هر ركورد بايد تمامي فيلدهاي پايگاه داده وجود داشته باشد و از طرفي بعضي مواقع هم امكان ايجاد يك جدول بزرگ وجود ندارد پس ما مجبور به استفاده از چندين جدول هستيم كه بهترين راه براي جلوگيري از افزايش تعداد داده هاي مشترك استفاده از ارتباط فيلد مشترك است.
بعد از كار با جدول مي توانيد جدول را با استفاده از منو File و گزينه Close ببنديد.

نگاهي به بازجست:

براي مشاهده بازجستهاي هر پايگاه داده بايد بر روي شاخص Queries در پنجره Database استفاده كنيد. براي باز كردن هر بازجست مي توانيد بر روي نام آن دوبار كليك كنيد يا بد از انتخاب آن به وسيله ماوس بر روي دكمه Open در بالاي پنجره Database كليك كنيد.
هنگامي كه بازجستي را باز مي كنيد, اكسس آن بازجست را در حالت نمايش Datasheet مربوط به بازجست باز مي كند, كه كاملا مشابه حالت نمايشي Datasheet مربوط به جدول است. تنها تفوت در آن است كه حالت نمايشي Datasheet مربوط به بازجست معمولا به اندازه جدول, داده و اطلاعات ندارد. در واقع اين حالت نمايشي ميزان محدودي از داده ها را, كه مقصود اصلي از ايجاد بازجست است نمايش مي دهد. بازجست, داده ها را از يك يا چند جدول انتخاب مي كند و مي توانيد زيرمجموعه اي از داده ها را به عنوان جدول يا گزارش نمايش دهيد. در بيشتر مواقع مقدار داده هاي پايگاه داده بيشتر از آن است كه مايل به مشاهده هستيد. هدف از ايجاد بازجست, محدود كردن مقدار داده هاي به نمايش درآمده است. بازجست انتخابي از جمله متداولترين انواع بازجست ها است. بازجست انتخابي, داده ها را ميان دو يا چند جدول انتخاب كرده و نمايش مي دهد. علاوه بر حالت نمايشي Datasheet كه مانند حالت نمايشي جدول مي باشد بازجست را مي توان در حالت نمايشي Design نيز باز كرد كه مربوط به حالت طراحي بازجست است و براي رفتن به اين حالت مي توانيد درست مانند جدول رفتار كنيد و يا با انتخاب بازجست مورد نظر و كليك روي دكمه Design در بالاي پنجره Database اين حالت را نمايان كنيد.
همانطور كه مشاهده مي كنيد حالت طراحي Design مربوط به بازجست, ظاهر پيچيده اي دارد. اما بعد از آشنايي كامل با بازجست ايجاد و اجراي آن براي شما بسيار ساده خواهد بود. ايجاد بازجست در حالت طراحي Design و نمايش آن در حالت نمايشي Datasheet صورت مي پذيرد. بعد از پايان كار خود با بازجست مي توانيد بوسيله منو File و گزينه Close بازجست را ببنديد.

نگاهي به فرم:

براي مشاهده فرمهاي يك پايگاه داده, از شاخص Form در پنجره Database استفاده مي كنيم. براي مشاهده محتواي هر فرم مي توانيد در روي نا آن دوبار كليك كنيد و يا پس از انتخاب فرم مورد نظر بر روي دكمه Open در بالاي پنجره Database كليك كنيد.
بعد از باز كردن فرم مورد نظر اكسس آنرا در حالت نمايش Form يا Form View نشان خواهد داد. حالت نمايشي Form, فرم را در شكل نهايي آن نشان مي دهد و امكان ورود, اصلاح و نمايش داده ها را فراهم مي سازد. كليدهاي راهبري كه در زير اكثر حالات نمايشي وجود دارد, شماره ركورد و تعداد كل آنها را نمايش مي دهد.
چهار كليد اطراف نشانگر ركورد, براي گرداندن فرم و نمايش ركوردهاي مختلف به كار مي رود. شما مي توانيد ركوردهاي اول, بعدي, قبلي و آخري را مشاهده كنيد. شماره بين كليدها, شماره ركورد جاري كه فعلا مشاهده مي كنيد است.اگر بر روي شماره ركورد جاري, شماره ركورد جديدي را وارد كنيد اكسس در صورت وجود آن ركورد آنرا در فرم نمايش مي دهد.كليدهاي راهبري كه در منتهي اليه سمت راست قرار دارد, امكان ايجاد ركورد جديدي را با يك فرم خالي فراهم مي سازد. همانطور كه مشاهده مي كنيد كليدهاي راهبري مشابه كليدهاي كنترلي پخش صوت طراحي شده اند. با توجه كردن به شكل 52 در زير مفهوم كليدهاي راهبري را بيشتر درك خواهيد كرد.

حالت نمايشي Design در مورد Form نيز شكل فرم را نشان مي دهد. براي دسترسي به اين حالت شما مي توانيد درست مانند جدول رفتار كنيد و يا با انتخاب فرم مورد نظر بر روي دكمه Design در بالاي پنجره Database كليك كنيد. شايد براي شما در اين لحظه شكل آن عجيب به نظر بيايد ولي وقتي در درسهاي آتي روش ايجاد فرم را فراگرفتيد, نحوه خواندن حالت نمايشي Form را نيز خواهيد فهميد. با دستكاري در حالت نمايشي Design, مي توانيد نحوه نمايش داده هاي درون فرم را تغيير دهيد.
در درون فرم حالت نمايشي ديگري نيز وجود دارد و آن حالت نمايشي Datasheet است. كه براي دسترسي به آن بعد از باز كردن فرم مورد نظر مي توان از منو View گزينه Datasheet را انتخاب كرد.اين حالت كاملا شبيه حالت نمايشي Datasheet در جداول است. مزين حالت نمايشي Datasheet به حالت نمايشي معمولي فرم در اين است كه در اين حالت تعداد ركورد بيشتري نمايش داده مي شود در حالي كه در حالت نمايش معمولي فقط يك ركورد نمايش داده مي شود. البته در درسهاي آتي بيشتر در مورد اين حالت نمايشي صحبت خواهد شد.
بعد از پايان كار با فرم مي توانيد به وسيله منوي File و گزينه Close از فرم مورد نظر خارج شويد.

نگاهي به گزارش:

براي نمايش گزارشهاي هر پايگاه داده مي توان از شاخص Reports در پنجره Database استفاده كرد. هرچند كه مي توان گزارشها را روي صفحه نمايش بازنگري كرد ولي وقتي كه آنها را بر روي كاغذ چاپ كنيم بسيار مفيدتر خواهند بود. اگر بخواهيم قبل از چاپ محتواي گزارش را مشاهده كنيم مي توانيم بر روي نام گزارش مورد نظر دوبار كليك كنيم يا با انتخاب گزارش موردنظر بر روي دكمه Preview در بالاي پنجره Database كليك كنيم. (البته بايد توجه كرد كه گزارش تنها مختص چاپ كردن نيستند و كاربردهاي ديگري نيز دارند)
شما مي توانيد گزارشي بسازيد كه تمامي داده هاي يك جدول, چندين جدول, بازجست را نمايش دهد.با باز كردن گزارش شما آنرا در حالت Print Preview (بازنگري چاپ) به نمايش در خواهيد آورد.بازنگري چاپ گزارش را در شكل نهايي آن نشان مي دهد, اما بجاي چاپ گزارش, آنرا برروي صفحه مشاهده مي كنيد, تا قبل از چاپ گزارش از صحت آن مطمئن شويد.
در حالت Print Preview در مورد گزارش, امكان تغيير, اضافه يا حذف داده ها از پايگاه داده وجود ندارد. ولي با استفاده از آن مي توانيد مقادير مختلفي از اطلاعات را مشاهده كنيد. دقت داشته باشيد كه در هنگام حركت ماوس بر روي پنجره Print Preview, مكان نماي ماوس به يك ذره بين تبديل مي شود. در اين حالت اگر با ماوس كليك بزنيد, تصوير بزرگ شده گزارش را مشاهده مي كنيد, بدين تزتين مي توانيد گزارش را از نزديك مرور كنيد.
حالت نمايشي Design در مورد گزارش شكل آنرا نشان مي دهد.براي دسترسي به اين حالت مي توان درست مانند اجزا ديگر عمل كرد ويا با انتخاب گزارش مورد نظر بر روي دكمه Design در بالاي پنجره Database كليك كرد.بعدا با استفاده از حالت نمايشي Design شكل گزارش را تغيير خواهيم داد.

نگاهي به صفحه ها:

براي نمايش صفحه هاي وب موجود در يك پايگاه داده مي توانيد بر روي شاخص Pages در پنجره Database كليك كنيد. صفحه ها در يك پايگاه داده اكسس براي استخراج داده ها از جدول به يك صفحه وب مورد استفاده قرار مي گيرند درست مانند گزارش با اين اختلاف كه اين بار به جاي چاپ صفحه گزارش آنرا در يك مرورگر وب مانند IE مي تواند مشاهده كرد. من نمي خواهم زياد در مورد صفحه ها در اين قسمت توضيح دهم زيرا كاركرد آنها بسيار شبيه گزارشها مي باشند و هر كاري كه با گزارش انجام داديم مي توانيد با اين صفحه ها نيز انجام دهيد فقط به خاطر داشته باشيد كه اينها هر كدام يك صفحه وب مي باشند. در صفحه ها نيز مانند گزارش ها حالت نمايشي Design براي طراحي استفاده مي شود.
مي توان بزرگترين تفاوت بين گزارشها و صفحه ها را پوياتر بودن صفحات بيان كردن بدين معني كه شما بهتر از گزارش مي توانيد اطلاعات موجود در پايگاه داده را مرور كنيد و بين آنها حركت كنيد.

نگاهي به ماكروها:

ماكروها فهرست فراميني است كه در آنها كارهايي كه معمولا از طريق صفحه كليد انجام مي دهيد, تعريف مي شود. مثلا مي توانيد ماكرويي ايجاد كنيد كه هنگام وقوع شرايطي خاص مثل هنگامي كه ميزا فروش چيزي از تعداد يا مقدار مشخصي كمتر شود, گزارش مشخصي را چاپ كند. البته با استفاده از منوها نيز مي توانيد گزارش مورد نظر را چاپ كنيد ولي ماكرو مراحل كار را خودكار مي كند, بدين ترتيب كي توانيد با فشار كليد فرمان روي فرم, گزارش را چاپ كنيد.
به اين نكته توجه كنيد كه ماكروها اغلب به كليدهاي فرمان وصل مي شوند تا اجراي آنها براي كاربر ساده باشد چون به هرحال شما استفاده كننده هستيد و مايليد تا كارها تا حد امكان ساده انجام شود.
توجه كنيد كه كليد Run در بالاي صفحه Database ماكرو را اجرا مي كند ولي تا زماني كه نحوه عملكرد آنرا در برنامه نمي دانيد به هيچ وجه اقدام به اجراي آن نكنيد.
هرگاه بخواهيد محتويات ماكرو را از پنجره Database مشاهده كنيد بايد نام ماكرو مورد نظر را انتخاب كرده و بر روي دكمه Design در بالاي پنجره Database كليك كنيد كه در اين حالت حالت نمايش Design مربوط به ماكرو را مشاهده مي كنيد. فهرست اعمال ماكرو را در اين پنجره مشاهده مي كنيد به احتمال قوي اين اعمال مرموز به نظر مي رسندولي به مرور با آنها آشنا خواهيد شد.
چون ماكرو فهرست كارهاي خودكار شده است و شما هنوز نمي دانيد اكسس چه كارهايي مي تواند انجام دهد پس در اين مقطع نمي توان كار زيادي براي افزايش درك نسبت به ماكرو كرد. پس از پايان كار با ماكرو آنرا به وسيله منو File . گزينه Close ببنديد.

نگاهي به مدول ها:

مدولها برنامه هاي كاملي هستند كه با Visual Basic for Applications نوشته مي شوند, و براي خودكار كردن كارها به كار مي روند.برخلاف ماكروها كه ساده هستند برنامه كاربردي را مي توان به نحوي ايجاد كرد كه به هر حركت استفاده كننده پاسخ داده و عكس العمل نشان دهد. ما در درسهاي آينده به چگونگي كار مدولها خواهيم پرداخت ولي به دلايل زير به طور كامل آنرا توضيح نخواهيم داد:

—————-

برنامه نويسي با مدولها به مهارت هاي كامپيوتري پيشرفته اي نياز دارد كه من فكر نمي كنم تمامي مطالعه كننده هاي اين دروس به مهارتها آشنا باشند. اكسس محل خوبي براي يادگيري نحوه برنامه نويسي نيست. بسياري از افراد ساليان متمادي بدون نياز به نوشتن مدول, بصورتي موثر و كارا از اكسس استفاده مي كنند. حتي اگر بخواهيم برنامه هاي كاربردي قوي در اكسس ايجاد كنيم مي توان حتي بدون يك نياز كوچك به مدول اين كارها را انجام داد.

—————

اگر قبلا برنامه نويسي كرده باشيد, خصوصا با يكي از زبانهاي مشابه Basic مانند Qbasic و BasicA يا Visual Basic در استفاده از مدولها مشكل خاصي نخواهيد داشت.
البته در كلاسهاي اين سايت يكي از همكاران من دروس Visual Basic را براي شما عزيران تدريس مي كنند كه بسيار مفيد و پرمحتوا مي باشد و شما تما با دنبال كردن دروس اين همكار عزيز براحتي كار با مدولها را ياد خواهيد گرفت و من نيز شما را در اين راه ياري خواهم كرد.
پس از پايان كار با مدول مي توانيد از منو File و گزينه Close اقدام به بستن مدول بكنيد.

———————

درس اين جلسه در اين قسمت به پايان مي رسد و شما تا حالا به طور دقيق با كاركرد اجزا پنجره Database آشنا شده ايد. در دروس بعدي به تدريج به طور حرفه اي به كار با اين اجزا روي خواهيم آورد. در درس بعدي طراحي يك پايگاه داده هاي جديد را شرح خواهم داد. به اميد شادابي بيشتر شما دوستان عزيز

درک بهتر مفهوم ارتباط

در دروس پيشين به طور تدريجي آشنايي نسبتا كاملي با اجزاي يك پايگاه داده آشنا شديم و محيط پنجره Database را به خوبي شناختيم. حال نوبت آن رسيده است كه شروع به طراحي كنيم و با دستان قدرتمند خود پايگاه داده زيبايي را خلق كنيم ولي قبل از اينكار بايد مفهوم ارتباطات بين جداول را بهتر درك كنيم.
در اين درس مفهوم ارتباط بين جدولهاي يك پايگاه داده را بهتر درك خواهيم كرد و روشهاي مختلف ارتباط را ياد خواهيم گرفت و بدين ترتيب براي ايجاد جداول پايگاه داده خود را آماده تر خواهيم كرد.گاهي دقيقا نمي دانيم كه چه نوع داده هايي وارد جدول خواهند شد پس براي رفع اين مشكل به تدريج با نظريه طراحي پايگاه داده آشنا مي شويم.

درك ارتباط بين جداول:

قبلا گفته شد كه جداول از طريق فيلدهاي مشترك به يكديگر مرتبط هستند. هرچند كه فيلدهاي مشترك مرتبط شده, سبب تكرار برخي داده ها ميشوند.(در هرجدولي كه به ديگري مرتبط است خود فيلد مشترك دوباره ظاهر مي شود), ولي خواهيد ديد كه وقتي قدام به ايجاد پايگاه داده مي كنيد, فيلد مشترك كمك مي كند تا بسياري از داده هاي تكراري, كه در صورت نبود فيلد مشترك ايجاد مي شود, از بين ببريد.
ممكن است واژه شناسي پايگاه داده ها گيج كننده باشد اما خوشبختانه ساده ترين زبان زبان ارتباطي است, كه چگونگي ارتباط جداول به يكديگر را تعريف مي كند. در اين درس به سه روش ارتباط خواهيم پرداخت: 1-ارتباط يكي به يك 2-ارتباط يك به چند 3-ارتباط چند به چند

فيلدهاي كليدي منحصر به فرد ركوردها:

قبل از تشريح ارتباطات جداول, دقت داشته باشيد كه اغلب جداول پايگاه داده, فيلدي به نام فيلد كليد دارند, كه به ساير فيلدهاي جدول تقدم دارد. هرچند كه فيلد كليد لزوما مهمترين ارزش اطلاعاتي را ندارد, ولي دري هستند براي ورود به جدول كه نياز اصلي ما در ارتباط شمرده مي شود.فيلد كليد, فيلدي از جدول است كه بصورتي منحصر به فرد هر ركورد را تبيين مي كند.(يعني امكان اينكه فيلد كليد در دو ركورد مانند هم باشند وجود ندارد.)
توجه: فيلد كليد اصلي جدول بايد مقداري منحصر به فرد داشته باشد. اكسس امكان تعيين چندين فيلد كليد را مي دهد. اگر كليد از چندين فيلد تشكيل شده باشد, يك يا چند تا از اين فيلدها ممكن است داده هاي تكراري داشته باشندولي وقتي تركيب شوند, فيلد ادغامي بايد مقدار منحصر به فردي را ايجاد كند. توجه بيشتر به اين مثال خالي از لطف نيست: جدول كارمندان معمولا شامل فيلدهايي از قبيل نام كارمند, نشاني, تاريخ تولد, ميزان حقوق مي شود. بعلاوه هميشه مانند كد ملي, يك شماره كارمندي دارند. كد ملي شما منحصر به فرد است يعني تنها به يك نفر اختصاص دارد بنابراين اين شماره كارمندي فيلد كليدي خوبي براي فايل كارمندان است. به شكل 61 در زير توجه كنيد:

براي دسترسي به نام, نشاني يا حقوق هر كارمند, صرفنظر از تعداد كارمندان جدول اكسس فقط به شماره كارمند احتياج دارد.هر كارمند شماره منحصر بفردي دارد لذا هنگامي كه اكسس يكبار شماره كارمندي را گرفت, مي تواند آنرا با ركوردي از جدول پيوند دهد, يكبار براي هر ركورد. به اين ترتيب اكسس مي تواند به بقيه داده هاي ركورد در ساير فيلدها دسترسي داشته باشد.
توجه: اسامي فيلدها كليدهاي خوبي نيستند, چون افراد بسياري نام يكسان دارندو يا بسياري از افراد اسامي را به شكلهاي گوناگون مي نويسند. زماني كه يك شركت به مشتريان, كارمندان و اجناس خود عددي را تخصيص مي دهد, احتمالا آن شركت پروژه هايش را كامپيوتري كرده است. اين اعداد مي تواند كليد منحصر به فردي براي يافتن بقيه داده هاي مرتبط با آن باشند.
همچنين بايد به نكته توجه داشته باشيد كه فيلد كليد همواره فيلد ارتباط دوجدول مرتبط نيست ولي براي اين كار بسيار مناسب است و غالبا براي همين منظور به كار مي رود.
دو يا چند فيلد نيز مي توانند يك كليد منحصر به فرد را تشكيل دهند. اغلب به فيلد كليد, فيلد كليد اصلي گفته مي شود. اگر بخواهيد كه دو يا چند فيلد همراه با يكديگر به عنوان كليدي منحصر به فرد عمل كنند, بايد اكسس را واداريد تا فيلدهاي ادغام شده را به عنوان يك فيلد منحصر به فرد در نظر گيرد. مثلا ممكن است بخواهيد كه دو فيلد نام خانوادگي و كد پستي را يكديگر ادغام كنيد تا فيلد كليد نحصر به فردي ايجاد شود.
حال كه با مفهوم فيلد كليد براي ارتباط آشنا شديد به انواع ارتباط موجود در اكسس مي پردازيم:

ارتباطات يك به يك(One to One):

شايد ارتباط يك به يك نادرترين ارتباط ممكن بين جداول باشد. هنگامي كه در دو جدول تعداد ركوردها يكسان باشد و هر ركورد يك جدول به ركورد ديگري در جدول ديگر مرتبط باشد, بك ارتباط يك به يك بوجود مي آيد. ارتباط يك به يك نادرست است چون معمولا مي توانيد آن دو جدول را در يك جدول ادغام كنيد.
در شكل 62 در زير مثالي از ارتباط يك به يك بين دو جدول نشان داده شده است. فيلد كد كالا كليد و فيلد ارتباط را تشكيل مي دهد. نخستين ركورد در نخستين جدول به نخستين ركورد در دومين جدول مرتبط شده است.

خود شركت ماكروسافت توصيه مي كند كه از ارتباط يك به يك اجتناب كنيد. زيرا بهتر آن است كه دو جدول را در يك جدول بزرگتر ادغام كنيد, كه اين طريقه بسيار كارآتر است. در اكسس هر جدول مي تواند تا 256 فيلد داشته باشد ولي اگر وجود جدولي با بيش از 256 فيلد ضرورت داشته باشد,فقط با ايجاد دو يا چند جدول و برقراري ارتباط يك به يك بين آنها, قادر به برآوردن اين نياز خواهيد بود. كه براي اين منظور هم ماكروسافت امكانات بسياري را فراهم آورده است از ان جمله امكان دسترسي سريع به اطلاعات جدول دوم از طريق جدول اول بدون باز كردن آن جدول.

ارتباط يك به چند(One to Many):

ارتباط يك به چند شايد متداولترين نوع ارتباط بين جداول باشد. اين ارتباط زماني اتفاق مي افتد كه يك ركورد از جدول به يك يا چند ركورد از جدول ديگر مرتبط باشد. به عنوان مثال در جدول موجودي براي هر كالايي كه فروخته مي شود, يك ركورد وجود دارد. ولي در جدول سفارشات مشتريان ممكن است براي يك كالا, سفارشات متعددي وجود داشته باشد. در شكل 63 در زير نمونه اي از ارتباط يك به چند جداول مشاهده مي شود.

ارتباط يك به چند صرف جويي زيادي در فضاي ديسك را سبب مي شود. مثلا ارتباط يك به چندي كه در شكل 63 در بالا نشان داده شد, به شما امكان مي دهد تا گزارشي تهيه كنيد كه شامل مشتري همراه با شرح كالاي سفارشي باشد. ولي شرح در هر ركورد سفارش نمي آيد. شرح هركالا در جايي مستقل,در ركوردي منحصر بفرد در فايل موجودي قرار دارد. اكسس مي تواند در هنگام نياز, با استفاده از فيلد ارتباطي مشترك از جدول سفارش در جدول موجودي جستجو كند و شرح كالا را از آنجا بردارد. اكسس بدون فيلد كليد نمي تواند تعيين كند كه در برابر هر سفارش چه شرحي را بايد قرار دهد.
توجه داشته باشيد كه اكسس جدولهاي مرتبط را مي شناسدو در موقع لزوم اطلاعات صحيح را از آنها استخراج مي كند. لذا بايد هنگام ايجاد پايگاه داده اكسس اين ارتباطات را به اكسس بفهمانيد تا در هنگام مشاهده و چاپ داده ها از جداول مرتبط اكسس تمام كارها را انجام دهد.
همچنين قابل ذكر است كه ارتباط چند به يك و يك به چند مشابه هستند, لذا هر دو عبارت به يك معني به كار مي روند.

ارتباطات چند به چند(Many to Many):

اكسس ارتباطات چند به چند را مستقيما پشتيباني نمي كند ولي مي توانيد آن را شبيه سازي كنيد. ارتباط چند به چند هنگامي ايجاد مي شود كه ركوردهاي متعددي از يك جدول به يك يا چند ركورد از جدول ديگر مرتبط باشند. براساس تصاوير جداولي كه قبلا مشاهده كرده ايد, مي توان چنين تصور كرد كه خريداران متعددي, محصولات متعددي را سفارش دهند. بنابراين بين خريداران و محصولات يك ارتباط چند به چند وجود دارد.
جدول خريداران و جدول موجودي محصولات از طريق جدول سفارش به هم متصل مي شوند.بنابراين براي ارتباط چند به چند بين خريداران و موجودي محصولات, جدول سفارشات بعنوان واسطه بين اين دو جدول عمل مي كند.جدول خريداران ارتباطي يك به چند با جدول سفارشات دارد و جدول محصولات نيز ارتباطي يك به چند با جدول سفارشات دارد.پس همانطور كه در شكل 64 در زير مي بينيد جدول سفارشات بطور غير مستقيم بين خريداران و محصولات ارتباط چند به چند ايجاد مي كند.

گاهي اوقات, جدول مركزي يا واسطه در ارتباط چند به چند جدول اتصال خوانده مي شود. فيلدهاي كليد اصلي هر دو جدولي كه قرار است به هم مرتبط شوند, بايد در اين جدول وجود داشته باشد.
درس ارتباطات هم در اين قسمت تمام شد و اميدوارم ديگر جاي ابهامي در مورد انواع ارتباطات باقي نمانده باشد.

طراحی یک پایگاه داده های جدید

در درس پيش در مورد ارتباطات جداول به طور مفصل توضيحاتي داديم و انواع ارتباطات را شناختيم حال ديگر قادر به ايجاد پايگاه داده دلخواه خود هستيم و اين كار را به تدريج از اين درس كه مقدمي بر ايجاد پايگاه داده جديد است آغاز مي كنيم.
در اين درس در مورد جادوگرهاي اكسس (Wizards) صحبت خواهيم كرد. اين جادوگرها شما را در ايجاد برنامه هاي كاربردي متداول پايگاه داده ها, از قبيل مديريت فهرست پستي يا ورود سفارشات راهنمايي مي كنند.هرچند كه نيازهاي شما به كار خاص موردنظر يا احتياجات شخصيتان مربوط است, اما بيشتر پايگاه داده ها به يكي از نمونه هاي كلي پايگاه داده تعلق دارند. جادوهاي اكسس چهارچوب پايگاه داده برنامه كاربردي را ايجاد مي كنند, در مرحله بعد شما مي توانيد آن را اصلاح كنيد تا با نيازهاي خاص شما تطابق داشته باشد. اما به هرحال براي ايجاد پايگاه داده مجبور به استفاده از جادوگر نيستيد. شايد جادوگرها به كنترل مورد نظر شما به عنوان يك پايگاه داده امكانات لازم را فراهم نكنند.

ايجاد پايگاه داده هاي جديد با استفاده از جادوگر:

براي ايجاد يك پايگاه داده با بهره گيري از جادوگر(Wizard) بايد هنگام وارد شدن به اكسس از طريق پنجره اوليه قسمت Access database wizards,pages and projects را انتخاب كنيد و يا اگر وارد محيط اكسس شده ايد از منو File گزينه New را انتخاب كنيد,تا پنجره محاوره اي New كه داراي دو سربرگ است ظاهر شود.
هنگامي كه سربرگ General (عمومي) را انتخاب مي كنيد, صفحه General ظاهر مي شود كه با آن مي توانيد يك پايگاه داده خالي ايجاد كنيد. در دروس بعدي نحوه ايجاد يك پايگاه داده خالي را شرح خواهم داد. اصولا زماني پايگاه داده خالي ليجاد مي كنيم كه بخواهيم تمامي جنبه هاي اوليه طراحي و ايجاد پايگاه داده را كنترل كنيم. زماني كه يك پايگاه داده جديد و خالي ايجاد مي كنيم اكسس كاري براي شما انجام نمي دهد و هيچ پيش فرضي راجع به پايگاه داده اي كه مي خواهيد ايجاد كنيد,ندارد.
ولي به جاي ايجاد يك پايگاه داده خالي مي توانيد بر روي سربرگ Databases كليك كنيد تا صفحه Databases در پنجره محاوره اي New, نمايان شود. توجه داشته باشيد كه جادوگر راهنماي گام به گام اكسس است كه در انجام كارهايي از قبيل ايجاد پايگاه داده جديد به شما كمك مي كند. اگر اكسس جادوگري داشته باشد كه امكان ايجاد پايگاه داده اي مشابه آنچه لازم داريد را فراهم سازد راحتتر آن است كه بجاي اين كه از ابتدا پايگاه داده ايجاد كنيد, جادوگر را به كار اندازيد. در زير هر يك از پايگاه داده هايي كه توسط جادوگر مي توان ايجاد كرد تشريح شده است, براي اجراي آن كافي است كه نماد مربوطه را انتخاب كنيد و بر روي كليد Ok كليك كنيد.
حال به جادوگرهاي موجود و كاري كه براي شما در اكسس انجام مي دهند توجه كنيد:
——————
Asset Tracking(پيگيري اموال): پايگاه داده اي براي مديريت, نگهداري اموال, فروشندگان و كارمندان شركت ايجاد مي كند.
Contact Managment(مديريت ملاقاتها): پايگاه داده اي براي قرارهاي ملاقات و تماسهاي تلفني شخصي شما ايجاد مي كند.
Event Managment(مديريت وقايع):يك پايگاه داده براي وقايعي مانند قراردادها(موافقت نامه ها), كارمندان و قيمتها ايجاد مي كند.
Expenses(مخارج و هزينه ها):يك پايگاه داده براي نگهداري گزارشهاي مخارج ايجاد مي كند.
Inventory Control(كنترل موجودي):پايگاه داده اي براي اطلاعات محصولات, خريداران و سفارشات ايجاد مي كند.
Ledger(حساب كل): پايگاه داده اي براي حسابهاي كل, شامل تبادلات و حسابها ايجاد مي كند.
Order Entry(دريافت سفارش): پايگاه داده اي براي مديريت سفارشات خريداران, پرداختها و محصولات ايجاد مي كند. در اين پايگاه داده سيستمي از جداول ايجاد ميشود كه تاحدودي به جداولي كه در قبلا در درسهاي پيش شرح داديم تطابق دارد.
Resource Scheduling(زمانبندي منابع): پايگاه داده اي براي مديريت منابعي از قبيل زمانبندي و اقلام خريداران ايجاد مي كند.

Service Call Managment(مديريت سرويس تلفن):

پايگاه داده اي براي نگهداري اطلاعات خريداران, كار, دستورات كار, قطعات و پرداختها ايجاد مي كند. Time and billing(زمان و صورتحساب): پايگاه داده اي براي نگهداري مشتريان, پروژه ها, كارتهاي زماني, كارمندان و پرداختها ايجاد مي كند.
——————-
توجه كنيد كه اگر جادوگري انتخاب كنيد در همان پنجره New در طرف راست زير قسمت Preview شكلي هدف پايگاه داده را كه چندان واضح نيست نشان مي دهد يعني شما مي توانيد با انتخاب پايگاه داده ابتدا از هدف ايجاد آن از طريق اين شكل مطلع شويد و سپس برروي Ok كليك كنيد.
جادوگر نه تنها جداول اصلي پايگاه داده را ايجاد مي كند, بلكه همچنين فرمها, گزارشها و حتي ماكروها و برنامه هاي اصلي را نيز در صورت لزوم ايجاد مي كند. استفاده از جادوگر براي ايجاد پايگاه داده اصلي, تهيه پايگاه داده اصلي را بسيار ساده تر مي كند. بطور خلاصه مراحل ايجاد يك پايگاه داده با استفاده از جادوگر را شرح مي دهم:
1-جادوگر مورد نظر خود را در پنجره New انتخاب كنيد و بر روي Ok كليك كنيد.
2-نامي براي ذخيره شدن پايگاه داده انتخاب كنيد يا نام پيش فرض را قبول كنيد و بر روي Create كليك كنيد.
3-پنجره اي ظاهر مي شود كه پايگاه داده اي را كه مي خواهيد ايجاد كنيد به شما معرفي مي كند و شكل كلي آن را اعلام مي كند. اگر اين همان پايگاه داده مورد نظر شماست بر روي Next كليك كنيد.
4- در پنجره بعدي در مورد جداول و ديگر اجزايي كه ايجاد خواهد شد به شما اطلاعاتي مي دهد شما مي توانيد از ليست موجود جدولهاي مورد نظر خود را انتخاب يا حذف كنيد و سپس بر روي Next كليك كنيد.
5-در پنجره بعدي ليستي ظاهر مي شود كه شما مي توانيد شكل ظاهري پايگاه داده خود را از ليست انتخاب كنيد شكل مورد علاقه خود را انتخاب كرده بر روي Next كليك كنيد.
6-در پنجره بعدي شكل كلي گزارشهاي شما را نشان مي دهد در اين قسمت هم با انتخاب شكل موردنظر خود روي Next كليك كنيد.
7-در اين قسمت عنوان پايگاه داده از شما سوال مي شود مي توانيد نام پيش فرض را انتخاب كرده و بر روي Next كليك كنيد.
8- حال ديگر كار جادوگر تمام شده است مي توانيد بر روي Finish كليك كنيد.
9- بعدي مدتي كه اكسس تمامي جداولها و اجزا را ايجاد كرد مي توانيد با پايگاه داده كار كنيد. توجه كنيد كه در هر مرحله اي كه منصرف شديد مي توانيد بر روي Cancel كليك كنيد.
10-ذكر اين نكته نيز ضروري به نظر مي رسدبعضي از سوالها كه در هنگام ايجاد پايگاه داده با استفاده از جادوگر از شما مي شود شايد براي شما گنگ به نظر برسد ولي مطمئنا بعد از يادگيري كامل اين سوالات را مي توانيد به راحتي جواب دهيد. پس حتما بايد با ايجاد يك پايگاه داده خالي آشنا شويد.

طراحي يك پايگاه داده جديد:

اگر قصد داريد كه از جادوگر استفاده نكنيد كه به نظر من كار معقولانه اي است بايد مراحل زير را بپيماييد:
1-هنگام وارد شدن به اكسس از پنجره اوليه باز شده گزينه Blank access database راانتخاب كنيد و اگر وارد محيط اكسس شده ايد مي توانيد از منو File گزينه New را انتخاب كنيد و از پنجره New در سربرگ General شكل database را انتخاب كرده و برروي Ok كليك كنيد.
2- حال بايد محل ذخيره شده پايگاه داده را انتخاب كرده و نامي براي آن انتخاب كنيد كه من مطمئن هستم با اينكار آشنايي لازم را داريد پس نامي براي پايگاه داده خود انتخاب كرده و بر روي Create كليك كنيد.
3- حال اكسس پايگاه داده را ايجاد كرده و صفحه خالي در برابر شما ظاهر شده است از اين قسمت به بعد بايد آشنايي لازم را به كارهاي پيشرفته داشته باشيد.
توجه كنيد كه هنگامي اصول كار اكسس را رفته رفته بهتر ياد گرفتيد جادوگرها هم بهتر درك خواهيد كرد.

ميله ابزار پنجره Database:

هنگامي كه يك پايگاه داده جديد ايجاد كرده باشيد ميله ابزار به صورت شكل 71 در زير درمي آيد. اين ميله ابزار در حالات مختلف تغيير مي كند و امكانات ديگري را به شما مي رساند.

درس مربوط به طراحي پايگاه داده جديد نيز در اينجا تمام مي شود اميدوارم حالا شما قادر به ايجاد پايگاه داده اي جديد با استفاده از جادوگر شده باشيد. در درس بعدي يكي از مفاهيم پيشرفته و ضروري اكسس را ياد خواهيد گرفت يعني با تعريف جدول و نحوه عملكرد آن به صورت پيشرفته آشنا مي شويد.

تعریف جدول

حال كه با مفهوم ارتباطات آشنا شديم و در درس قبل كاربرد ويزارد و همچنين ايجاد پايگاه داده خالي را شرح داديم نوبت آن رسيده است كه به سراغ مهمترين و اصلي ترين جز در يك پايگاه داده برويم و آن جداول مي باشند. در اين درس قصد داريم با آنها آشنايي لازم را كسب كنيم.
در اين درس نحوه تعريف جداول پايگاه داده را شرح خواهم داد. صرف نظر از اينكه ما براي ايجاد پايگاه داده از جادوگر استفاده كرده يا پايگاه داده خالي ايجاد كرده ايم آشنايي با نحوه ايجاد, جابجايي و تغيير جداول پايگاه داده امري ضروري و اجتناب ناپذير است.همانگونه كه قبلا هم گفته شد داده هاي موجود در پايگاه داده در جدولها جاي مي گيرند و تسلط بر جداول مهمترين مهارتي است كه بايد بعنوان كاربر اكسس داشته باشيد. من در اين درس شرح خواهم داد كه چگونه جدول جديدي درست كنيد. براي ايجاد جدول نخست بايد انرا نامگذاري كنيد و سپس نوع داده هاي درون انرا تعريف كنيد. اين امور كه مربوط به طراحي جدول است يكي از ساده ترين كارها در اكسس است و البته جالب پس اين درس نكات قابل توجهي براي شما خواهد داشت.

ايجاد جدول جديد:

وقتي كه مي خواهيد يك جدول جديد ايجاد كنيد, با كليك كردن بر روي شاخص Tables در پنجره Database به صفحه جداول(Tables) مي رويد.(البته توجه كنيد كه اين صفحه هنگامي كه پايگاه داده را باز يا ايجاد مي كنيد به صورت پيش فرض ظاهر مي شود).حال براي ايجاد جدولي جديد بايد بر روي دكمه New در بالاي پنجره Database كليك كنيد. هنگامي كه بر روي اين دكمه كليك مي كنيداكسس پنجره محاوره اي كوچكي به نام New Table را نشان مي دهد.(كليد ميانبري كه شما مي توانيد براي دسترسي به اين پنجره كوچك استفاده كنيد كليد Alt+N مي باشد كه به سرعت شما را به اين پنجره مي برد).
در اين پنجره بايد انتخاب كنيم كه مي خواهيم ايجاد جدول را در چه محيطي ادامه دهيم كه به نظر من حالت نمايشي Design بهترين حالت نمايشي براي ايجاد و كار با جدول است,براي ايجاد جدول گزينه Design View را از پنجره محاوره اي New Table انتخاب كرده و بر روي Ok كليك كنيد. براي آشنايي شما با ديگر گزينه هاي اين پنجره يعني New Table آنها را در زير به طور خلاصه شرح مي دهم.
—————
Datasheet View: جدولي كلي به شكل صفحه گسترده مي سازد كه مي توانيد داده هاي جديد را در آن اضافه كنيد. اين جدول بسيار ساده بوده و براي ايجاد پايگاه داده پيشرفته اصلا مناسب نيست.
Design View: امكان تعيين تمامي خصوصيات جدول جديد مانند نام فيلد, نوع داده, و حتي ملاحظات امنيتي, را فراهم مي كند.اين گزينه براي ايجاد هر گونه جدول مناسب است.
Table Wizard: امكان انتخاب از ميان فهرستي از جادوگرهاي از پيش نوشته شده را فراهم مي سازد كه از اين جادوگرها براي ايجاد جداول خاص مانند فهرست پستي يا جدول موجودي استفاده مي شود. من اين گزينه را براي ايجاد جدول به هيچ وجه پيشنهاد نمي كنم.
Import Table: از يك فايل داده غير اكسس, جدولي ايجاد مي كند.
Link Table: از يك فايل داده اكسس يا غيراكسس, جدول ديگري مي سازد. اين جدول اتصالي را نگه مي دارد كه اگر فايل داده خارجي تغيير كند جدول اكسس نيز تغيير كند.
—————
به موضوع اصلي برمي گرديم يعني حالت نمايشي Design. اين حالت نمايشي بيشترين ميزان كنترل را برروي جدولي كه قصد ايجاد آنرا داريد فراهم مي سازد. هنگامي كه برحالت نمايشي Design تسلط پيدا كرديد, مي توانيد هر جدولي را ايجاد و اصلاح كرده و يا مطابق ميلتان دستكاري كنيد, و اين شامل جداولي كه با جادوگر ايجاد كرده اين نيز مي شود.بعد از انتخاب حالت Design View از پنجره New Table جدول جديدي را خواهيد ديد كه اصول كار ما از اينجا شكل مي گيرد.
لازم به يادآوري است كه همانطور كه قبلا گفتم براي رفتن از حالت نمايشي Design View به حالت نمايشي Datasheet View مي توانيد از منو View يا ميله ابزار استفاده كنيد. در ميله ابزار اولين انتخاب كه به شكل جدول كوچكي است براي اينكار طراحي شده است.در شكل 81 در زير شما مي توانيد ميله ابزار را در بعد از باز شدن پنجره Design تغيير كرده است ببينيد و با آن آشنا شويد و سعي كنيد آنرا به خاطر بسپاريد.ذكر اين نكته قابل توجه است كه اكسس همواره ميله ابزار را تغيير مي دهد را فرامين كارايي بهتري را ايجاد كنند.

نخستين جدول خود را طراحي كنيد:
در ميله عنوان پنجره Design View, نام جدول همراه با كلمه Table كه معرف پنجره است, نشان داده مي شود.اكسس به طور خودكار نخستين جدول را Table1 مي نامد(يعني شما در ميله عنوان اين عبارت را مي بينيد Table1:Table)اما هرگاه كه بخواهيد جدول را در فايل پايگاه داده ذخيره كنيد,امكان تغيير نام وجود دارد. هر سطر در پنجره Design View يك فيلد را مشخص مي كنديعني در اين پنجره ما مي توانيم نوع فيلدها و نام آنها را در سطرها تعريف كنيم و كار اصلي اين پنجره به شمار مي رود.همانگونه كه ملاحظه مي شود, پنجره Design View داراي ميله گردان عمودي در سمت راست است لذا در صورت تمايل تا 256 فيلد مي توانيد اضافه كنيد و با استفاده از ميله گردان قادر به حركت بين فيلدها هستند.
هنگامي كه فيلدي مي خواهيم اضافه كنيم بايد در سه ستون پنجره Design View آن فيلد را به طور كامل تعريف مي كنيم.در زير وظيف هر يك از ستونها كه در تعريف فيلدهاي جدول كاربرد دارند تشريح شده است:
—————
Field Name(نام فيلد):بايد به هر فيلدنامي تخصيص دهيد.طول نام آن تا 64 حرف مي تواند باشد.نام فيلد بايد عنواني منحصر بفرد باشد.براي فيلدي كه ارقام حقوق را نگه مي دارد,بهترين نام حقوق يا مبلغ حقوق است.نام فيلد مي تواند فضاي خالي و ساير علايم خاص بجز نقطه,علامت تعجب,علامت تكيه صدا(‘)يا براكت را شامل شود.توجه داشته باشيد كه هنگام كار با جدول براي رجوع به فيلد از نام آن استفاده مي شود.
Data Type(نوع داده):نوع داده اي را كه در فيلد جاي مي گيرد را تعيين مي كند. اكسس داده هاي مختلفي را دارا است.به عنوان مثال براي فيلد حقوق بايد داده اي از نوع ارز يا انتخاب كرد.(در درس آتي در اين مورد به صورت مفصل توضيح خواهم داد).
Description(شرح):شرح اختياري است و براي توضيح فيلد به كار مي رود.مي توانيد منشا و محتواي فيلد را در آن تشرح كنيد.توجه داشته باشيد كه پر كردن يا نكردن اين قسمت اصلا تاثيري در جدول نخواهد داشت.
—————
توجه:ايجاد شرح براي هر فيلد عاذت خوبي است.در هنگام توسعه بعدي برنامه,اين كار بسيار سودمند خواهد بود.براي فيلدها اسامي معني دار انتخاب كنيدتا بعدا داده هاي داخل فيلد از طريق نامش قابل شناسايي باشند. مثلا:تاريخ تولد,نام فيلد خوبي براي تاريخ تولد كارمند است, حال آنكه نامي مانند فيلد3, محتواي فيلد را مشخص نمي كند.

مفهوم اولين و آخرين ستونهاي جدول پنجره Design view يعني ستونهاي نام فيلد و شرح از نامشان مشخص است.
نام فيلد شرح كوچكي از فيلد است و براي رجوع به فيلد و محتواي آن مورد استفاده قرار مي گيرد.مثلا: در يك گزارش دستمزد اگر قرار باشد مقادير حقوق كه در فيلد حقوق ذخيره شده است چاپ شود به اين فيلد رجوع مي شود.فيلد شرح بعنوان مرجعي براي مستندسازي محتواي فيلد به كار مي رود.اكسس از اين فيلد هيچ استفاده اي نمي كند, ولي شما بايد از اين بخش براي شرح هر فيلد پايگاه داده استفاده كنيد. اگر با ساير همكاران برروي يك پروژه پايگاه داده كار مي كنيد,هريك از شما بايد هر فيلدي را كه به پايگاه داده اضافه مي كنيد را مستند كنيد,تا ديگران از علت وجود فيلد كاملا آگاه باشند.
توجه:فيلدها را بيش از حد مستند نكنيد.براي نمونه,يك ستون خالي شرح بهتري از شرحي است كه تاثيري نداشته باشد.مثلا نوشتن شرح “فيلد سوم” زائد بوده و در واقع توضيحي نمي دهد.بعلاوه شرحي كه مشابه نام فيلد باشدنيز غيرضروري است. هرفيلدي به شرح نياز ندارد.مثلا فيلدي با نام نرخ ماليات, در جدول دستمزد, به فيلد شرح احتياجي ندارد. اگر نامي كه براي فيلد انتخاب مي كنيد بامعني باشد اصلا به شرح نياز ندارد.
ستون مياني در پنجره Design View نوع داده را تعيين مي كند.براي اين فيلد,به اطلاعات بيشتري نياز داريد.داده هاي اكسس به اشكال مختلفي ظاهر مي شوند.شكل داده هاي فيلد مشخص كننده كاري است كه با فيلد و محتواي آن مي توانيد انجام دهيد. ستون Data Type و كليه موارد مربوط به آن در درس بعدي توضيح داده خواهد شد.

هرگاه فيلدي (يا فيلدهايي)را اضافه كرديد كه مي خواهيد كليد اصلي باشد,بايد موقعي كه نشانگر ماوس روي سطر موردنظر است دكمه Primary Key را از ميله ابزار فشار دهيد(دكمه اي كه تصوير كليد روي آن است).يا مي توانيد با انتخاب سطر موردنظر از منو Edit گزينه Primary Key را انتخاب كنيد. همچنين يك روش ديگر براي مشخص كردن كليد اصلي كليك راست كردن برروي سطر مورد نظر و انتخاب Primary Key از منو ظاهر شده است. پس از انتخاب فيلد كليد اصلي اكسس در سمت چپ فيلد تصوير كليد را نشان مي دهد. توجه كنيد كه هر جدولي كه ايجاد مي كنيد بايد حتما يك كليد اصلي داشته باشد در درسهاي پيش در مورد كليد اصلي به طور مفصل صحبت كرديم. پس بايد به ياد داشته باشيم كه در هنگام ايجاد جدول يك فيلد را به عنوان كليد اصلي انتخاب كنيم.

توجه:براي اينكه بيش از يك فيلد را در كليد اصلي قرار دهيد بايد كليد Ctrl را پايين نگه داريد و همزمان سطرهايي را كه مي خواهيد به عنوان كليد اصلي باشند انتخاب كنيد سپس از ميله ابزار Primary Key را كليك كنيد. اكسس در سمت چپ كليه فيلدهايي كه جز كليد اصلي هستند تصوير كليد را قرار مي دهد.
توجه:اگر فيلد كليد اصلي را تعريف نكنيد در هنگام بستن يا ذخيره كردن جدول طراحي شده اكسس از شما سوال مي كند كه آيا مي خواهيد چنين فيلدي داشته باشيد اگر پاسخ Yes را بدهيد اكسس فيلدي از نوع Auto Number(بعدا توضيح داده خواهد شد)به جدول اضافه كرده و آن را كليد اصلي قرار مي دهد. اگر مطمئن هستيد كه هرگز به كليد اصلي نياز نداريد (معمولا به يك فيلد كليد اصلي نياز است) No را انتخاي كنيد.
درس تعريف جدول هم تمام شد حال شما مي توانيد جدول خود را ايجاد كنيد ولي يك مشكل كوچك وجود دارد و آن هم نوع داده هاي موجود در ستون Data Type مي باشد نوع داده ها خود بحث مفصلي است كه آنرا به درس بعدي موكول مي كنيم

تعریف انواع داده ها

در درس پيش مبحث طراحي جدول را آغاز كرديم و پنجره Design View آشنا شديدو توانستيم اقدام به ايجاد جداول جديد كنيم ولي يكي از مباحث مهم در طراحي جدول را ذكر نكرديم و قول آن را به جلسه بعد داديم و آن مبحث كه در اين درس به طور مفصل توضيح داده خواهد شد نوع داده هاي فيلدها مي باشد.
اگر به ياد داشته باشيد در پنجره Design View ما براي تعريف كردن فيلدها از سه ستون Field Name و Data Type و Description استفاده مي كرديم و همچنين گفته شد كه Field Name براي شرح نام فيلد و Description براي توضيح فيلد براي استفاده هاي بعدي مي باشد. اما نكته اي كه اينجا قابل ذكر مي باشد ستون Data Type مي باشد كه نوع داده هاي هر فيلد را مشخص مي كند مثلا داده هاي از نوع متن, عدد, تاريخ و غيره كه تمامي موارد در زير به طور كامل شرح داده خواهند شد.

تعريف انواع داده ها:

هر داده اي نوع خاصي دارد. هرفيلد جدول, داده هايي از يك نوع خاص را مي تواند در خود جاي دهد.مثلا براي فيلدي با اسم “نام كارگر” بايد داده هايي از نوع متن تعريف شود تا تمامي ركوردهاي ثبت شده در اين فيلد داراي يك نوع داده و آن هم از نوع متن باشند.لذا هرگاه جدولي طراحي مي كنيم بايد نوع داده هر فيلد را از فهرست پايين جهنده ستون Data Type انتخاب كنيم.(براي نمايش فهرست ستون Data Type كافي است بر روي فلش موجود در اين ستون كليك كنيم تا فهرستي از نوع تمامي داده هايي كه مي شود در اكسس ثبت كرد براي ما نشان داده شود)
توجه: هنگامي كه موردي را از فهرست بازشونده Data Type انتخاب مي كنيم اكسس فهرستي از اطلاعات را در بخش زيرين پنجره نمايش مي دهد كه به آنها Field Properties (يا خصوصيات فيلد) گفته مي شود. مثلا وقتي ما فيلدي از نوع Text (متن) را از ستون بازشونده انتخاب مي كنيم. در زير همين پنجره خصوصيات فيلد مربوط به متن براي ما نشان داده مي شود. اين خصوصيات عنوان درس بعدي ما مي باشد كه به طور مفصل شرح داده هاي خواهد شد كه در اين قسمت ما تنظيمات جالب توجه اي داريم.
حال در زير به تشريح تمامي انواع داده ها مي پردازيم:

داده از نوع Text(متن):

از داده نوع Text در فيلدهايي كه حروف, واژه ها, اسامي و عبارات را نگه مي دارد استفاده مي شود. لازم نيست كه محتواي فيلد متن فقط متون الفبايي باشد بلكه مي تواند اعداد و علايم خاص نيز باشد. ولي توجه كنيد كه براي اعدادي كه در محاسبات از آنها استفاده مي كنيد, از فيلد نوع متن استفاده نكنيد. فيلد متن براي داده هاي مناسب است كه مي خواهيد آنها را نگهداريد و نه آنهايي كه قصد انجام محاسبه بر روي آنها را داشته و يا به عنوان تاريخ و زمان بكار ببريد.مثلا داده هاي با عنوان “نام” بايد در اين نوع فيلد ذخيره شوند.
توجه: از فيلد متني براي داده هاي با طول حداكثر 255 كاراكتر استفاده كنيد. اگر طول داده بيش از اين مقدار است, از داده نوع Memo استفاده كنيد. همچنين دقت كنيد كه براي كنترل طول فيلد متني, از خصوصيات فيلد استفاده كنيد(در درس بعدي شرح داده خواهد شد) مثلا مي توانيد از اكسس بخواهيد تا در هز ركورد فيلد متني, تا 255 حرف را نگهدارد.
آدرس و شماره تامين اجتماعي مثالهاي كاملي از داده هاي متني هستند كه از اعداد و علايم خاص (مانند تيره و ويرگول) تشكيل مي شوند.

داده از نوع Memo (يادداشت):

از داده نوع Memo براي فيلدهايي استفاده مي شود كه تا 64000 كاراكتر (شامل حروف, اعداد و كاركترهاي خاص) طول دارند.تعيين طول فيلدهاي Memo ضروري نيست چون اكسس فقط به همان مقدار كه لازم است براي آنها جا تعيين مي كند. در واقع جدولهايي كه فيلد Memo دارند, ركوردهايي با طول متغير دارند, چون طول فيلد Memo در هر ركورد, با ركوردهاي ديگر فرق دارد. مثال براي اين نوع فيلد, فيلدي به نام “توضيحات” مي تواند باشد.
توجه كنيد كه اگر بخواهيد متون شكل بندي شده اي مانند متون واژه پردازي شده در Word را در اكسس نگه داري كنيد بايد از داده هاي نوع OLE استفاده كنيد نه داده هاي نوع Memo.

داده از نوع Number (عدد):

هر داده اي از جدول را كه بخواهيد در محاسبات بكار ببريد, از نوع Number تعريف كنيد. داده از نوع Number براي تمامي ارقام, بجز مقادير پولي و ارقام با دقت زياد كه در محاسبات علمي بكار ميرود مناسب است.(توجه كنيد كه از داده نوع Currency (ارز) براي ارقام پولي و دقت بالا استفاده مي شود). اكسس در ارقام با دقت بالا زياد دقيق نيست مگر اينكه از داده نوع Currency استفاده كنيد.مثال براي داده هاي نوع Number مي تواند مثلا شماره كدپستي يا شماره كارگري باشد.

داده از نوع Data/Time (زمان/تاريخ):

داده هاي از نوع تاريخ و زمان را در فيلدهايي كه نوع آنها Data/Time است نگهداريد. از اين نوع داده در فيلدهايي مانند تاريخ استخدام و زمان ملاقاتها استفاده مي شود. وقتي فيلدهاي تاريخ و زمان را از نوع Data/Time تعيين مي كنيد, اكسس به شما امكان مرتب كردن آنها را بر اساس تاريخ و زمان مي دهد. مثلا مي توانيد گزارشي از تمامي كرامنداني كه تاريخ شروع به كار آنها اول مهرماه 1377 بوده است و يا فهرستي از تمامي حسابهايي كه بيش از 60 روز به سررسيد آنها مانده را چاپ كنيد.

فيلد داده از نوع Currency (ارز):

از اين نوع داده ها براي نگهداري مقادير پولي يا ارزي استفاده مي شود. داده از نوع Currency, كاربر را مطمئن مي سازد كه مقادير پولي/ارزي كه در محاسبات بكار مي روند به درستي گرد شده اند.(ولي يك مشكل كوچك در اكسس 2000 در اين نوع فيلد براي ثبت نتايج به ريال وجود دارد) اكسس تمامي مقادير پولي/ارزي را با 15 رقم در سمت چپ و چهار رقم در سمت راست نقطه اعشار(مميز كسري) نگه مي دارد, لذا مي توانيد اعداد با دقت بالا را در فيلدهاي پولي نگه داريد. از مثالهاي بارز اين نوع فيلد مقدار حقوق كارمند را مي توان ذكر كرد.

فيلد داده از نوع Auto Number (عدد خودكار):

وقتي كه فيلدي را را از نوع داده Auto number تعريف مي كنيد, با هر ركوردي كه به جدول اضافه شود اكسس بطور خودكار عددي را در اين فيلد نگه مي دارد.سه نوع ارقامي كه اكسس در فيلد عدد خودكار نگه مي دارد, عبارتند از:
—————-
اعداد متوالي: هنگامي كه ركورد جدي را به جدول اضافه مي كنيد, اكسس رقمي متوالي را تخصيص مي دهد كه از 1 شروع مي شود. مقادير متوالي Auto Number معمولا براي كليد اصلي جدول بكار برده مي شوند.
اعداد تصادفي: اكسس در ركورد جديد به اين فيلد, عددي منحصر به فرد و تصادفي را اختصاص مي دهد. اعداد شناسائي انعكاسي: اكسس مقدار منحصر به فردي را به اين فيلد تخصيص مي دهد كه پايگاه داده هاي تكرار شونده را با يكديگر هماهنگ مي كند.
—————-
فيلد داده از نوع Yes/No (بلي/خير):

فيلدي كه از نوع Yes/No تعريف مي شود به ازاي Yes عدد 1- و به ازاي No عدد 0 را دارا مي شود. با استفاده از بخش Filed Properties در پنجره مذكور مي توانيد بسته به دليل استفاده از فيلد, يكي از سه حالت Yes/No, True/False (درست يا غلط) يا On/Off (روشن و خاموش) را به كار ببريد. از موارد استفاده از اين نوع داده مي توان به متاهل بودن اشاره كرد كه مي تواند يا بله يا خير را دربرگيرد.

فيلد داده از نوع شي OLE:

OLE مخفف Object Linking and Embedding (اتصال و نشاندن شي) است. اگر برنامه ديگري تحت ويندوز از OLE پشتيباني كند يعني بتواند شي قابل انتقال به برنامه ديگري را ايجاد كند آنگاه فيلد شي OLE در اكسس نيز قادر خواهد بود تا آن داده را در خود نگه دارد. فيلدهاي OLE براي نگهداري اشيايي از قبيل عكس, تصاوير ويديوئي و صدا مناسب است. (همانطور كه ملاحظه مي كنيد, پايگاه داده اكسس علاوه بر داده هاي عددي و متني مي تواند انواع متنوع ديگري از داده ها را نيز نگه دارد.)
وقتي كه فيلدي از نوع OLE را در جدول قرار مي دهيد, مي توانيد علاوه بر مثلا اطلاعات مربوط به اقلام موجودي, تصوير آن را نيز به شكل يك شي OLE در درون فيلد OLE قرار دهد. به اين ترتيب هنگامي كه ركورد را نمايش مي دهيد, اكسس داده هاي ركورد را همراه با تصوير نمايش مي دهد.
براي نگهداري فيلدهاي از نوع OLE در پايگاه داده اكسس به نرم افزاهاي كمكي از قبيل برنامه هاي گرافيكي و يا صفه گسترده نياز داريد.

داده از نوع Hyperlink (ابرمتن):

اين نوع فيلد براي نگهداري ابرمتنها بكار مي روند. اگر تا حالا تجربه كار كردن با برنامه هاي طراحي صفحات وب يا كاركردن با كدهاي HTML را داشته باشيد منظور از ابرمتنها را به خوبي مي دانيد. ابرمتنها در واقع لينكهاي اينترنتي هستند كه ما را به صفحات مختلف در اينترنت هدايت مي كنند مثلا ما اگر لينكي به صورت http://www.yahoo.com داشته باشيم و برروي آن كليك كنيد ما را به صفحه ياهو خواهد برد و در واقع اين نوع فيلد از انواع فيلدهايي است كه به ندرت مجبور به استفاده از آن مي شويم. عملكرد آنها درست مانند فيلو از نوع متن مي باشد با اين تفاوت كه در اينجا هر متني را كه براي نگهداري تايپ كنيم در واقع آن لينكي از به يك صفحه اينترنتي.
از موارد استفاده از اين فيلد مي توان به نگهداري آدرسهاي اينترنتي مرتبط با شركت اشاره كرد.

داده از نوع Lookup Wizard (جادوگر جستجوگر):

هنگامي كه فيلدي از نوع Lookup Wizard ايجاد مي كنيد, اكسس با بكار گرفتن جادوگري به آن امكان مي دهد تا بجاي يك مقدار, فهرستي از مقادير را نگهدارد. اين فيلد مي تواند فهرستي از مقادير را از يك جدول يا بازجست و يا فهرستي از مقادير ثابتي كه در هنگام ايجاد فيلد تعريف كرده ايد,( براي فهرستهايي كه مقادير ثابتي دارند) باشد.
فرض كنيد كه شركتي به پنج كشور كالا مي فروشد. هنگام طراحي پايگاه داده مي توانيد با بكار انداختن Lookup Wizard, فهرست ثابتي از اسامي كشورها بسازيد كه در هنگام ورود داده ها به جدول, ظاهر شود.
هنگام كه كاربر بخواهد كشوري را انتخاب كند به جاي تايپ نام كشور براي هر ركورد فقط بايد از فهرست ثابت انتخاب كند.
حال شما قادر به شناسايي انواع داده هاي موجود در اكسس مي باشيد و با نوع عملكرد آنها آشنا هستيد و تا حدودي قار به ايجاد جدول هستيد ولي يك نكته در اينجا باقي مانده و آن خصوصيت انواع فيلدها مي باشد كه موضوع درس آينده ما را تشكيل مي دهد كه موضوعي جالب مي باشد .

خصوصیات فیلدها

اگر به خاطر داشته باشيد در دروس قبلي شروع به طراحي پايگاه داده هاي خود كرديم و در مورد پنجره Design View كه ما را در طراحي جداول ياري مي كند به طور مفصل صحبت شد. همچنين در درس قبل در مورد انواع داده هايي كه از طرف اكسس پشتيباني مي شود و شما مي توانيد از آنها در ايجاد جداول خود كمك بگيريد بحث كرديم. حال كه ما با انواع داده ها آشنا شديم وقت آن رسيده است كه به تنظيم خصوصيات اين داده ها بپردازيم و اين همان موضوعي است كه در اين درس به آن پرداخته شده است.

تعريف خواص فيلد:

به محض آنكه شما نوع داده را از ليست قسمت Data Type انتخاب كرديد در پايين همان پنجره قسمتي كه به Field Properties مشهور است در پايين گوشه چپ نمايان مي شود كه در اين پنجره كوچك كه داراي دو شاخص General و Lookup مي باشد ما اقدام به تنظيم خواص فيلد مي كنيم. بسياري از فيلدهاي خواص فيلد, اختياري است. برخي از فيلدها به هيچ فيلد خاصه اي نياز ندارند حال آنكه برخي ديگر از فيلدها به چندين فيلد خاصه نياز دارند. شما مي توانيد در شكل 101 در زير پنجره خواص فيلد براي يك فيلد متني را مشاهده كنيد.
هر فيلدي كه داراي نوع خاصي است همچنين داراي خصوصيات مربوط به خود مي باشد كه با خصوصيات ديگر فيلدها متفاوت مي باشدمثلا در شكل بالا ما از ليست باز شده Text را كه فيلد متني ايجاد مي كند را انتخاب كرديم اگر به جاي آن يك نوع ديگر فيلد مانند Number (اعداد) را انتخاب مي كرديم خصوصيات فيلد ما كه در پايين پنجره مشخص است متفاوت از اين شكل مي شد يعني فيلد متني خصوصيات مربوط به خود را دارد و فيلد اعداد خصوصيات متمايز از فيلد متني اين موضوع در مورد انواع ديگر داده نيز صدق مي كند. همانطور كه براي فيلد خود نوع داده اي را انتخاب كرديم مانند Text بايد براي آن خصوصيات مخصوص به خود را نيز ذكر كنيم. براي اين كار مي توانيم بر روي كادرهاي موجود در قسمت خصوصيات فيلد كليك كرده و مقدار مورد نظر خود را در آنها وارد كنيم كه در طول اين درس ما با نحوه عملكرد كادرهاي خصوصيات فيلد آشنا خواهيم شد.
بخش Field properties (خصوصيات فيلد) خاصه هايي از قبيل اندازه فيلد, شكل نمايش و تعداد اعشار را مشخص مي كند. هر نوع فيلد داده, مجموعه فيلدهاي خاصه خودش را دارد. در زير به ترتيب به معرفي خاصه هاي مختلف هريك از انواع داده مي پردازيم.

خواص فيلد متني:

در زير هر يك از مقادير خاصه هاي فيلد از نوع Text را تشريح كرده ام:
—————>
Field Size(اندازه فيلد): حداكثر طول داده اي را كه در فيلد قابل نگهداري است تعيين مي كند مثلا اگر ما بخواهيم كه كاربر در فيلد نام بيش از 15 كاراكتر قرار ندهد مي توانيم با تنظيم اين خصوصيت روي 15 بيش از اين مقدار را قبول نكنيم.
Format(شكل): شكلي را كه اكسس براي نمايش داده فيلد بكار مي برد تعيين مي كند. مثلا ما مي توانيم در اين قسمت تعيين كنيم كه حرف اول فيلد ما به صورت بزرگ نشان داده شود.
Input Mask(قالب ورودي): نحوه ورود داده به فيلد را تعيين مي كنيم مثلا اگر ما كد كارگري به شكل 2225-2 داشته باشيم مي توانيم تعيين كنيم كه كاربر به هنگام وارد كردن كد در اين قسمت حتما بايد در دومين كاراكتر خط فاصله قرار دهد.
Caption(عنوان): پيامي است كه در هنگام انتخاب فيلد در حالت نمايش Datasheet در ميله وضعيت نمايش داده مي شود.
Value Default(مقدار پيش فرض):مقداري است كه كاربر همواره در فيلد مشاهده مي كند مگر آنكه آن را تغيير دهد مثلا در فيلد جنسيت مي توان نام مرد را همواره براي كاربر نشان داد و اگر كاربر مايل باشد مي تواند آن را تغيير دهد و يا آنرا به صورت پيش فرض قبول كند.
Validation Rule(قاعده مقبوليت): مقاديري كه كاربر در فيلد وارد مي كند را محدود مي سازد (در اين مورد در دروس آتي بيشتر صحبت مي كنيم)
Validation text(متن مقبوليت):پيام خطايي است كه در صورتيكه كاربر اقدام به ورود مقداري كند كه قاعده مقبوليت را نقض كند نمايش داده مي شود.
Required(ضرورت):مشخص مي كند كه آيا كاربر مي تواند در هنگام ورود داده در جدول اين فيلد را خالي رد كند يا حتما بايد مقداري در آن وارد كند مثلا اگر كاربر فيلد كه كليد اصلي مي باشد خالي رد كند برنامه با مشكل روبرو مي شود.
Allow Zero Length(مجاز بودن طول صفر): مشخص مي كند كه آيا متني با طول صفر در فيلد قابل قبول است يا نه.
Indexed(نياز به ايجاد انديكس):مشخص مي كند كه آيا فيلد به انديكس نياز دارد يا نه. فيلد انديكس مرتب كردن و جستجو را تسريع مي كند.
Unicode Compression(فشرده سازي يونيكد): در اين قسمت تعيين مي كنيم كه مايليم فيلد ما با استفاده از سيستم Unicode فشرده سازي شود كه اين گزينه براي قابليت فارسي نويسي در اكسس مفيد مي باشد.(در مورد سيستم Unicode مي توانيد به دروس HTML در همين سايت مراجعه كنيد).
—————
توجه: هنگامي كه خاصه اندازه فيلد را معين مي كنيد, آنرا بزرگتر از آنچه واقعا نياز داريد قرار ندهيد. اكسس فضاي تخصيص يافته را بر مبناي اين مقدار تعيين مي كند, صرفنظر از اينكه طول به كار گرفته شود يا خير. در صورت بزرگتر گرفتن آن , فضاي ديسك بيهوده اشغال مي شود.
فيلدهاي Format(شكل) و Input Mask(قالب ورودي) پيچيده ترين خاصه هاي هر فيلد هستند. به عبارت ديگر, هنگامي كه نحوه نمايش و ورود داده با استفاده از اين خاصه ها را ياد مي گيريد چنان است كه گويي زبان جديدي را فرامي گيريد. اينكه اكسس چگونه داده هاي وارد شده در فيلد را نمايش دهد, توسط فيلد خاصه Format تعيين مي شود و خاصه Input Mask چگونگي ورود داده در فيلد را تعيين مي كند.
در زير مقاديري را كه شما مي توانيد در فيلد خصوصيت شكل Format وارد كنيد تشريح شده اند كه به وسيله آنها مي توانيد نحوه نمايش داده ها را تعيين كنيد:
—————>
! : برخلاف پيش فرض تراز از سمت راست, داده هاي درون فيلد را تراز به سمت چپ مي كند.
* : در اين مكان از فيلد كاراكتري بايد قرار گيرد.
& : در اين مكان از فيلد وجود كاراكتر دلخواه است. (الزامي نيست)
< : در اين مكان از فيلد كاراكتر به حروف كوچك تبديل مي شود.
> : در اين مكان از فيلد كاراكتر به حروف بزرگتر تبديل مي شود.
\ : بجاي اينكه كاراكتر بعدي را حرفي در نظر گيرد, آنرا بعنوان كد شكل در نظر مي گيرد. (براي نمايش * مفيد است, در غير اينصورت اكسس ستاره به عنوان كاراكتر علامت محل فيلد در نظر مي گيرد.)
————–
مثال: بنابراين اگر خاصه format فيلدي را &>&&&&& تعيين كنيد و نخستين ركورد جدول بصورت lw3dp2 باشد اكسس آنرا به lw3dP2 تبديل مي كند (كاراكتر > حرف P را به صورت حرف بزرگ P نشان مي دهد).
در زير هم به معرفي مقاديري كه شما مي توانيد در خاصه Input Mask قرار دهيد ذكر شده اند:
————->
0 : در اين مكان از فيلد عدد بايد باشد.
9 : در اين مكان از فيلد عدد يا فاصله بايد باشد.
# : در اين مكان از فيلد عدد, علامت مثبت, علامت منفي يا فاصله مي تواند قرار گيرد.
1 : در اين مكان از فيلد بايد يك حرف الفبايي باشد.
؟ : در اين مكان از فيلد هر حرف الفبايي به دلخواه مي تواند باشد.
A : در اين مكان از فيلد بايد يك حرف يا يك عدد باشد.
a : در اين مكان از فيلد به دلخواه يك حرف يا عدد مي تواند قرار گيرد.
& : در اين مكان از فيلد بايد يك كاراكتر يا فاصله قرار گيرد.
c : در اين مكان از فيلد يك كاراكتر دلخواه قرار مي گيرد.
> : كاراكتر در اين محل به حرف بزرگ تبديل مي شود.
< : كاراكتر در اين محل به حرف كوچك نبديل مي شود.
! : باعث مي شود تا كاراكترهاي ورودي در فيلد به جاي آنچه از سمت راست شروع شوند, از سمت چپ شروع شوند.
\ : بجاي اينكه كاراكتر بعدي را حرفي در نظر بگيرد آنرا به عنوان كد شكل در نظر مي گيرد (براي نمايش كاراكترهاي مانند * و ! مناسب است.)
————–
مثال: بنابراين اگر خصوصيت شكل فيلدي را 0000-000(9999) تعريف كنيد اكسس كاربر را مجبور خواهد كرد تا شماره تلفن را به شكل ده رقمي وارد كند.

خواص فيلد Memo:

داده از نوع Memo (يادداشت) مقادير خاصه هاي فيلد زير را نيز داراست, كه تمامي آنها در بالا بخش مربوط به فيلد Text تشريح شدند پس فقط به ذكر آنها بسنده كرده و آنها را توضيح نمي دهيم:
Format (شكل), Caption(عنوان), Default Value(مقدار پيش فرض), Validation Rule(قاعده مقبوليت), Validation Text(متن مقبوليت), Required(لازم بودن), Allow Zero Length(مجاز بودن طول صفر), Unicode Compression(فشرده سازي يونيكد).
به عبارت ديگر اگر فيلدي از نوع Memo داشته باشيد مي توانيد درست مشابه فيلد متن شكل, عنوان و ساير خصوصيات آنرا را تعريف كنيد.

خواص فيلد عددي:

در زير مقادير خاصه هاي فيلد از نوع Number تشريح شده است( به خاطر تكرار نكردن آنچه قبلا ذكر شد آنهايي كه مشابه فيلد از نوع Text مي باشند ذكر نشده اند تا فقط موارد جديد به اطلاع شما برسند):
————->
Field Size(اندازه فيلد):اگر فيلدي از نوع عدد داشته باشيد و بخواهيم اندازه فيلد را در خصوصيات آنرا تعريف كنيد شما مي توانيد از ليست موجود در اين قسمت يكي را انتخاب كنيد كه هر كدام را عناصر ليست را با نوع كاربرد آنرا ذكر مي كنيم: Byte(براي نگهداري يك عدد كوچك بين 0 تا 255), Integer(يك عدد بزرگتر تا 32767), Long Integer(يك عدد باز هم بزرگتر تا 2/1 ميليون), Single(عدد اعشاري), Double(عدد اعشاري با دقت زياد), Replication ID( يك مقدار عدد شناسائي انعكاسي براي هماهنگ كردن چندين جدول پايگاه داده), Decimal(براي اعدادبر مبناي دسيمال).
Format(شكل): در اين بخش از خصوصيات هم بايد يكي از موارد موجود در ليست را انتخاب كنيد كه به ذكر آنها بسنده مي كنيم: General Number(براي مقادير معمولي), Currency(براي مقادير پولي), Euro(براي مقاديري با واحد پول يورو), Fixed(همواره بايد يك رقم اعشار داشته باشد), Standard(كه در اعداد بزرگ ويرگول نشان مي دهد), Percent(براي نمايش ارقام درصدي همراه با علامت درصد),Scientific(براي نمايش ارقام علمي).
Decimal Places(ارقام اعشار): تعداد ارقام اعشاري كه براي يك مقدار نشان داده مي شود.
————-
ديگر موارد موجود در خصوصيات فيلد از نوع عدد تكراري بوده و انها را مي توانيد مانند فيلد از نوع متن تنظيم كنيد.
اگر داده اي كه در فيلد وارد مي كنيد بزرگتر از نوع داده انتخابي باشد, اكسس پيام خطايي مبني بر وجود مشكل را نمايش مي دهد.

خواص فيلد تاريخ/زمان:

در زير به تشريح هر يك از مقادير خاصه هاي فيلد تاريخ/زمان مي پردازيم توجه كنيد كه از ذكر موارد تكراري اجتناب شده است.
————>
Format(شكل): در اين بخش از خصوصيات بايد از ليست موجود يكي را به دلخواه و نحوه عملكرد برنامه انتخاب كنيد: General Data (براي تاريخ به شكل 1382/4/20 و زمان به شكل 3:12:2 عصر ), Long Data(براي نشان داده تاريخ به شكل بلند كه در آن نام ماه ذكر شده است), Medium Data(براي نشان دادن تاريخ به شكل 82-مرداد-20), Short Data(براي نشان دادن تاريخ به شكل معمول و كوچك), Long Time(براي نشان دادن زمان به شكل 3:12:2 عصر ), Medium Time:(براي نشان داده زمان به شكل 3:12 عصر ), Short Time(براي نشان دادن زمان به صورت 3:12).
————
ديگر موارد و خصوصيات موجود در اين نوع داده مانند داده از نوع Text مي باشد.
توجه: اگر هيچ يك از اشكال دقيقا آنچه لازم داريد نبود, مي توانيد شكل مورد نظر خود را, با كاراكترهاي خاص بسازيد كه اين مبحث يك مبحث طولاني مي باشد در برنامه ما نمي گنجد شما مي تواند براي اينكار از Help بهره بگيريد.

خواص فيلد Currency (ارز/پول):

اين نوع از فيلد در واقع زيرمجموعه اي از داده نوع عدد مي باشد كه خصوصيات آن مانند داده از نوع عدد مي باشد ولي بايد براي ايجاد داده از نوع ارز از قسمت Format مورد Currency انتخاب شود.

خواص فيلد از نوع Auto Number(عدد خودكار):

در زير هر يك از موارد و خصوصيات داده از نوع عدد خودكار شرح داده شده است:
————>
Fielg Size(اندازه فيلد): اگر مي خواهيد به صورت پيش فرض از اين نوع داده استفاده كنيد از ليت باز شده Long Integer را انتخاب كنيد ولي اگر مي خواهيد از پايگاه داده تكرار شونده استفاده شود بايد Replication ID انتخاب شود.
New Values(مقادير جديد): بايد تعيين كنيد كه اكسس اعدادي را كه در اين فيلد قرار مي دهد از نوع Increment(به صورت افزايشي) يا از نوع Random(به صورت تصادفي) باشد.
Format(شكل): ليست موجود در اين بخش از خصوصيات فيلد درست مانند داده از نوع عدد مي باشد كه مي توانيد مانند آن يكي از مقدارهاي موجود را انتخاب كنيد.)
————
ديگر خصوصيات موجود در اين نوع داده در بالا ذكر شده كه از تكرار كردن آنها اجتناب مي كنيم.

خواص فيلد Yes/No(بلي/خير):

هر يك از خصوصيات اين فيلد در زير تشريح شده است و طبق معمول از تكرار اجتناب كرده ايم:
———–>
Format(شكل): براي اينكه نحوه نمايش فيلد براي اكسس مشخص شود يكي از حالات Yes/No(بلي يا خير), True/False(درست/غلط), On/Off(روشن/خاموش) را مي توانيد انتخاب كنيد.
———–

خواص فيلد شي OLE :

خواص موجود در اين نوع از فيلد كه دو مورد مي باشد در قسمتهاي ديگر اين درس ذكر شده كه بسيار ساده و پيش پا افتاده مي باشد.

خواص فيلد از نوع Hyperlink(ابرمتن):

خاصيتهاي موجود براي اين نوع از داده همانند خواص موجود براي داده از نوع Text(متن) مي باشد كه من ضرورتي در تكرار موارد ساده اي مانند اين نمي بينم.

خواص فيلد Lookup Wizard(جادوگر جستجوگر):

داده از نوع Lookwizard جادوگري را به كار مي اندازد كه شما با طي مراحل اين جادوگر و انتخاب جدول و فيلدهاي جدولهايي كه انتخاب كرده ايد و مي خواهيد داده ها از آنها استخراج شده و در مقابل كاربر نشان داده شود خصوصيات متفاوتي را براي شما نمايان مي كند.(توجه كنيد كه براي استفاده از جادوگر جستجو قبلا بايد جدولي داشته باشيد كه داده ها از آن استخراج شده و در اين قسمت قرار داده شود پس اول جدولي حاوي داده هايي كه مي خواهيد در ليست قرار داده شود ايجاد كرده وسپس از جادوگر استفاده كنيد). بعد از طي مراحل جادوگر و ايجاد آن شما مي توانيد بر روي شاخص Lookup موجود در قسمت خصوصيات فيلد كليك كرده تا خصوصيات مربوط به جادوگر طراحي شده براي شما نمايان شود در زير هر يك از اين خصوصيات موجود تشريح شده است:
———–>
Display Control(كنترل نمايش داده شده): اين خاصه مشخص مي كند كه در هنگام دريافت اطلاعات در حالت نمايشي Datasheet چه كنترلي در اين فيلد اعمال شود ليست موجود در اين قسمت حاوي Text Box(جعبه متن), List Box(جعبه ليست شده), Combo Box(جعبه تركيب) مي باشد.
Row Source Type(نوع ماخذ سطر):مشخص كننده جايي است كه داده از آن منشا مي گيرد. گزينه هاي ممكن عبارتند از Table/Query(جدول يا بازجست), Value List( داده هايي كه وارد مي كنيد), Field list(فهرستي از فيلدهاي يك جدول يا جستجو).
Row Source(ماخذ سطر): مي تواند يك جدول يا بازجست يا معمولا يم عبارت SQL باشد. از شنيدن عبارت SQL مضطرب نشويد نمايشش شايد به چشم گيج كننده برسد اما در واقع همان چيزي است كه هنگام ايجاد بازجست آنرا مي سازيد. پس زياد اين قسمت از خصوصيات را دستكاري نكنيد تا با آن بيشتر آشنا شويد.
Bound Column(ستون مقيد): ستوني از List Box يا Combo Box است كه قبلا انتخاب شده است و اين فيلد داده هاي نمايش را از آن برمي دارد.
Column Count(تعداد ستونها): تعداد ستونهاي ماخذ سطري است كه مي خواهيد نمايش داده شود.
Column Heads(عناوين ستونها): تعيين مي كند كه آيا براي ستونها عنواني نيز نمايش داده شود يا نه.
Column width(پهناي ستونها): پهناي هر يك از ستونها را بر حسب سانتيمتر نشان مي دهد كه با ويرگول از هم جدا شده اند.
List Rows(تعداد سطور فهرست): اين خصوصيت همانطور كه از نامش پيدا است تعداد ستونها نمايش داده شده را تعيين مي كند.
List Width(پهناي فهرست): پهناي كلي Combo Box يا List Box را مشخص مي كند.
Limit to list(محدود به فهرست): مشخص مي كند كه آيا كاربر بايد از فهرست انتخاب كند يا اين كه مي تواند مقادير مورد نظرش را نيز وارد كند.
———-
Lookup Wizard قابليتي جالب است, اين قابليت ابزار قدرتمند و سودمندي است. هر چند تا زماني كه قدري با اكسس كار نكنيد از اين فهرستها در جدول استفاده نخواهيد كرد, ليكن هنگامي كه آماده استفاده از آن شديد متوجه خواهيد شد كه كار با آنها ساده است.

خواص جستجو:

در قسمت خصوصيات فيلد سربرگ ديگري به نام Lookup وجود دارد كه آنرا مي توانيد براي بعضي از نوع داده ها تنظيم كنيد نه براي همه و كار با اين سربرگ بسيار ساده و راحت است و تمامي موارد موجود در آن را توضيح داده ايم وشما در كار كردن با آن كه بسيار كم به آن احتياج خواهيد داشت مشكلي نخواهيد داشت.

ذخيره كردن جدول:

در هنگام طراحي جدول حتما به خاطر داشته باشيد كه كليد اصلي را در آن ايجاد كنيد يا به عبارت ديگر بهتر است قبل از هر كاري كليد اصلي را در ابتداي جدول ايجاد كنيد.
اما بعد از اينكه جدول خود را به طور كامل تعريف كرديدبايد آنرا ذخيره كنيد. براي اين كار مي توانيد با زدن علامت ضربدر گوشه سمت راست بالا جدول اقدام به بستن جدول كنيد و هنگام سوال كردن از شما مبني بر ذخيره جدول آنرا تائيد كرده و نامي را كه در نظر داريد به جدول خود اختصاص دهيد. پس از اين كار جدول بسته خواهد شد و نام آنرا مي توانيد در ميان فهرست جداول موجود ببينيد.

حالا شما قادر به طراحي جداول مي باشيد هرچند كه پيچيده باشند و به مرور زمان در اين كار استاد خواهيد شد. حال كه شما مي توانيد اولين شي موجود در پايگاه داده خود را ايجاد كنيد پس اقدام به اينكار كرده و چندين جدول را براي برنامه خود ايجاد كنيد كار زيبا و لذت آوري است. در درس آتي به نحوه وارد كردن داده هاي در جدول ايجاد شده خواهيم پرداخت پس تا درس آتي جداول خود را ايجاد كرده باشيد تا در وارد كردن داده ها دچار مشكل خاصي نشويد.

ورود داده‌ها به جدول

حال كه در سه درس قبلي با طراحي جداول در اكسس آشنا شديد و موفق شديد كه اولين جدول خود را طراحي و در پايگاه داده قرار دهيد موقع آن رسيده است كه از جداول طراحي شده توسط خودتان استفاده كامل را ببريد يعني داده ها خود را براي نگهداري و انجام عمليات در جداول خود وارد كنيد و اين موضوع يعني وارد كردن داده ها در جدول و اصلاحات در آنها موضوع درس اين جلسه مي باشد.
در ادامه اين درس به بررسي راه كارهاي موجود براي وارد كردن اطلاعات در جدول هاي طراحي شده خواهيم پرداخت. شايد ساده ترين و پركاربردترين راه براي ورود داده ها, استفاده از حالت نمايشي Datasheet يا صفحه گسترده باشد.اگر تا به حال تجربه كاركردن با برنامه هايي مانند Microsoft Excel را داشته باشيد حتما تشابه بسيار بين اين برنامه و حالت نمايشي Datasheet خواهيد ديد. با استفاده از حالت نمايشي Datasheet به راحتي مي توانيد مقادير را در سطرها (ركوردها) و ستونهاي (فيلدها) جدول وارد كنيد.در اين حالت نمايشي با ورود مقادير در سطرها و ستونها در واقع ركوردها و فيلدهاي جدول را پر مي كنيد. علاوه بر ورود داده هاي جديد هنگامي كه خطايي در داده وارد شده مشاهده كنيد يا وقتي بخواهيد مقادير را تغيير دهيد با يد داده هاي موجود را اصلاح كنيد. اكسس براي جستجو و اصلاح محتواي جدول ها, در حالت نمايشي Datasheet ابزارهاي اصلاحي متعددي دارد. حالت نمايشي Datasheet علاوه بر ورود و اصلاح داده ها, مي تواند در ميان داده هاي مورد نظر جستجو كند.

مقدمات جهت افزودن داده ها به جدول :

هنگامي كه با استفاده از حالت Design جدولي ايجاد كرديد براي ورود داده ها به آن آمادگي خواهيد داشت. پس اگر جدولي طراحي نكرده ايد يك جدول طراحي كنيد و اگر جدولي از پيش طراحي شده داريد مراحل زير را طي كنيد:
1) از ليست جدولهاي موجود جدولي را كه مي خواهيد داده ها را در آن وارد كنيد انتخاب كنيد, براي اينكار كافي است بر روي نام جدول موردنظر يك بار كليك كنيد.
2)براي باز كردن جدول روي كليد Open كليك كنيد. اكسس جدول را در حالت نمايشي Datasheet نمايش مي دهد. اگر اولين دفعه باشد كه اقدام به وارد كردن داده در جدول موردنظر مي كنيد جدول به صورت خالي ظاهر مي شود ولي اگر داده اي قبلا در آن وارد كرده باشيد داده هاي موجود نيز نشان داده خواهند شد. توجه: اگر قصد داشته باشيد كه تغييري در ساختار جدول ايجاد كنيد بايد بر روي دكمه Design كليك كنيد تا بتوانيد قسمتهاي موردنظر خود را تغيير داده يا فيلدهاي جديد خود را به آن اضافه كنيد( در اين مورد به صورت مفصل قبلا صحبت كرده ايم)
هنگامي كه براي اولين بار حالت نمايشي Datasheet ظاهر مي شود, اكسس نشانگر را در ابتداي نخستين فيلد در نخستين ركورد قرار مي دهد.

ورود داده ها در جدول :

به طور حتم تا حالا متوجه شده ايد كه براي وارد كردن داده ها در جدول به مهارت خاصي نياز نداريد. شروع به وارد كردن نخستين مقدار در جدول كنيد تا اكسس آنرا از شما قبول كند. با استفاده از تمامي كليدهاي صفحه كليد مي توانيد به راحتي داده ها را در جدول وارد كرده و بين فيلدها و ركوردهاي مختلف گشت بزنيد.
توجه: اگر براي فيلدي خصوصيات ويژه اي را تعريف كرده باشيد بايد مطابق با آن عمل كنيد. مثلا اگر طول فيلي را 12 كاراكتر تعيين كرده باشيد, اكسس فقط امكان ورود 12 كاراكتر را به شما خواهد داد. اگر توجه كرده باشيد متوجه مي شويد كه هنگامي كه شما شروع به وارد كردن اولين مقدار در نخستين فيلد ركورد كرديد, اكسس به طور خودكار ركورد خالي بعدي را ايجاد مي كند. بدين ترتيب مي توانيد پس از اتمام ورود داده در اولين ركورد به ركورد بعدي برويد. همچنين اگر دقت كنيد ستاره اي را در ابتداي ركورد خالي مي بينيد اين ستاره به اين معنا است كه ركورد جديد بوده و خالي نمي باشد. اگر در اين ركورد جديد داده اي وارد نكنيد اكسس آن را در جدول ذخيره نخواهد كرد.
يكي از راههاي متداول حدكت كردن در بين فيلدهاي جدول استفاده از كليد Tab است اگر كليد Tab را فشار بدهيد به فيلد بعدي موجود در جدول مي رويد و همچنين اگر Shift+Tab را فشار دهيد به فيلد قبلي موجود در جدول هدايت خواهيد شد. همچنين مي توانيد با اشاره گر ماوس بر روي فيلد مورد نظر كليك كرده و اقدام به ورود داده كنيد.
همواره نيم نگاهي هم به ميله وضعيت در پايين پنجره حالت نمايشي Datasheet داشته باشيد. وقتي كه داده ها را در فيلدهاي جدولي وارد مي كنيد ميله وضعيت توضيحي در باره آن فيلد مي دهد. در واقع اين توضيح همان توضيحي است كه شما در هنگام طراحي جدول در قسمت Description (شرح) فيلد واردكرده ايد و حال براي اطلاع كاربر در ميله وضعيت نشان داده مي شود. مثلا اگر در قسمت Description فيلد نام متن “نام كامل خود را وارد كنيد” را وارد كرده باشيد هنگامي كه كاربر مي خواهد اين فيلد را در جدول پر كند در ميله وضعيت عبارت “نام كامل خود را وارد كنيد” را مي بيند.
توجه: در ابتداي ركوردي كه در حال ورود داده يا اصلاح آن هستيد شكلك مداد نمايش داده مي شود.
توجه كنيد هنگامي كه تمامي فيلدهاي يك ركورد را پر كرديد و به ركورد بعدي رفتيد اكسس به طور خودكار ركورد را ذخيره مي كند. در اين صورت در صورت به وجود آمدن اتفاق غير قابل پيش بيني شما حداقل اطلاعات را از دست خواهيد داد. ولي چنانچه مايل هستيد به صورت دستي در ميانهاي وارد كردن داده ها در يك ركورد آن ركورد را ذخيره كنيد مي توانيد از كليدهاي Shift+Enter استفاده كنيد.

اصلاح فيلدهاي جدول :

در اكسس تغيير داده هاي وارد شده بسيار آسان است. فقط كافي است كه با استفاده از كليدهاي Tab و Shift+Tab يا با بهره گيري از ماوس به فيلد مورد نظر خود برويد تا اكسس تمامي محتويات آن فيلد را به صورت پر رنگ درآورد.حال مي توانيد اقدام به ورود داده جديد در آن فيلد بكنيد. فقط دقت كنيد چون تمامي محتويات فيلد به حالت پررنگ است داده جديد جايگزين آنها خواهد شد.
توجه: اكسس در ابتداي ركوردي كه در حال اصلاح است علامت فلش را قرار مي دهد. در واقع سه علامت مداد(ورود داده), فلش(اصلاح داده) و ستاره(ركورد جديد)علامتهاي متداول جدول است.
اگر قصد نداريد كه تمامي محتويات فيلد را پاك كنيد كافي است كليد F2 را فشار دهيد تا داده از حالت پر رنگ خارج شود. بدين ترتيب داده جديد به داده قبلي در همان فيلد اضافه مي شود.در واقع با زدن كليد F2 به حالت اصلاح وارد مي شويد.البته توجه كنيد كه با استفاده از ماوس مي توانيد در هرجايي از فيلد تغييرات لازم را بدهيد و استفاده از ماوس در اين كارها به مراتب راحتتر از صفحه كليد است.
در اينجا ذكر اين نكته را ضروري مي بينم شما مي توانيد از كليدهاي صفحه كليد تمامي بهره را ببريد و همه كليدها به طوري كه در برنامه هاي ديگر مانند ورد عمل مي كنند در اينجا نيز عمل خواهند كرد. همچنين شما مي توانيد با انتخاب گزينه هاي Copy و Paste از منو Edit محتواي يك فيلد را در فيلد ديگري كپي كنيد اين عمل درست مانند عمل كپي و الصاق در برنامه هاي واژه پرداز مانند Word مي باشد و عملكرد آن بسيار ساده و آسان است.

استفاده از ميله ابزار حالت نمايشي Datasheet

هنگام استفاده از حالت نمايشي Datasheet ميله ابزار مي تواند بسيار سودمند باشد. همانطور كه چندين بار نيز گفته ام اكسس در انجام فعاليتهاي مختلف ميله ابزار را تغيير مي دهد. در شكل 111 در زير شما مي توانيد با ميله ابزار اين پنجره آشنا شويد. حتما سعي كنيد تمامي امكانات ميله ابزار را به خاطر بسپاريد كه در مواقعي به آنها احتياج خواهيد داشت.يكي از كاربردهاي مفيد ميله ابزار دكمه view اولين دكمه موجود در اين ميله است كه با فشار دادن آن مي توانيد در بين حالتهاي نمايشي Datasheet و Design حركت كنيد.

كنترل بر روي ركوردهاي زياد:

فرض كنيد بخواهيد به جدولي كه قبلا چند صد ركورد وارد آن شده, ركوردهاي جديد را اضافه كنيد.ممكن است ركوردهاي جديد شما را گيج كنند و يا تشخيص ركوردهاي جديد دشوار باشد.قبل از ورود ركوردهاي جديد مي توانيد تمامي ركوردهاي پيشين را مخفي كنيد.براي اين كار كافي است از منو Records گزينه Data Entry را انتخاب كنيد اكسس بجز ركوردهايي كه به تازگي وارد شده, باقي را از ديد شما پنهان مي كند. در اين هنگام وقتي شما داده هاي جديد را وارد مي كنيد اكسس فقط ركوردهاي جديدي را كه وارد كرده ايد نمايش مي دهد.در واقع تمامي ركوردها در جدول وجود دارند ولي اكسس آنها را پنهان مي كند. براي بازگشت به وضعيت نمايش تمامي ركوردها مي توانيد از منو Records گزينه Remove File/Sort را انتخاب كنيد. در اين صورت اكسس تمامي ركوردهاي جدول را نشان مي دهد.
جدولهاي پايگاه داده ممكن است بسيار بزرگ باشد مثلا ممكن است در انبار يك شركت صدها جنس وجود داشته باشد كه در پايگاه داده ثبت شده اند.

براي حركت در جدولهاي بزرگ بجاي استفاده از كليدهاي صفحه كليد مي توانيد از منو Edit گزينه Goto را انتخاب كنيدتا ليستي باز شود كه به شما امكان رفتن به اولين ركورد, آخرين ركورد, ركورد قبلي يا بعدي در جدول را مي دهد.همچنين اگر از ليست باز شده گزينه New را انتخاب كنيد اكسس يك راست به ركورد جديدي در انتهاي جدول مي رود. در واقع اين ليست Goto درست مانند دكمه هاي حركت در زير پنجره Datasheet است كه قبلا درباره آنها صحبت كرديم. در اين دكمه شما مي توانيد با تايپ شماره ركورد مورد نظر يك راست به آن ركورد برويد. مثلا اگر در جدولي قصد رفتن به ركورد 1363 را داريد كافي است كليد F5 را فشار داده و عدد 1365 را وارد كنيد تا اكسس به آن ركورد رجوع كند.(البته در درس آتي جستجوي داده هاي معين توضيح داده خواهد شد)
حتما همگي با كاربرد دكمه Undo آشنا هستيد در واقع اين دكمه زماني به كار مي رود كه هنگام وارد كردن داده در يك فيلد متوجه شديد كه اشتباهي رخ داده است و قصد داريد داده هاي قبلي فيلد به آن بازگردند با زدن دكمه Undo(بازگرداندن) از ميله ابزار يا فشار كليد Esc از صفحه كليد اين عمل به راحتي انجام مي شود.

ورود داده هاي غير متني:

در اكثر فيلدهاي پايگاه داده شما نوع داده ذخيره شده در آن را قبلا در طراحي جدول تعيين كرده ايد مثلا فيلدي را از نوع متن و ديگري را از نوع عدد تعيين كرده ايد اگر در هنگام ورود داده مثلا در فيلدي از نوع عدد بخواهيد متن وارد كنيد اكسس پيغام خطايي به شما نشان مي دهد و اجازه اين كار به شما داده نخواهد شد. درست است كه تعداد فيلدهايي كه به غير از نوع متن و عدد هستند بسيار كم است ولي به هرحال ما مجبور به استفاده از آنها هستيم بعضي از اين انواع داده ها روشي خاصي را براي وارد كردن داده مي طلبند كه به آنها مي پرازيم:

ورود داده در فيلدي از نوع Memo :

همانطور كه در دروس پيش نيز ذكر شد داده از نوع Memo نسبت به داده از نوع متن مي تواند مقدار كاراكتر بيشتري را در خود نگهداري كند يعني چيزي حدود 64000 كاراكتر. اكسس براي كار با اين متن بزرگتر ابزار خاصي را در نظر گرفته است.
توجه: در حالت نمايشي Datasheet ابزارهاي ورود داده براي فيلدهاي از نوع Memo ضعيف است. فرمها و پنجره هاي محاوره(درون برنامه), قابليتهاي بهتري براي اين كار فراهم مي كنند.
معمولا در هنگامي كه در يك فيلد از نوع Memo قصد ورود داده اي را داشته باشيم روي آن Zoom مي كنيم براي اين كار كافي از كليدهاي shift+F2 را فشار دهيد.
كاركرد اين پنجره zoom به طرز خاصي تعجب آور است مثلا اگر شما بخواهيد پس از پايان يك پاراگراف در فيلد Memo يك پاراگراف ديگر را شروع به تايپ كنيدبايد به جاي Enter كليدهاي ctrl+Enter را فشار دهيد. تا اكسس نشانگر را به خط جديد ببرد.
اگر براي ورود داده ها از فرم استفاده كنيد فرم قادر خواهد بود تا تمامي فيلد Memo را در يك لحظه نمايش دهد و به شما امكان مي دهد تا به راحتي و بسيار طبيعي تر در فيلد از نوع Memo گردش كنيد.(البته بعدا در مورد فرمها به طور مفصل صحبت خواهيم كرد.)

ورود داده در فيلدي از نوع Data/Time (تاريخ/زمان):

در ورود داده در اين نوع فيلد بايد توجه كنيد كه شما در هنگام ايجاد پايگاه داده براي ورود داده در اين فيلد چه شكلي را انتخاب كرده ايد پس بايد بر اساس همان شكل انتخابي داده ها را وارد كنيد. واضح است كه در اين نوع فيلدها هم تاريخ و هم زمان را مي توانيد وارد كنيد يا يكي را وارد كنيد. براي درج تاريخ سيستمي خود در اين نوع فيلد (يعني تاريخ حال) كافي است دكمه هاي ;+Ctrl را فشار دهيد تا تاريخ موجود در سيستم در فيلد وارد شود.

ورود داده در فيلدي از نوع Yes/No (بلي/خير):

اگر داده اي از نوع Yes/No در جدول خود داشته باشيد به جاي آن يك جعبه انتخابي را خواهيد ديد كه اگر جعبه را انتخاب كنيد در واقع Yes و اگر انتخاب نكنيد در واقع No را برگزيده ايد. براي انتخاب جعبه هاي انتخابي يا بايد از ماوس استفاده كنيد يا اينكه كليد SpaceBar را از صفحه كليد فشار دهيد.

ورود داده در فيلدي از نوع OLE:

اگر بخواهيد داده هاي نرم افزارهاي ديگر را در اكسس ذخيره كنيد (مانند عكس,صوت,فيلم و غيره) بايد داده اي از نوع OLE ايجاد كرده باشيد نحوه ايجاد اين نوع داده در دروس پيش گفته شده است. براي وارد كردن اين نوع داده نمي توانيد از صفحه كليد استفاده كنيد پس بايد روش مخصوصي را طي كنيد. براي قرار دادن شي از نوع OLE ابتدا بايد مكان شي OLE را با استفاده از ماوس در جدول انتخاب كنيد بعد از منو Insert گزينه Object را انتخاب كنيد تا پنجره اي مانند شكل 112 در زير باز شود. اين پنجره راه ورود داده هاي ديگر در اكسس است.

در اين پنجره دو انتخاب وجود دارد يكي استفاده از نرم افزارهاي گوناگون براي ايجاد فايل مورد نظر(Create New) و ديگري استفاده از فايلهايي كه قبلا ايجاد و روي هارد ذخيره شده اند(Create form file). اگر از حالت اول استفاده كنيد يعني قصد داشته باشيد با استفاده از نرم افزاري ديگر اقدام به ايجاد فايل خود كنيد با انتخاب گزينه Create Now از ليست كناري آن نرم افزار مورد نظر خود را انتخاب كنيد و بر روي OK كليك كنيد تا نرم افزار باز شود و شي جديد ايجاد گردد.(مانند استفاده از نرم افزار Photoshop براي ذخيره يك فايل فوتوشاپ در پايگاه داده)
ولي اگر حالت دوم را مورد استفاده قرار مي دهيدهرچند كه پيشنهاد من استفاده از مورد قبل است بايد گزينه Create form file را انتخاب كنيد تا كادري در مقابل شما ايجاد شود. با كليك روي دكمه Browse اقدام به انتخاب فايل موردنظر كنيد. توجه كنيد كه اكسس نمي تواند در حالت نمايشي Datasheet شي از نوع OLE را نمايش دهد و فقط به ذكر يك نام در مورد آن بسنده مي كند مانند Bitmap Image ولي با استفاده از فرمها يا گزارشها مي توان موضوع OLE را نمايش داد.
درس ورود داده ها در جدول هم به پايان رسيد. اميدواريم اين مبحث براي شما مفيد بوده باشد. در درس آتي در مورد جستجو و ديگر موارد لازم در كار با داده ها صحبت خواهيم كرد.

براي ايجاد يك پايگاه داده اكسس چند راه وجود دارد . شما ميتوانيد اين كار را هم از طريق مايكروسافت اكسس و هم از طريق ويژوال بيسيك انجام دهيد . در پايان اين مطلب من به شما ثابت ميكنم كه از اين راحت تر نميشه بانك اطلاعاتي درست كرد حتي اگر اكسس هم بلد نباشيد!

در تمام نسخه هاي ويژوال بيسيك تقريبا به صورت مشابه اين كار انجام ميشود . نسخه 4 ويژوال بيسيك از طريق Data manager و در نسخه هاي بعدي به وسيله Visual Data Manager ميتوان از امكانات پايگاه داده ها استفاده كرد . از آنجا كه من از ويژوال بيسيك 6 استفاده ميكنم بنابراين به بررسي Visual Data Manager مي پردازم .
براي اجراي اين برنامه از منوي Add-Ins گزينه Visual Data Manager را انتخاب كنيد . در صورتي كه براي اولين بار اين برنامه را اجرا كرده باشيد پيغامي در مورد فايل حفاظت System.MD? دريافت خواهيد كرد . براي ادامه No را انتخاب كنيد تا برنامه Vis Data اجرا شود.

خوب حالا ميخواهيم يك پايگاه داده ايجاد كنيم . در ويژوال بيسيك ميتوان از انواع پايگاههاي داده از قبيل قاكس پرو , پاراداكس , درايو ODBC و غيره استفاده كرد و همچنين تمام جداول آنها را ايجاد كرد ولي ما در اينجا فقط ايجاد پايگاه داده استاندارد مايكروسافت كه همان اكسس است را شرح ميدهيم .

1- منوي File | New | Microsoft Access | Version 7.0 MDB را انتخاب كنيد .

2- در قسمت بعد بايد مسير ذخيره سازي و نام اين پايگاه را مشخص كنيم به عنوان مثال براي نام آن MyDatabase را در قسمت نام فايل نوشته و روي دكمه Save كليك ميكنيم . آنگاه برنامه دو پنجره را در اختيار ما قرار ميدهد , يكي Database Windows و ديگري SQL Statement ميباشد .

3- در پنجره Database Windows دكمه راست ماوس را كليك كرده تا منويي روي اين پنجره باز شود از اين منو گزينه New Table را براي ايجاد جدول جديد انتخاب نمائيد .

4- پنجره Table Structure شامل دو قسمت ميباشد كه يكي مربوط به فيلدهاي جدول و ديگري مربوط به ايندكس هاي آن ميباشد.

5- در قسمت Table Name نام جدول مورد نظر را مانند MyTable وارد ميكنيم براي ايجاد فيلدهاي اين جدول بايد دكمه فرمان Add Field را انتخاب كنيم تا پنجره مربوط به آن باز شود.

6- حال تك تك مشخصات فيلد هاي اين جدول از قبيل Name , Type , Size , Variable Field , Fixed Field , allow zero length و غيره را تنظيم ميكنيم

7- بعد از ايجاد فيلد ها اگر بخواهيم به آنها ايندكسي نسبت دهيم در پنجره Table Structure روي دكمه Add index تنظيمات مربوط به ايندكس را نيز انجام ميدهيم .

8- خوب حالا بانك اطلاعاتي ما آماده شد . روي اين جدول در پنجره Database Windows دو بار كليك كنيد تا جدول MyTable نمايش داده شود .

آموزش اکسس (بخش پنجم)

ماجول تاريخ هجري شمسي با توابع جانبي آن
در بانك اطلاعاتي Access فيلدهاي نوع Date پاسخگوي نياز كاربران فارسي كه با تاريخ هجري شمسي كار مي كنند نيست . البته برنامه هايي مثل پارسا ۹۹ تقويم سيستم را به تقويم هجري شمسي تبديل مي كند و بعد از آن كاربران فارسي مي توانند از فيلدهاي نوع Date اكسس استفاده كنند .بدين ترتيب پارسا مشكل تاريخ هجري شمسي را حل ميكند ولي بعضا تاريخ شمسي سيستم بنا به دلايلي از بين ميرود . مثلا اگربعد از نصب پارسا، Officeنصب شود تاريخ هجري شمسي سيستم به هم مي خورد. براي رهايي از وابستگي برنامه هاي شما به پارسا و … ، توابع زير مي تواند مشكل شما را بطور كامل حل كند .
اين ماجول در چندين برنامه تست شده و جواب گرفته است شما هم مي توانيد از آن استفاده كنيد.
(توجه داشته باشيد كه كدهاي نوشته شده ، در اينجا از چپ به راست نمايش داده شده اند ولي با كپي آن در اكسس ، نمايش آن از چپ به راست خواهد شد)در صورت استفاده از اين ماجول ، فيلدهاي از نوع تاريخ را بايد از نوع Number تعريف كنيد. توضيحات بيشتر جهت استفاده از ماجول ، درون خود ماجول نوشته شده است.
براي استفاده از اين ماجول ، از دو خط پايين تر تا انتهاي متن را در حافظه كپي كرده (Copy) و سپس در يك ماجول جديد در اكسس يا VB قرار دهيد (Paste):

‘ 1- تعريف كنيد Number(Long) است را بصورت Date فيلدهايي كه نوع آنها
‘ 2- اين فيلدها را بصورت 00/00/00 تنظيم كنيد InputMask خاصيت
‘ بدليل 6 رقمي در نظر گرفتن فيلد تاريخ ، اين توابع تا سال 1399 كارايي دارد
‘ …
‘ تاريخ جاري سيستم را به هجري شمسي تبديل مي كند Shamsi() تابع
‘ بكار ببريد Now() را مي توانيد در گزارشات بجاي تابع Dat() تابع
‘ :براي جلوگيري از ورود تاريخ غلط به درون يك فيلد بترتيب زير عمل ميكنيد
‘ :بشكل زير بكار ببريد ValidationRule را در خاصيت ValidDate() تابع
‘ ValidDate([نام فيلد])=True
‘ …

‘*******************************************
Public Function Rooz(F_Date As Long) As Byte
‘اين تابع عدد مربوط به روز يك تاريخ را برمگرداند
Rooz = F_Date Mod 100
End Function
‘*******************************************
Function Mah(F_Date As Long) As Byte
‘اين تابع عدد مربوط به ماه يك تاريخ را برمگرداند
Mah = Int((F_Date Mod 10000) / 100)
End Function
‘*******************************************
Public Function Sal(F_Date As Long) As Byte
‘اين تابع عدد مربوط به سال يك تاريخ را برمگرداند
Sal = Int(F_Date / 10000)
End Function
‘*******************************************
Public Function Kabiseh(ByVal OnlySal As Variant) As Byte
‘ورودي تابع عدد دورقمي است
‘اين تابع كبيسه بودن سال را برميگرداند
‘اگر سال كبيسه باشد عدد يك و درغير اينصورت صفر را بر ميگرداند
Kabiseh = 0
If OnlySal >= 75 Then
If (OnlySal – 75) Mod 4 = 0 Then
Kabiseh = 1
Exit Function
End If
ElseIf OnlySal <= 70 Then
If (70 – OnlySal) Mod 4 = 0 Then
Kabiseh = 1
Exit Function
End If
End If

End Function
‘*******************************************
Function ValidDate(F_Date As Long) As Boolean
Dim M, S, R As Byte
‘ اين تابع اعتبار يك عدد ورودي را از نظر تاريخ هجري شمسي بررسي مي كند
‘ را برمي گرداند False واگر نامعتبر باشد True اگر تاريخ معتبر باشد
ValidDate = True
S = Sal(F_Date)
M = Mah(F_Date)
R = Rooz(F_Date)
‘********
If F_Date < 100101 Then
ValidDate = False
Exit Function
End If

If M > 12 Or M = 0 Or R = 0 Then
ValidDate = False
Exit Function
End If

If R > MahDays(S, M) Then
ValidDate = False
Exit Function
End If
End Function
‘*******************************************
Public Function AddDay(ByVal F_Date As Long, ByVal add As Integer) As Long
Dim K, M, S, R, Days As Byte
R = Rooz(F_Date)
M = Mah(F_Date)
S = Sal(F_Date)
K = Kabiseh(S)

‘تبديل روز به عدد 1 جهت ادامه محاسبات و يا اتمام محاسبه
Days = MahDays(S, M)
If add > Days – R Then
add = add – (Days – R + 1)
R = 1
If M < 12 Then
M = M + 1
Else
M = 1
S = S + 1
End If
Else
R = R + add
add = 0
End If

While add > 0
K = Kabiseh(S) ‘كبيسه: 1 و غير كبيسه: 0
Days = MahDays(S, M) ‘تعداد روزهاي ماه فعلي
Select Case add
Case Is < Days
‘اگر تعداد روزهاي افزودني كمتر از يك ماه باشد
R = R + add
add = 0
Case Days To IIf(K = 0, 365, 366) – 1
‘اگر تعداد روزهاي افزودني بيشتر از يك ماه و كمتر از يك سال باشد
add = add – Days
If M < 12 Then
M = M + 1
Else
S = S + 1
M = 1
End If
Case Else
‘اگر تعداد روزهاي افزودني بيشتر از يك سال باشد
S = S + 1
add = add – IIf(K = 0, 365, 366)
End Select
Wend
AddDay = (S * 10000) + (M * 100) + (R)

End Function

‘***********************************************
Public Function Shamsi() As Long
‘تاريخ جاري سيستم را به تاريخ هجري شمسي تبديل مي كند
Dim Shamsi_Mabna As Long
Dim Miladi_mabna As Date
Dim Dif As Long
‘در اينجا 80/10/11 با 2002/01/01 معادل قرارداده شده
Shamsi_Mabna = 791012
Miladi_mabna = #1/1/01#
Dif = DateDiff(“d”, Miladi_mabna, Date)
If Dif < 0 Then
MsgBox “تاريخ جاري سيستم شما نادرست است , آنرا اصلاح كنيد.”
Else
Shamsi = AddDay(Shamsi_Mabna, Dif)
End If
End Function
‘***********************************************
Public Function DayWeek(F_Date As Long) As String
Dim a As String
Dim N As Byte
N = DayWeekNo(F_Date)
Select Case N
Case 0
a = “شنبه”
Case 1
a = “يكشنبه”
Case 2
a = “دوشنبه”
Case 3
a = “سه‌شنبه”
Case 4
a = “چهارشنبه”
Case 5
a = “پنج‌شنبه”
Case 6
a = “جمعه”
End Select
DayWeek = a
End Function

‘***********************************************
Public Function Dat()
Dim D As Long
D = Shamsi
Dat = DayWeek(D) & ” 13″ & Sal(D) & “/” & Mah(D) & “/” & Rooz(D)
End Function

‘***********************************************
Public Function Diff(ByVal FromDate As Long, ByVal To_Date As Long) As Long
‘اين تابع تعداد روزهاي بين دو تاريخ را ارائه مي كند
Dim Tmp As Long
Dim S1, M1, r1, S2, m2, r2 As Integer
Dim Sumation As Single
Dim Flag As Boolean
Flag = False
If FromDate = 0 Or IsNull(FromDate) = True Or To_Date = 0 Or IsNull(To_Date) = True Then
Diff = 0
Exit Function
End If

If FromDate > To_Date Then
‘اگر تاريخ شروع از تاريخ پايان بزرگتر باشد آنها موقتا جابجا مي شوند
Flag = True
Tmp = FromDate
FromDate = To_Date
To_Date = Tmp
End If
r1 = Rooz(FromDate)
M1 = Mah(FromDate)
S1 = Sal(FromDate)
r2 = Rooz(To_Date)
m2 = Mah(To_Date)
S2 = Sal(To_Date)
Sumation = 0

Do While S1 < S2 – 1 Or (S1 = S2 – 1 And (M1 < m2 Or (M1 = m2 And r1 <= r2)))
‘اگر يك سال يا بيشتر اختلاف بود
If Kabiseh((S1)) = 1 Then
If M1 = 12 And r1 = 30 Then
Sumation = Sumation + 365
r1 = 29
Else
Sumation = Sumation + 366
End If
Else
Sumation = Sumation + 365
End If
S1 = S1 + 1
Loop

Do While S1 < S2 Or M1 < m2 – 1 Or (M1 = m2 – 1 And r1 < r2)
‘اگر يك ماه يا بيشتر اختلاف بود
Select Case M1
Case 1 To 6
If M1 = 6 And r1 = 31 Then
Sumation = Sumation + 30
r1 = 30
Else
Sumation = Sumation + 31
End If
M1 = M1 + 1
Case 7 To 11
If M1 = 11 And r1 = 30 And Kabiseh(S1) = 0 Then
Sumation = Sumation + 29
r1 = 29
Else
Sumation = Sumation + 30
End If
M1 = M1 + 1
Case 12
If Kabiseh(S1) = 1 Then
Sumation = Sumation + 30
Else
Sumation = Sumation + 29
End If
S1 = S1 + 1
M1 = 1
End Select
Loop

If M1 = m2 Then
Sumation = Sumation + (r2 – r1)
Else
Select Case M1
Case 1 To 6
Sumation = Sumation + (31 – r1) + r2
Case 7 To 11
Sumation = Sumation + (30 – r1) + r2
Case 12
If Kabiseh(S1) = 1 Then
Sumation = Sumation + (30 – r1) + r2
Else
Sumation = Sumation + (29 – r1) + r2
End If
End Select
End If

If Flag = True Then
Sumation = -Sumation
End If
Diff = Sumation
End Function

Public Function DayWeekNo(F_Date As Long) As String
‘اين تابع يك تاريخ را دريافت كرده و مشخص مي كند چه روزي از هفته است
‘اگر شنبه باشد عدد 0
‘اگر 1شنبه باشد عدد 1
‘……
‘اگر جمعه باشد عدد 6
Dim day As String
Dim Shmsi_Mabna As Long
Dim Dif As Long
‘مبنا 80/10/11
Shmsi_Mabna = 801011
Dif = Diff(Shmsi_Mabna, F_Date)
If Shmsi_Mabna > F_Date Then
Dif = -Dif
End If
‘با توجه به اينكه 80/10/11 3شنبه است محاسبه ميشود day متغير
day = (Dif + 3) Mod 7
If day < 0 Then
DayWeekNo = day + 7
Else
DayWeekNo = day
End If
End Function

Function MahName(ByVal Mah_no As Byte) As String
Select Case Mah_no
Case 1
MahName = “فروردين”
Case 2
MahName = “ارديبهشت”
Case 3
MahName = “خرداد”
Case 4
MahName = “تير”
Case 5
MahName = “مرداد”
Case 6
MahName = “شهريور”
Case 7
MahName = “مهر”
Case 8
MahName = “آبان”
Case 9
MahName = “آذر”
Case 10
MahName = “دي”
Case 11
MahName = “بهمن”
Case 12
MahName = “اسفند”
End Select
End Function

Function SalMah(ByVal F_Date As Long) As Integer
‘چهار رقم اول تاريخ كه معرف سال و ماه است را برمي گرداند
SalMah = Val(Left$(F_Date, 4))
End Function

Function MahDays(ByVal Sal As Byte, ByVal Mah As Byte) As Byte
‘اين تابع تعداد روزهاي يك ماه را برمي گرداند
Select Case Mah
Case 1 To 6
MahDays = 31
Case 7 To 11
MahDays = 30
Case 12
If Kabiseh(Sal) = 1 Then
MahDays = 30
Else
MahDays = 29
End If
End Select

End Function

Function Make_Date(ByVal F_Date As Long) As String
‘يك تاريخ را بصورت يك رشته 10 رقمي با ذكر چهار رقم براي سال ارائه مي كند
Dim D As String
D = Trim(Str(F_Date))
If IsNull(F_Date) = True Or F_Date = 0 Then
Make_Date = “”
Else
Make_Date = “13” & Mid(D, 1, 2) & “/” & Mid(D, 3, 2) & “/” & Mid(D, 5, 2)
End If
End Function

Function NextMah(ByVal Sal_Mah As Integer) As Integer
If (Sal_Mah Mod 100) = 12 Then
NextMah = (Int(Sal_Mah / 100) + 1) * 100 + 1
Else
NextMah = Sal_Mah + 1
End If
End Function

Function PreviousMah(ByVal Sal_Mah As Integer) As Integer
If (Sal_Mah Mod 100) = 1 Then
PreviousMah = (Int(Sal_Mah / 100) – 1) * 100 + 12
Else
PreviousMah = Sal_Mah – 1
End If
End Function

Function SubtractDay(ByVal F_Date As Long, ByVal Subtract As Long) As Long
‘به تعداد روز معيني از يك تاريخ كم كرده و تاريخ حاصله را ارائه ميكند
Dim K, M, S, R, Days As Byte

R = Rooz(F_Date)
M = Mah(F_Date)
S = Sal(F_Date)
K = Kabiseh(S)

‘تبديل روز به عدد 1 جهت ادامه محاسبات و يا اتمام محاسبه
If Subtract >= R – 1 Then
Subtract = Subtract – (R – 1)
R = 1
Else
R = R – Subtract
Subtract = 0
End If

While Subtract > 0
K = Kabiseh(S – 1) ‘كبيسه: 1 و غير كبيسه: 0
Days = MahDays(IIf(M >= 2, S, S – 1), IIf(M >= 2, M – 1, 12)) ‘تعداد روزهاي ماه قبلي
Select Case Subtract
Case Is < Days
‘اگر تعداد روزهاي كاهش كمتر از يك ماه باشد
R = Days – Subtract + 1
Subtract = 0
If M >= 2 Then
M = M – 1
Else
S = S – 1
M = 12
End If
Case Days To IIf(K = 0, 365, 366) – 1
‘اگر تعداد روزهاي كاهش بيشتر از يك ماه و كمتر از يك سال باشد
Subtract = Subtract – Days
If M >= 2 Then
M = M – 1
Else
S = S – 1
M = 12
End If
Case Else
‘اگر تعداد روزهاي كاهش بيشتر از يك سال باشد
S = S – 1
Subtract = Subtract – IIf(K = 0, 365, 366)
End Select
Wend
SubtractDay = (S * 10000) + (M * 100) + (R)

End Function

 Join کردن بيش از ۲ جدول براي Database هاي Access

کتاب ColdFusion MX Bible براي Join کردن بيش از دو جدول يک بانک اطلاعاتي راه حل زير را پيشنهاد مي کند:

SELECT
c.CompanyID,
c.CompanyName,
e.LastName,
e.FirstName,
e.Salary,
d.FullName,
d.RelationShip
FROM
Company c INNER JOIN Employee e
ON c.CompanyID = e.CompanyID
INNER JOIN Dependant d
ON e.SSN = d.SSN

که در بيشتر برنامه هاي Database Server درست عمل مي کند.
اما در بانکهاي اطلاعاتي Microsoft Access پيغام خطايي با توضيح زير مي دهد :

Operator expected

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

SELECT
c.CompanyID,
c.CompanyName,
e.LastName,
e.FirstName,
e.Salary,
d.FullName,
d.RelationShip
FROM
(Company c INNER JOIN Employee e
ON c.CompanyID = e.CompanyID)
INNER JOIN Dependant d
ON e.SSN = d.SSN

و يک نمونه ي ديگر در اتصال ۴ جدول :

SELECT
cfarticle.id,
cfarticle.title,
cfarticle.description,
cfarticle.dateadded,
editorial.authorname as author,
categories.name,
levels.levelname
FROM
((cfarticle INNER JOIN categories ON cfarticle.category=categories.id)
INNER JOIN editorial ON cfarticle.author=editorial.id)
INNER JOIN levels ON cfarticle.skllevel=levels.id

سئوال :

چگونه در اكسس اشياء مخفي (Hidden)  مثل فرمها ، جداول و … را مي توان ديد؟

چواب :

اين گزينه را تيك بزنيد       Tools>Options>view>Show hidden Object

سئوال :

در برنامه هاي كاربردي بهترين روش براي چاپ گزارشات چگونه است ؟

چواب :

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

روش اجراء اين كار در اكسس :

فرم فوق الذكر بايد يك رشته توليد كند كه در حقيقت همان بخش Where يك رشته  Sql است . اين رشته را بايد در آرگومان WhereCondition از دستور OpenReport بكار برد . مثال زير گوياي مطلب است :

Sub Print_Click()

      Dim Str As String

  Str=””

 If Not IsNull(M.ComboCity) Then

  Str=”CityId=”& Me.ComboCity

 Endif

 Docmd.OpenReport “Report1”,acviewNormal,,Str

End Sub

سئوال :

چگونه مي توان شرطهاي يك Query  را به مقدار وارده در تكست باكس يك فرم نسبت داد بگونه اي كه اگر تكست باكس خالي بماند شرطي در Query اعمال نشود؟

جواب :

همانطور كه مي دانيد در حالت عادي براي ارجاع شرط Query  به فرم ،  بايد در Criteria  مربوط به Query عبارتي با اين ساختار بنويسيم : [Forms![FormName]![TextBoxName مثلا: Forms![Form1]![Text1]

اما اين روش شرط گذاري براي حاتي كه تكست باكس خالي باشد شرطي را اعمال مي كند كه باعث مي شود هيچ ركوردي  در نتيجه اجراء Query حاصل نشود و اگر بخواهيم در حالت خالي بودن تكست باكس هيچ شرطي اعمال نشود بايد در Criteria  به اين شكل بنويسيم:

 Forms![Form1]!Text1 Or Forms![Form1]!Text1 Is Null

مقدمه :
بنا به درخواست يكي از خوانندگان اين وبلاگ ، در اين يادداشت تابع مربوط به تبديل عدد به معادل حروفي آن ارائه مي كنم . عمدتا در سيستم هاي مالي و حسابداري نياز است معادل حروفي اعداد هم نمايش داده شده يا چاپ شوند كه توابع زير اين نياز را پاسخ مي دهد. مثلا براي چاپ يك چك روي خود برگه چك ، علاوه بر نياز به چاپ مبلغ عددي چك لازمست تا مبلغ حروفي چك هم روي برگه چاپ شود.

نحوه استفاده از تابع :
تابع Adad كه در زير ارائه شده است يك عدد را بعنوان ورودي گرفته و معادل حروفي آن عدد در زبان فارسي را بعنوان خروجي توليد مي كند. مثلا (Adad(1373 مقدار”يكهزار و سيصد و هفتاد و سه” را بعنوان خروجي توليد مي كند.براي استفاده از اين توابع بايد از چند خط پايين تر (Start of Module) تا انتهاي اين يادداشت را در حافظه كپي (Copy) كرده و در يك ماجول جديد در اكسس يا VB ، Paste كنيد . ( توجه داشته باشيد كه نمايش كدهاي نوشته شده در اينجا راست به چپ است كه پس از كپي كردن آن در ماجول اكسس بشكل صحيح نمايش داده خواهد شد)

‘ *********** Start of Module ***********

‘توابع تبديل عدد به معادل حروفي آن در زبان فارسي
‘برنامه نويس : حميد آزادي اردكاني
‘ويرايش اول : ارديبهشت 1380
‘ پست الكترونيك : azadi1355@yahoo.com
‘ آدرس وب : http://try.persianblog.com

Function Adad(ByVal Number As Double) As String
If Number = 0 Then
Adad = “صفر”
End If
Dim Flag As Boolean
Dim S As String
Dim I, L As Byte
Dim K(1 To 5) As Double

S = Trim(Str(Number))
L = Len(S)
If L > 15 Then
Adad = “بسيار بزرگ”
Exit Function
End If
For I = 1 To 15 – L
S = “0” & S
Next I
For I = 1 To Int((L / 3) + 0.99)
K(5 – I + 1) = Val(Mid(S, 3 * (5 – I) + 1, 3))
Next I
Flag = False
S = “”
For I = 1 To 5
If K(I) <> 0 Then
Select Case I
Case 1
S = S & Three(K(I)) & ” تريليون”
Flag = True
Case 2
S = S & IIf(Flag = True, ” و “, “”) & Three(K(I)) & ” ميليارد”
Flag = True
Case 3
S = S & IIf(Flag = True, ” و “, “”) & Three(K(I)) & ” ميليون”
Flag = True
Case 4
S = S & IIf(Flag = True, ” و “, “”) & Three(K(I)) & ” هزار”
Flag = True
Case 5
S = S & IIf(Flag = True, ” و “, “”) & Three(K(I))
End Select
End If
Next I
Adad = S
End Function

Function Three(ByVal Number As Integer) As String
Dim S As String
Dim I, L As Long
Dim h(1 To 3) As Byte
Dim Flag As Boolean
L = Len(Trim(Str(Number)))
If Number = 0 Then
Three = “”
Exit Function
End If
If Number = 100 Then
Three = “يكصد”
Exit Function
End If

If L = 2 Then h(1) = 0
If L = 1 Then
h(1) = 0
h(2) = 0
End If

For I = 1 To L
h(3 – I + 1) = Mid(Trim(Str(Number)), L – I + 1, 1)
Next I

Select Case h(1)
Case 1
S = “يكصد”
Case 2
S = “دويست”
Case 3
S = “سيصد”
Case 4
S = “چهارصد”
Case 5
S = “پانصد”
Case 6
S = “ششصد”
Case 7
S = “هفتصد”
Case 8
S = “هشتصد”
Case 9
S = “نهصد”
End Select

Select Case h(2)
Case 1
Select Case h(3)
Case 0
S = S & ” و ” & “ده”
Case 1
S = S & ” و ” & “يازده”
Case 2
S = S & ” و ” & “دوازده”
Case 3
S = S & ” و ” & “سيزده”
Case 4
S = S & ” و ” & “چهارده”
Case 5
S = S & ” و ” & “پانزده”
Case 6
S = S & ” و ” & “شانزده”
Case 7
S = S & ” و ” & “هفده”
Case 8
S = S & ” و ” & “هجده”
Case 9
S = S & ” و ” & “نوزده”
End Select

Case 2
S = S & ” و ” & “بيست”
Case 3
S = S & ” و ” & “سي”
Case 4
S = S & ” و ” & “چهل”
Case 5
S = S & ” و ” & “پنجاه”
Case 6
S = S & ” و ” & “شصت”
Case 7
S = S & ” و ” & “هفتاد”
Case 8
S = S & ” و ” & “هشتاد”
Case 9
S = S & ” و ” & “نود”
End Select

If h(2) <> 1 Then
Select Case h(3)
Case 1
S = S & ” و ” & “يك”
Case 2
S = S & ” و ” & “دو”
Case 3
S = S & ” و ” & “سه”
Case 4
S = S & ” و ” & “چهار”
Case 5
S = S & ” و ” & “پنج”
Case 6
S = S & ” و ” & “شش”
Case 7
S = S & ” و ” & “هفت”
Case 8
S = S & ” و ” & “هشت”
Case 9
S = S & ” و ” & “نه”
End Select
End If
S = IIf(L < 3, Right(S, Len(S) – 3), S)
Three = S
End Function

‘ *********** End Of Module ***********

در اين يادداشت روش غيرفعال كردن دكمه Shift به هنگام باز شدن فايلهاي اكسس را توضيح خواهم داد . در ابتدا بايد مقدمه اي را عنوان كنم.

مقدمه
مطلب زير در زمينه افزايش امنيت سيستم ها است. نكته اي كه در زمينه امنيت هر نوع سيستمي بايد به آن توجه داشت اينست كه بطور كلي امنيت يك امر نسبي است .
بعبارت ديگر يك راه حل امنيتي ، قطعا جلوي بسياري از حملات عليه سيستم را خواهد گرفت ولي هيچگاه بطور كامل حملات را خنثي نخواهد كرد و هميشه حفره هاي امنيتي وجود خواهند داشت .
در يادداشت قبل گفتيم كه به هنگام باز شدن فايلهاي اكسس، Startup اجراء مي شود . به كمك گزينه هاي Startup مي توانيم از دسترسي كاربران به محيط طراحي برنامه جلوگيري كنيم . ولي همانطور كه قبلا گفته شد ميكرو سافت با انگيزه ايجاد سيستم امنيتي چند مرحله اي يك روش ضد امنيتي براي آن ايجاد كرده است و كاربران برنامه ما مي توانند با پايين نگه داشتن دكمه Shift از اجراء Startup جلوگيري كنند و وارد محيط طراحي شوند . حال اگر بخواهيم دكمه شيفت را غير فعال كنيم تا كسي نتواند وارد محيط طراحي شود بايد به اين طريق عمل كرد :

استفاده از خاصيت AllowByPassKey
خاصيت AllowByPassKey يكي از خواص شيء Database است كه:
اگر مقدار آن True باشد دكمه شيفت فعال است .
و اگر مقدار آن False باشد دكمه شيفت غير فعال است .

اين خاصيت عملا در ليست خواص يك Database نيست و بايد آنرا فقط براي اولين بار ايجاد (Create) كرد . بعد از ايجاد آن مي توان مقدار آنرا False يا True كرد .

تذكر : حتما يك كپي از فايل خودتان قبل از اجراء اين برنامه برداريد چون ممكن است ديگر نتوانيد وارد محيط برنامه خودتان شويد . من هم با عرض معذرت وقت پاسخگويي به ايميل هاي دوستان را ندارم و دچار مشكل خواهيد شد.

سه دكمه روي يك فرم مطابق شكل بالا ايجاد كنيد و كدهاي زير را در آن بنويسد.
(نمايش كدهاي نوشته شده مناسب نيست ولي اگر آنرا در حافظه كپي كنيد و در ماجول فرمتان كپي كند بدرستي تمايش داده مي شود .)

‘براي اولين دفعه :
Private Sub Create_Click()
On Error GoTo Er

Dim db As Database
Dim prp As Property
Set db = CurrentDb
Set prp = db.CreateProperty(“allowbypasskey”, dbBoolean, False)
db.Properties.Append prp
db.Close

Ex:
Exit Sub
Er:
If Err.Number = 3367 Then
MsgBox “اين خاصيت ايجاد شده و لازم نيست مجددا ايجاد شود”
End If
Resume Ex

End Sub

‘جهت غير فعال كردن شيفت
Private Sub ShiftNo_Click()
Dim db As Database
Set db = CurrentDb
db.Properties(“allowbypasskey”) = False
db.Close
End Sub

‘جهت فعال كردن شيفت
Private Sub ShiftOk_Click()
Dim db As Database
Set db = CurrentDb
db.Properties(“allowbypasskey”) = True
db.Close
End Sub

روشهاي ضد امنيتي ديگري هم هست كه همين خاصيت توسط كاربران برنامه تغيير داده شود.
اميدوارم مفيد واقع شده باشد.
ما اصل مطلب :
يكي از دوستان وبلاگي من پرسيده بود چطوري پيغام Error مربوط به ورود ركورد تكراري را در اكسس فارسي كنيم . ترجيح دادم جواب كاملي براي سئوال ايشون بدم تا همه استفاده كنن. بنابراين ابتدا جواب ايشون رو ميدم و بعد از اون بطور كاملتر براي همه وبلاگي هاي عزيز روش كنترل خطا را تشريح مي كنم .

(توجه داشته باشيد كه در زير كدهاي نوشته شده از راست به چپ نمايش داده مي شوند)

جواب دوست ما:
در رويداد OnError مربوط به فرم ورود اطلاعات اين كد را مي نويسيم:

If DataErr = 3022 Then
MsgBox “اطلاعات وارده تكراري است”
Response = acDataErrContinue
End If

جواب كلي :
اساسا ، هر خطا در اكسس يا VB يك كد توليد مي كند . برنامه نويسان بايد يك بانك اطلاعات از كد خطاهايي كه رخ مي دهد داشته باشند تا بتوانند با چك كردن شماره خطا پيغام فارسي مناسب آن خطا را صادر كنند .

بطور كلي دو روش كنترل خطا از اين قرارند:

1- اگر خطا مربوط به كل فرم باشد بايد از طريق رويداد OnError فرم كنترل شود .
معمولا خطاهايي كه مربوط به كدنويسي ما نبوده و صرفا توسط اكسس و در واكنش به اشتباهات كاربر صادر مي شود در اين رويداد كنترل مي شود . در اين رويداد ، پارامتر DataErr حاوي كد خطاست. (بعبارت واضح تر اگر مي خواهيد كد مربوط به هر Error را شناسايي كنيد مي توانيد اين دستور در رويداد OnError فرم بنويسيد: MsgBox DataErr )

بطور كلي بعد از اينكه كد خطاها را شناسايي كرديد با نوشتن قالب برنامه زير در رويداد OnError فرم مي توانيد خطاها را كنترل كنيد :

Dim Str as String

Select Case DataErr
Case 3022
Str=”اطلاعات وارده تكراري است”
Case 2237
Str = “اطلاعات وارده در ليست وجود ندارد”
‘خط فوق براي مواردي است كه يك مقداري كه در كمبو باكس وجود ندارد ، تايپ شده باشد
Case …
Str=…
….
End Select

Msgbox Str
Response = acDataErrContinue

2- اگر خطا مربوط به كدهايي باشد كه خودمان در يك Sub نوشته ايم :
در اين روش بايد در ابتداي Sub با دستور : <اسم زير روال كنترل خطا> On Error Goto ، كنترل خطا را به يك روال كنترل خطا ارجاع دهيم.
( تمام كدهايي كه ويزارد Command Button بطور خودكار در رويداد OnClick دكمه ها ايجاد مي كند نمونه خوبي براي اين روش هستند. ضمنا در اين روش بكمك Err.Number كد خطا شناسايي مي شود )

موفق باشيد
اگر نوشته هاي اين وبلاگ به كارتان آمد ، نظر و پيشنهاد بدين يا لااقل يك امضاء بزنيد تا از بازديد شما مطلع شويم .
با تشكر.

در بانك اطلاعاتي Access فيلدهاي نوع Date پاسخگوي نياز كاربران فارسي كه با تاريخ هجري شمسي كار مي كنند نيست . البته برنامه هايي مثل پارسا ۹۹ تقويم سيستم را به تقويم هجري شمسي تبديل مي كند و بعد از آن كاربران فارسي مي توانند از فيلدهاي نوع Date اكسس استفاده كنند .بدين ترتيب پارسا مشكل تاريخ هجري شمسي را حل ميكند ولي بعضا تاريخ شمسي سيستم بنا به دلايلي از بين ميرود . مثلا اگربعد از نصب پارسا، Officeنصب شود تاريخ هجري شمسي سيستم به هم مي خورد. براي رهايي از وابستگي برنامه هاي شما به پارسا و … ، توابع زير مي تواند مشكل شما را بطور كامل حل كند .
اين ماجول در چندين برنامه تست شده و جواب گرفته است شما هم مي توانيد از آن استفاده كنيد.
(توجه داشته باشيد كه كدهاي نوشته شده ، در اينجا از چپ به راست نمايش داده شده اند ولي با كپي آن در اكسس ، نمايش آن از چپ به راست خواهد شد)

در صورت استفاده از اين ماجول ، فيلدهاي از نوع تاريخ را بايد از نوع Number تعريف كنيد. توضيحات بيشتر جهت استفاده از ماجول ، درون خود ماجول نوشته شده است.
براي استفاده از اين ماجول ، از دو خط پايين تر تا انتهاي متن را در حافظه كپي كرده (Copy) و سپس در يك ماجول جديد در اكسس يا VB قرار دهيد (Paste):

‘ 1- تعريف كنيد Number(Long) است را بصورت Date فيلدهايي كه نوع آنها
‘ 2- اين فيلدها را بصورت 00/00/00 تنظيم كنيد InputMask خاصيت
‘ بدليل 6 رقمي در نظر گرفتن فيلد تاريخ ، اين توابع تا سال 1399 كارايي دارد
‘ …
‘ تاريخ جاري سيستم را به هجري شمسي تبديل مي كند Shamsi() تابع
‘ بكار ببريد Now() را مي توانيد در گزارشات بجاي تابع Dat() تابع
‘ :براي جلوگيري از ورود تاريخ غلط به درون يك فيلد بترتيب زير عمل ميكنيد
‘ :بشكل زير بكار ببريد ValidationRule را در خاصيت ValidDate() تابع
‘ ValidDate([نام فيلد])=True

‘*******************************************
Public Function Rooz(F_Date As Long) As Byte
‘اين تابع عدد مربوط به روز يك تاريخ را برمگرداند
Rooz = F_Date Mod 100
End Function
‘*******************************************
Function Mah(F_Date As Long) As Byte
‘اين تابع عدد مربوط به ماه يك تاريخ را برمگرداند
Mah = Int((F_Date Mod 10000) / 100)
End Function
‘*******************************************
Public Function Sal(F_Date As Long) As Byte
‘اين تابع عدد مربوط به سال يك تاريخ را برمگرداند
Sal = Int(F_Date / 10000)
End Function
‘*******************************************
Public Function Kabiseh(ByVal OnlySal As Variant) As Byte
‘ورودي تابع عدد دورقمي است
‘اين تابع كبيسه بودن سال را برميگرداند
‘اگر سال كبيسه باشد عدد يك و درغير اينصورت صفر را بر ميگرداند
Kabiseh = 0
If OnlySal >= 75 Then
If (OnlySal – 75) Mod 4 = 0 Then
Kabiseh = 1
Exit Function
End If
ElseIf OnlySal <= 70 Then
If (70 – OnlySal) Mod 4 = 0 Then
Kabiseh = 1
Exit Function
End If
End If

End Function
‘*******************************************
Function ValidDate(F_Date As Long) As Boolean
Dim M, S, R As Byte
‘ اين تابع اعتبار يك عدد ورودي را از نظر تاريخ هجري شمسي بررسي مي كند
‘ را برمي گرداند False واگر نامعتبر باشد True اگر تاريخ معتبر باشد
ValidDate = True
S = Sal(F_Date)
M = Mah(F_Date)
R = Rooz(F_Date)
‘********
If F_Date < 100101 Then
ValidDate = False
Exit Function
End If

If M > 12 Or M = 0 Or R = 0 Then
ValidDate = False
Exit Function
End If

If R > MahDays(S, M) Then
ValidDate = False
Exit Function
End If
End Function
‘*******************************************
Public Function AddDay(ByVal F_Date As Long, ByVal add As Integer) As Long
Dim K, M, S, R, Days As Byte
R = Rooz(F_Date)
M = Mah(F_Date)
S = Sal(F_Date)
K = Kabiseh(S)

‘تبديل روز به عدد 1 جهت ادامه محاسبات و يا اتمام محاسبه
Days = MahDays(S, M)
If add > Days – R Then
add = add – (Days – R + 1)
R = 1
If M < 12 Then
M = M + 1
Else
M = 1
S = S + 1
End If
Else
R = R + add
add = 0
End If

While add > 0
K = Kabiseh(S) ‘كبيسه: 1 و غير كبيسه: 0
Days = MahDays(S, M) ‘تعداد روزهاي ماه فعلي
Select Case add
Case Is < Days
‘اگر تعداد روزهاي افزودني كمتر از يك ماه باشد
R = R + add
add = 0
Case Days To IIf(K = 0, 365, 366) – 1
‘اگر تعداد روزهاي افزودني بيشتر از يك ماه و كمتر از يك سال باشد
add = add – Days
If M < 12 Then
M = M + 1
Else
S = S + 1
M = 1
End If
Case Else
‘اگر تعداد روزهاي افزودني بيشتر از يك سال باشد
S = S + 1
add = add – IIf(K = 0, 365, 366)
End Select
Wend
AddDay = (S * 10000) + (M * 100) + (R)

End Function

‘***********************************************
Public Function Shamsi() As Long
‘تاريخ جاري سيستم را به تاريخ هجري شمسي تبديل مي كند
Dim Shamsi_Mabna As Long
Dim Miladi_mabna As Date
Dim Dif As Long
‘در اينجا 80/10/11 با 2002/01/01 معادل قرارداده شده
Shamsi_Mabna = 791012
Miladi_mabna = #1/1/01#
Dif = DateDiff(“d”, Miladi_mabna, Date)
If Dif < 0 Then
MsgBox “تاريخ جاري سيستم شما نادرست است , آنرا اصلاح كنيد.”
Else
Shamsi = AddDay(Shamsi_Mabna, Dif)
End If
End Function
‘***********************************************
Public Function DayWeek(F_Date As Long) As String
Dim a As String
Dim N As Byte
N = DayWeekNo(F_Date)
Select Case N
Case 0
a = “شنبه”
Case 1
a = “يكشنبه”
Case 2
a = “دوشنبه”
Case 3
a = “سه‌شنبه”
Case 4
a = “چهارشنبه”
Case 5
a = “پنج‌شنبه”
Case 6
a = “جمعه”
End Select
DayWeek = a
End Function

‘***********************************************
Public Function Dat()
Dim D As Long
D = Shamsi
Dat = DayWeek(D) & ” 13″ & Sal(D) & “/” & Mah(D) & “/” & Rooz(D)
End Function

‘***********************************************
Public Function Diff(ByVal FromDate As Long, ByVal To_Date As Long) As Long
‘اين تابع تعداد روزهاي بين دو تاريخ را ارائه مي كند
Dim Tmp As Long
Dim S1, M1, r1, S2, m2, r2 As Integer
Dim Sumation As Single
Dim Flag As Boolean
Flag = False
If FromDate = 0 Or IsNull(FromDate) = True Or To_Date = 0 Or IsNull(To_Date) = True Then
Diff = 0
Exit Function
End If

If FromDate > To_Date Then
‘اگر تاريخ شروع از تاريخ پايان بزرگتر باشد آنها موقتا جابجا مي شوند
Flag = True
Tmp = FromDate
FromDate = To_Date
To_Date = Tmp
End If
r1 = Rooz(FromDate)
M1 = Mah(FromDate)
S1 = Sal(FromDate)
r2 = Rooz(To_Date)
m2 = Mah(To_Date)
S2 = Sal(To_Date)
Sumation = 0

Do While S1 < S2 – 1 Or (S1 = S2 – 1 And (M1 < m2 Or (M1 = m2 And r1 <= r2)))
‘اگر يك سال يا بيشتر اختلاف بود
If Kabiseh((S1)) = 1 Then
If M1 = 12 And r1 = 30 Then
Sumation = Sumation + 365
r1 = 29
Else
Sumation = Sumation + 366
End If
Else
Sumation = Sumation + 365
End If
S1 = S1 + 1
Loop

Do While S1 < S2 Or M1 < m2 – 1 Or (M1 = m2 – 1 And r1 < r2)
‘اگر يك ماه يا بيشتر اختلاف بود
Select Case M1
Case 1 To 6
If M1 = 6 And r1 = 31 Then
Sumation = Sumation + 30
r1 = 30
Else
Sumation = Sumation + 31
End If
M1 = M1 + 1
Case 7 To 11
If M1 = 11 And r1 = 30 And Kabiseh(S1) = 0 Then
Sumation = Sumation + 29
r1 = 29
Else
Sumation = Sumation + 30
End If
M1 = M1 + 1
Case 12
If Kabiseh(S1) = 1 Then
Sumation = Sumation + 30
Else
Sumation = Sumation + 29
End If
S1 = S1 + 1
M1 = 1
End Select
Loop

If M1 = m2 Then
Sumation = Sumation + (r2 – r1)
Else
Select Case M1
Case 1 To 6
Sumation = Sumation + (31 – r1) + r2
Case 7 To 11
Sumation = Sumation + (30 – r1) + r2
Case 12
If Kabiseh(S1) = 1 Then
Sumation = Sumation + (30 – r1) + r2
Else
Sumation = Sumation + (29 – r1) + r2
End If
End Select
End If

If Flag = True Then
Sumation = -Sumation
End If
Diff = Sumation
End Function

Public Function DayWeekNo(F_Date As Long) As String
‘اين تابع يك تاريخ را دريافت كرده و مشخص مي كند چه روزي از هفته است
‘اگر شنبه باشد عدد 0
‘اگر 1شنبه باشد عدد 1
‘……
‘اگر جمعه باشد عدد 6
Dim day As String
Dim Shmsi_Mabna As Long
Dim Dif As Long
‘مبنا 80/10/11
Shmsi_Mabna = 801011
Dif = Diff(Shmsi_Mabna, F_Date)
If Shmsi_Mabna > F_Date Then
Dif = -Dif
End If
‘با توجه به اينكه 80/10/11 3شنبه است محاسبه ميشود day متغير
day = (Dif + 3) Mod 7
If day < 0 Then
DayWeekNo = day + 7
Else
DayWeekNo = day
End If
End Function

Function MahName(ByVal Mah_no As Byte) As String
Select Case Mah_no
Case 1
MahName = “فروردين”
Case 2
MahName = “ارديبهشت”
Case 3
MahName = “خرداد”
Case 4
MahName = “تير”
Case 5
MahName = “مرداد”
Case 6
MahName = “شهريور”
Case 7
MahName = “مهر”
Case 8
MahName = “آبان”
Case 9
MahName = “آذر”
Case 10
MahName = “دي”
Case 11
MahName = “بهمن”
Case 12
MahName = “اسفند”
End Select
End Function

Function SalMah(ByVal F_Date As Long) As Integer
‘چهار رقم اول تاريخ كه معرف سال و ماه است را برمي گرداند
SalMah = Val(Left$(F_Date, 4))
End Function

Function MahDays(ByVal Sal As Byte, ByVal Mah As Byte) As Byte
‘اين تابع تعداد روزهاي يك ماه را برمي گرداند
Select Case Mah
Case 1 To 6
MahDays = 31
Case 7 To 11
MahDays = 30
Case 12
If Kabiseh(Sal) = 1 Then
MahDays = 30
Else
MahDays = 29
End If
End Select

End Function

Function Make_Date(ByVal F_Date As Long) As String
‘يك تاريخ را بصورت يك رشته 10 رقمي با ذكر چهار رقم براي سال ارائه مي كند
Dim D As String
D = Trim(Str(F_Date))
If IsNull(F_Date) = True Or F_Date = 0 Then
Make_Date = “”
Else
Make_Date = “13” & Mid(D, 1, 2) & “/” & Mid(D, 3, 2) & “/” & Mid(D, 5, 2)
End If
End Function

Function NextMah(ByVal Sal_Mah As Integer) As Integer
If (Sal_Mah Mod 100) = 12 Then
NextMah = (Int(Sal_Mah / 100) + 1) * 100 + 1
Else
NextMah = Sal_Mah + 1
End If
End Function

Function PreviousMah(ByVal Sal_Mah As Integer) As Integer
If (Sal_Mah Mod 100) = 1 Then
PreviousMah = (Int(Sal_Mah / 100) – 1) * 100 + 12
Else
PreviousMah = Sal_Mah – 1
End If
End Function

Function SubtractDay(ByVal F_Date As Long, ByVal Subtract As Long) As Long
‘به تعداد روز معيني از يك تاريخ كم كرده و تاريخ حاصله را ارائه ميكند
Dim K, M, S, R, Days As Byte

R = Rooz(F_Date)
M = Mah(F_Date)
S = Sal(F_Date)
K = Kabiseh(S)

‘تبديل روز به عدد 1 جهت ادامه محاسبات و يا اتمام محاسبه
If Subtract >= R – 1 Then
Subtract = Subtract – (R – 1)
R = 1
Else
R = R – Subtract
Subtract = 0
End If

While Subtract > 0
K = Kabiseh(S – 1) ‘كبيسه: 1 و غير كبيسه: 0
Days = MahDays(IIf(M >= 2, S, S – 1), IIf(M >= 2, M – 1, 12)) ‘تعداد روزهاي ماه قبلي
Select Case Subtract
Case Is < Days
‘اگر تعداد روزهاي كاهش كمتر از يك ماه باشد
R = Days – Subtract + 1
Subtract = 0
If M >= 2 Then
M = M – 1
Else
S = S – 1
M = 12
End If
Case Days To IIf(K = 0, 365, 366) – 1
‘اگر تعداد روزهاي كاهش بيشتر از يك ماه و كمتر از يك سال باشد
Subtract = Subtract – Days
If M >= 2 Then
M = M – 1
Else
S = S – 1
M = 12
End If
Case Else
‘اگر تعداد روزهاي كاهش بيشتر از يك سال باشد
S = S – 1
Subtract = Subtract – IIf(K = 0, 365, 366)
End Select
Wend
SubtractDay = (S * 10000) + (M * 100) + (R)

End Function

افزودن ستونهاي جديد به جداول موجود

* بدست آوردن درك كلي از اينكه هدف از ايجاد هر جدول و هر ستون چه مي باشد

* ايجاد تغييرات برروي بانك اطلاعاتي بدون نياز به ايجاد تغييرات وسيع برروي صفحات

براي اطمينان از طراحي بانك اطلاعاتي با كيفيت بالاتر, تعدادي تكنيك هاي حرفه اي وجود دارند كه به وسيله توسعه دهندگان بانك اطلاعاتي مورد استفاده قرار مي گيرند. اولين و مهمترين تكنيك, نرمال سازي بانك اطلاعاتي مي باشد. اين تكنيك در بخش “نرمال سازي بانك اطلاعاتي” مورد بحث قرار مي گيرد. نرمال سازي بانك اطلاعاتي به شما و ديگران اجازه مي دهد كه ستونهاي جديدي را اضافه نماييد و جدول را با سادگي هرچه بيشتر بسازيد. همچنين, هنگام مشاهده بانك اطلاعاتي ديگران, نرمال سازي باعث سادگي تفسير و درك آن بانك هاي اطلاعاتي مي گردد.

يك تكنيك مشابه با نرمال سازي كه مورد استفاده قرار مي گيرد تكنيك جداول مرجع (Lookup Tables) مي باشد. فرض كنيد كه شما يك جدول با يك ستون داريد كه مي توانيد آن را فقط برابر يك مقدار از پيش تعيين شده قرار دهيد. براي مثال, شما ممكن است كاربراني داشته باشيد كه فرمي را برروي سايت وب شما پر مي نمايند. شما مايليد كه اين اطلاعات را در داخل جدول بانك اطلاعاتي ذخيره نماييد. اگر, در داخل فرم, از كاربران پرسيده باشيد كه چگونه با سايت وب تان آشنايي پيدا كرده اند, يك ليست از انتخابها را در اختيار آنها قرار مي دهيد كه مي توانند در داخل آن ليست گزينه دلخواه خود را انتخاب نمايند. چنين گزينه هايي ممكن است شامل, From a Search Engine يا From a Friend باشند. در موارد ديگر, گزينه هايي كه كاربران ممكن است انتخاب نمايند, محدود شده است, و اغلب, انواعي از سئوالات مي باشد كه با استفاده از يكList Box از آنها پرسيده مي شود.

از آنجايي كه شما پاسخهاي كاربران را در داخل يك جدول ذخيره مي كنيد, يكي از ستونهاي جدول بايد مقداري كه تعيين مي نمايد كه چگونه كاربران با سايت وب شما آشنا شده اند را ذخيره نمايد. براي يك لحظه فكر كنيد كه چه چيزي را بايد در اين ستون ذخيره نماييد؟ يك روش ذخيره گزينه اي كه كاربران انتخاب كرده اند به صورت يك رشته مي باشد. بنابراين, اگر يك كاربر در مورد سايت شما از طريق يك موتور جستجو مطالبي را شنيده باشد, رشته From a Search Engine در داخل ستون قرار داده مي شود. اين راه حل داراي محدوديتهايي مي باشد, براي مثال, در صورتي كه شما بخواهيد گزينه ها را دستكاري نماييد, و گزينه هاي جديد را اضافه نماييد, يا گزينه هاي موجود را حذف نماييد چه كار مي كنيد؟

يك راه حل قدرتمندتر استفاده از جداول مرجع مي باشد. بحث در مورد جداول مرجع و اينكه چگونه مي توانند مورد استفاده قرار گيرند در بخش “استفاده از جداول مرجع” آورده شده است. تكنيك مرسوم ديگري كه بانك اطلاعاتي شما را قابل فهم تر مي نمايد, استفاده از آداب نامگذاري (Naming Conventions) مي باشد. يك بانك اطلاعاتي كه شامل ستونها و جداولي است كه به صورت منطقي نامگذاري شده اند, خواناتر از بانك اطلاعاتي مي باشد كه داراي نامهاي بي معني مي باشد. فرض كنيد كه شما بايد يك جدولي بسازيد كه شامل ليست مشتريانتان مي باشد. خوشايندتر است كه نام جدول را tblcustomers قرار دهيد و نام ستونهاي اين جدول را First Name,Last Name, Age و ساير اطلاعات ديگر قرار دهيد. با چنين نامهايي ستونها و جداول, فهم اطلاعاتي را كه جدول نگهداري مي نمايد و اينكه چه اطلاعاتي در هر ستون قرار دارد آسانتر مي گردد. آيا اگر نام جدول را T1 و ستونهاي آن را C1 و C2 تا CN نامگذاري نماييم فهم آن آسانتر مي باشد؟ هر شخصي به غير از شما, كه سازنده اين جدول مي باشيد, هنگام نگاه كردن در تعاريف اي جدول دچار سردرگمي خواهد شد. توصيه هايي در رابطه با آداب صحيح نامگذاري در بخش “آداب نامگذاري” گفته خواهد شد.

مشكل رايج هنگام طراحي نرم افزارهاي بانك اطلاعاتي آن است هنگامي كه طراحي بانك اطلاعاتي تغيير مي كند, اعمال تغييرات زيادي در صفحات اي كه مسئول نمايش, به روزرساني, درج و حذف اطلاعات بانك اطلاعاتي هستند, ضروري مي باشند. اگرچه قطعاً غيرممكن است كه وقتي شما طراحي بانك اطلاعاتي را تغيير مي دهيد, مجبور به ايجاد تغييراتي در صفحات نباشيد, اما اقداماتي را مي توانيد انجام دهيد تا تعداد تغييرات موردنياز را به حداقل برسانيد. با استفاده از پروسيجرهاي ذخيره شده شما مي توانيد يك سطح تجرد بين پرس و جوهاي بانك اطلاعاتي و صفحات اي كه پردازش اطلاعات حاصل از اين پرس و جوها را انجام مي دهند ايجاد نماييد

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

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

نظر خود را بگذارید

-- بارگیری کد امنیتی --