بسم الله
مکانیزه کردن انبار کارخانه صنعتی
استاد راهنما
نگارش
عنوان : مکانیزه کردن انبار کارخانه صنعتی
چکیده برنامه :
مکانیزه کردن انبار یک کارخانه برای آسان تر و سریع ترشدن سطح دسترسی انبار دار به اطلاعات انبار میباشد .
این برنامه این امکان را برای انبار دار فراهم آورده تا انبار دار با زدن چند کلید از آخرین موجودی انبار و خروجی و ورودی انبار و همچنین موقعیت یک مرسوله ( از نظر تاریخ ورودی و تاریخ خروجی آن ) با خبر شود .
می باشد و اطلاعات ثبت شده در بانک اطلاعات Vb.net محیط برنامه نویسی این پروژه SQL Server 2000 ( که این بانک از امنیت بالایی برای حفاظت اطلاعات را دارا میباشد )
ذخیره می شود .
این برنامه دسترسی ما به ورود کالا ، خروج کالا ، موجودی ،مرجوعی و جستجو را علاوه بر منوی بالا توسط کلید های میان بر راحت تر میکند و با کلیک بر روی آیکونهای فوق اطلاعات آن سریعا به نمایش در می آید .
برنامه تنها با وجود دو جدول اطلاعات ، موجودی و مشتری اطلاعات را ذخیره و بازیابی میکند و این امر باعث کم حجم تر شدن برنامه و درنتیجه سرعت بالاتر آن شد .
از جمله قابلیت های این برنامه می توان به جستجو بین دو بازه زمانی (جستجو پیشرفته)وچاپ آن از طریق پرینتر (کریستال ریپرت) که این قابلیت به کاربر این امکان را می دهد که در کوتاه ترین زمان ممکن اطلاعات را به صورت کتبی در اختیار داشته باشد .
سپاس گذاری
برخود لازم می بینم از زحمات و پشتیبانی های استاد ارجمند جناب مهندس شکوه صارمی همچنین مدیریت محترم گروه کامپیوتر جناب آقای مهندس شیبانی واعضای محترم هیئت علمی سرکار خانم مهندس فاطمی پور و سایر همکاران و اساتید محترم کمال تشکر و قدردانی را بنمایم .
فهرست مطالب
فصل عنوان صفحه
مقدمه ای بر Vb.net
مقدمه ای بر Sql server 2000
فصل اول فرم اصلی برنامه
1 – 1 فرم موجودی
1 – 2 فرم ورود کالا
1 – 3 فرم خروج کالا
1 – 4 فرم کالای مرجوعی
1 – 5 فرم جستجو ساده
1 – 6 فرم جستجو پیشرفته
1 – 7 منابع
فصل دوم جداول اطلاعات
1 – 1 جدول موجودی کالا
1 – 2 جدول مشتری
مقدمه ای برVb.net
یک برنامه کامپیوتری ، از مجموعه ای دستورالعمل که نوع و نحوه انجام یک فعالیت را برای کامپیوتر مشخص می نمایند ، تشکیل می گردد. دستورالعمل های نوشته شده بعنوان نمونه ممکن است به کامپیوتر اعلام نمایند که تعدادی از اعداد را با یکدیگر جمع و یا دو عدد را بایکدیگر مقایسه و بر اساس نتیجه بدست آمده ، اتخاذ تصمیم نماید. دستورالعمل های نوشته شده ، صرفا" برای کامپیوتر قابل فهم و اجراء خواهند بود.کامپیوتر دستورالعمل های نوشته شده را اجراء و ماحصل آن رسیدن به اهدافی خواهد بود که بر اساس آن برنامه طراحی و پیاده سازی شده است . دستورالعمل ها ، می بایست با استفاده از یکی از زبانها ی برنامه نویسی نوشته شده ( کد ینگ ) و در ادامه در اختیار کامپیوتر قرار داده شوند. زبانهای برنامه نویسی متعددی نظیر : فرترن ، بیسیک ، کوبال ، پاسکال، ،C ، جاوا ، ویژوال بیسیک و … وجود دارد.
برنامه نویسی کامپیوتر ، مشابه آموزش گره زدن کفش به کودکان است . برای نیل به هدف فوق ، می بایست تمامی مراحل لازم بصورت شفاف به کودکان آموزش داده شود . کودکان با دنبال نمودن دستورالعمل های ارائه شده ، قادر به گره زدن کفش خود خواهند بود ( روش انجام این کار برای آنان مشخص شده و بر اساس آن ، امکان نیل به هدف مورد نظر توسط کودکان فراهم می گردد ) . VB.NET ، زبانی است که می توا ن نحوه نیل به یک خواسته را بکمک آن بصورت شفاف ( نظیر آموزش گره زدن کفش به کودکان ) مشخص و کامپیوتر با دنبال نمودن مراحل مشخص شده ، خواسته مورد نظر را محقق نماید. با استفاده از VB.NET ، می توان محصولاتی راایجاد که زمینه استفاده از آنان در محیط ویندوز و اینترنت ، وجود خواهد داشت . فراموش نکنیم در زمان فراگیری یک تکنولوژی در ابتدا می بایست شیوه راه رفتن را بیاموزیم و در ادامه اقدام به دویدن نمود .
VB.NET یکی از زبان های حمایت شده در دات نت می باشد . با استفاده از زبان فوق علاوه بر اینکه می توان برنامه های مبتنی بر ویندوز را پیاده سازی نمود ، امکان استفاده از آن بعنوان زبان مورد نظر در زمان ایجاد برنامه های مبتنی بر وب که از تکنولوژی ASP.NET استفاده می نمایند ، نیز وجود خواهد داشت . با توجه به اهمیت و جایگاه خاص این زبان در دات نت ، مجموعه مقالاتی در رابطه با آموزش اصولی این زبان آماده شده که بتدریج بر روی سایت قرار خواهند گرفت . در اولین مقاله از این مجموعه به معرفی اولیه VB.NET خواهیم پرداخت . در ابتدا لازم است با ویژگی های منحصر بفرد برنامه های مبتنی بر ویندوز در قیاس با برنامه های مبتنی بر DOS ، آشنا شده و پس از مروری مختصر به روند شکل گیری نسخه های متعدد ویژوال بیسیک ، با نحوه نصب آن نیز آشنا شویم .
برنامه نویسی مبتنی بر DOS در مقابل ویندوز
برنامه نویسی مبتنی بر ویندوز دارای تفاوت های عمده ای نسبت به برنامه نویسی سنتی در محیط DOS است.برنامه های DOS ، مسیری دقیق و مشخص را ازابتدا تا پایان دنبال می نمایند . رویکرد فوق ، باعث بروز محدودیت هائی در رابطه با عملکرد برنامه ها از یکطرف و تحمیل محدودیت هائی به کاربران در طی نمودن مسیر مشخص شده ، می گردد. از زاویه ای خاص می توان عملکرد یک برنامه مبتنی بر DOS را مشابه قدم زدن در یک راهرو ( سالن )، در نظر گرفت . بمنظور رسیدن به نقطه انتهائی سالن ، می بایست طول سالن طی تا به انتهای آن رسید . در این راستا از موانع متعدد موجود در مسیر ، می بایست عبور تا سرانجام به مقصد مورد نظر رسید . در زمان پیمودن مسیر ، صرفا" امکان بازنمودن درب های خاصی ، وجود خواهد داشت . ویندوز ، دنیای جدیدی از برنامه نویسی مبتنی بر "رویداد" را ایجاد نموده است . کلیک نمودن موس ، تغییر اندازه پنجره ، تغییر محتویات یک Textbox ، نمونه هائی از یک "رویداد" می باشند. کدهای نوشته شده ، نحوه برخورد با یک رویداد را مشخص می نماید. برای رسیدن به انتهای یک سالن کافی است بر روی "انتهای سالن " ، کلیک نمود و دیگر ضرورتی به پیمودن تمامی مسیر تا رسیدن به انتهای سالن نخواهد بود . درصورتیکه به انتهای سالن رسیده باشیم و متوجه گردیم که این مکان ، محلی نیست که انتظار آن را داشته ایم ، بسادگی می توان مقصد جدیدی را برای خود انتخاب ، بدون اینکه ضرورتی به برگشت در نقطه آغازین مسیر وجود داشته باشد. برنامه نوشته شده عکس العمل های لازم در ارتباط با حرکت شما را بهمراه عملیات مربوطه بمنظور تکمیل فعالیت ها ی مورد نظر انجام خواهد داد . با استفاده از VB.NET ، می توان کدهای لازم بمنظور ارائه عکس العمل لازم در زمان تحقق یک رویداد را نوشت .در این راستا ، برنامه نویسان می توانند کدهای لازم در رابطه با رویدادهائی که امکان تحقق آنها وجود دارد را نوشته تا در زمان بروز رویداد مورد نظر ، عکس العمل لازم از طرف برنامه صورت پذیرد.در این زمینه می توان از نوشتن کدهای دیگر بمنظور برخورد با رویدادهای غیرضروری ، صرفنظر کرد. مثلا" ویندوز قادر به تشخیص رویداد"کلیک " از "کلیک مضاعف " است . این بدان معنی است که اگر می خواهید برنامه مورد نظر شما ،عکس العمل لازم در ارتباط با رویداد "کلیک" را داشته باشد ، می بایست صرفا" کد مربوط به رویداد " کلیک"، نوشته گردد و الزامی به نوشتن کدهای لازم بمنظور برخورد با رویداد "کلیک مضاعف" ، وجود نخواهد داشت . در دنیای برنامه نویسی DOS ، کاربر عکس العمل لازم را نسبت به برنامه انجام می دهد در صورتیکه در ویندوز ، برنامه ها عکس العمل لازم را با توجه به رفتار کاربران ، انجام خواهند داد .
یکی دیگر از مزایای مهم برنامه های ویندوز ، عدم وابستگی برنامه ها به یک سخت افزار خاص است . ویندوز تمهیدات لازم در خصوص ارتباط با سخت افزار را پیش بینی و برنامه نویسان نیاز به آگاهی از نحوه عملکرد یک دستگاه سخت افزاری خاص بمنظور استفاده از آن ، نخواهند داشت . مثلا" برنامه نویسان ضرورتی به آگاهی از نحوه عملکرد هر نوع چاپگر لیزری، بمنظور ایجاد خروجی مورد نظر خود در برنامه ها ، نخواهند داشت. ویندوز، امکانات لازم در این خصوص را از طریق ارائه روتین های عمومی که با درایورهای مورد نظر مرتبط می گردند ، فراهم می نماید. شاید همین موضوع دلیل موفقیت ویندوز باشد .
روتین های عمومی اصطلاحا" Windows (API ) Application Programming Interface نامیده می شوند .
تاریخچه ویژوال بیسیک
قبل از معرفی ویژوال بیسیک در سال 1991 ، پیاده کنندگان نرم افزار مجبور به تسلط و مهارت در زمینه استفاده از ++C بهمراه موارد پیچیده ای در این خصوص بودند . بدین ترتیب ، صرفا" افراد خاص آموزش دیده، قادر به خلق نرم افزارهای قدرتمند بمنظور اجراء در محیط ویندوز بودند. ویژوال بیسیک ، محدودیت فوق را تغییر و می توان این ادعا را داشت که امروزه خطوط زیادی از برنامه های نوشته شده با استفاده از ویژوال بیسیک کد شده است . ویژوال بیسیک ، ظاهر برنامه نویسی تحت ویندوز را با حذف عملیات اضافی برای نوشتن کدهای لازم جهت طراحی بخش رابط کاربر (UI) ، تغییر داده است . در این راستا ، زمانیکه بخش رابط کاربر ، ترسیم می گردد ، برنامه نویس می تواند کدهای لازم بمنظور انجام عکس العمل مناسب در رابطه با رویداد ها را به آن اضافه نماید . زمانیکه ماکروسافت نسخه شماره سه ویژوال بیسیک را ارائه نمود ، مجددا" دنیای برنامه نویسی با تغییر مهمی مواجه گردید. در این راستا امکانات مناسبی برای نوشتن برنامه های مبتنی بر بانک های اطلاعاتی ، در اختیار برنامه نویسان قرار گرفت. ماکروسافت بدین منظور محصول جدیدی با نام DAO)Data Access Objects) را ارائه نمود . برنامه نویسان با استفاده از DAO ، امکان انجام عملیات متفاوت در رابطه با داده ها را ، بدست آوردند . نسخه های شماره چهار و پنج ، قابلیت های نسخه سه را افزایش و این امکان را برای پیاده کنندگان نرم افزار فراهم نمود تا برنامه های خود را جهت اجراء در محیط ویندوز 95 ، طراحی و پیاده سازی نمایند . در این زمینه ، برنامه نویسان قادر به نوشتن کدهائی گردیدند که امکان استفاده از آنان توسط سایر پیاده کنندگان نرم افزار که از زبانی دیگر استفاده می کردند، فراهم گردید. نسخه شماره شش ویژوال بیسیک ، روش جدیدی بمنظور دستیابی به بانک های اطلاعاتی را ارائه نمود: ADO)ActiveX Data Objects ) . یکی از اهداف اولیه طراحی ADO ، امکان دستیابی به بانک های اطلاعاتی برای پیاده کنندگان برنامه های مبتنی بر وب است که از تکنولوژی ASP ، استفاده می نمایند.
همزمان با ارائه جدیدترین نسخه ویژوال بیسیک که VB.NET نامیده می شود ، بسیاری از محدودیت های مرتبط با ویژوال بیسیک برطرف گردید . در گذشته ویژوال بیسیک با انتفادات فراوان مواجه ( عدم وجود امکانات مناسب در مقایسه با جاوا و یا ++C ) و بسیاری آن را نظیر یک اسباب بازی در دنیای وسیع زبان های برنامه نویسی می پنداشتند. VB.NET با غلبه بر مشکلات نسخه های پیشین ، توانسته است در مدت زمان کوتاهی ، بعنوان یک ابزار پیاده سازی بسیار قدرتمند مطرح و گزینه ای مناسب برای برنامه نویسان در تمامی سطوح باشد .
نصب VB.NET
برای نصب VB.NET ، از دو رویکرد متفاوت می توان استفاده کرد :
* نصب بهمراه ویژوال استودیو دات نت
* نصب نسخه استاندارد
هر یک از گزینه های فوق ، امکان ایجاد برنامه های مبتنی بر ویندوز را فراهم می نمایند . مراحلی که در ادامه ذکر می گردد ، نحوه نصب ویژوال استودیو را تشریح می نماید .
* مرحله اول : برنامه Setup.exe را از روی CD مربوطه فعال نمائید.
* مرحله دوم : جعبه محاوره ای ، مراحل و اولویت های عملیات نصب را نشان خواهد داد. بمنظور صحت عملکرد VB.NET ، چندین Component نصب و یا بهنگام خواهند شد . اولین مرحله نصب، بهنگام سازی عناصر (Components) است . بر روی گزینه Windows Component Update ، کلیک نمائید.
* مرحله سوم : برنامه نصب در ادامه سیستم را بررسی تا نوع عناصری را که می بایست بهنگام گردند، مشخص گردد. دامنه فرآیند بهنگام سازی به وضعیت ماشینی که بر روی آن ویژوال استودیو دات نت نصب می گردد، بستگی خواهد داشت .
* مرحله چهارم : با توجه به اینکه ممکن است در زمان بهنگام سازی لازم باشد چندین مرتبه سیستم راه اندازی گردد ، از شما درخواست نام و رمز عبور شده تا ضرورتی به نشستن و نگاه کردن به کامپیوتر و واکنش لازم ( درج نام و رمز عبور به سیستم ) پس از هر مرتبه راه اندازی سیستم نباشد . بدین ترتیب در زمان راه انداری سیستم ، عملیات مربوطه بصورت اتوماتیک و بدون نیاز به تایپ نام و رمز عبور ، انجام خواهد شد . عملیات فوق ، اختیاری است و در صورتیکه گزینه فوق انتخاب نگردد ، با هر مرتبه راه اندازی سیستم، پیام مناسب ارائه و می بایست واکنش لازم ( تایپ نام و رمز عبور) را انجام داد .
* مرحله پنجم : در این مرحله با فشردن دکمه ! Install Now ، بهنگام سازی عناصر (Components) آغاز می گردد . با اتمام هر یک از آیتم ها یک Check mark بمنزله اتمام مرحله مربوطه نشان داده می شود . در مقابل عنصر جاری برای بهنگام سازی نیز یک فلش قرمز رنگ نسان داده می شود.
* مرحله ششم : پس از بهنگام سازی عناصر ، مجددا" به صفحه اصلی Setup مراجعت و امکان نصب ویژوال استودیو دات نت فراهم می گردد.( کلیک نمودن برروی گزینه Visiual Studio.NET )
نکته : در صورتیکه قصد دارید که از طریق ماشین فوق ، یک برنامه تحت وب پیاده سازی نمائید ، لازم است IIS و FrontPage Extensions قبلا" نصب شده باشد( بصورت پیش فرض در زمان نصب ویندوز 2000 نصب خواهد شد ) در صورتیکه ویژوال استودیو دات نت ، بر روی کامپیوتری نصب می گردد که دارای سیستم عامل ویندوز 2000 نسخه Professional است ، با یک پیام خطاء مواجه خواهیم شد( عدم وجود عناصر لازم ) با فشردن دکمه Install Component ، عملیات نصب IIS و Frontpage Extensions انجام خواهد شد . در صورتیکه دکمه Continue ، انتخاب گردد ، در آینده نمی توانید برنامه های تحت وب را بصورت محلی بر روی کامپیوتر خود پیاده سازی نمائید .
* مرحله هفتم : نظیر اکثر برنامه های نصب ، لیستی از گزینه های موجود ( شامل عناصر ) برای نصب در اختیار شما قرار می گیرد . شما می توانید ، صرفا" آنچیزی را که بدان نیاز دارید ، نصب نمائید . مثلا" در صورتیکه ظرفیت درایو شما پایین و یا ضرورتی به استفاده از ویژوال ++C دات نت را ندارید ، می توان در این مرحله از نصب آن صرفنظر کرد. هر گزینه ای که در این مرحله انتخاب نمی گردد ، می توان در صورت ضرورت آن را در آینده نصب کرد. برای هر یک از امکاناتی که قرار است نصب گردند ، سه بخش اطلاعاتی متفاوت نمایش داده می شود :
بخش Feature Properties . فایل ها ی مورد نظر برای نصب و میزان فضای مورد نیاز را نشان می دهد .
بخش Feature description . هر Feature چیست و چه عملیاتی را انجام می دهد .
بخش Space Allocation ، وضعیت فضای ذخیره سازی هارد را با توجه به گزینه های انتخاب شده ، نشان خواهد داد .
نکته : زمانیکه ویژوال استودیو دات نت ، اجراء می گردد مجموعه ای از اطلاعات بین دیسک و حافظه مبادله می گردد . بنابراین لازم است به میزان کافی ظرفیت آزاد بر روی هارد دیسک وجود داشته باشد ، در این راستا نمی توان دقیقا" مشخص نمود که به چه میزان فضای آزاد نیاز خواهد بود ولی حداقل یکصد مگابایت توصیه می گردد .
* مرحله هشتم : ویژوال استودیو دات نت ، شامل مجموعه ای گسترده از فایل های مستندات ( راهنما ) است . در این مرحله می توان تنظیمات لازم در خصوص اجرای مستندات از طریق CD و یا دایرکتوری نصب شده بر روی هارد را انجام داد . در این زمینه می توان یک مسیر بر روی هارد را مشخص تا مستندات نصب و یا گزینه Run From Source را انتخاب تا بر اساس آن مستندات همچنان بر روی CD باقی بمانند .
* مرحله نهم : پس از انتخاب عناصر مورد نظر برای نصب ، با فشردن دکمه ! Install Now ، عملیات نصب آغاز می گردد . مدت زمان نصب ، بستگی به موارد انتخابی و نوع سیستم دارد . مثلا" نصب تمام ویژوال استودیو دات نت بهمراه تمامی مستندات بر روی یک ماشین با دارا بودن 256 مگابایت حافظه اصلی، سرعت 650 مگاهرتز و دوازده گیگابایـت هارد دیسک ، حدود یک ساعت طول خواهد کشید .
* مرحله دهم : پس از اتمام مرحله قبل ، با انتخاب گزینه Service Release ، بررسی لازم در خصوص بهنگام سازی انجام می گیرد . این عملیات از طریق اینترنت انجام خواهد شد . در این زمینه به یک خط پرسرعت و مطمئن نیاز خواهد بود .
مقدمه ای بر sql
فهرست مندرجات
* ۱ تاریخچه SQL
* ۲ حوزه و وسعت
* ۳ واژه های کلیدی SQL
o ۳.۱ دستورات بازیابی داده
o ۳.۲ دستورات عملیات داده
o ۳.۳ دستورات تراکنش داده
* ۳.۳.۱ دستورات تعریف داده
o ۳.۴ دستورات کنترل داده
* ۴ معایب SQL
* ۵ محاسن SQL
* ۶ مدل های مشابه SQL
* ۷ منابع
* ۸ جستارهای وابسته
* ۹ پیوند به بیرون
تاریخچه SQL
واژه ی SQL به صورت سی کو ال باید تلفظ کنیم و اس کیو ال نا صحیح می باشد. منشا اصلی SQL به مقاله Edgar F. Codd تحت عنوان " مدل رابطه ای داده ها برای بانک های داده ای اشتراکی " که در سال ۱۹۷۰ منتشر شد،باز می گردد. در دهه ۷۰ گروهی از شرکت IBM در شهر San Jose بر روی سیستم پایگاه داده ای (System R) بدون توجه به این مقاله کار می کردند و زبان (SEQUEL(Structured English Query Language را به منظور عملیات و بازیابی اطلاعات ذخیره شده در System R ایجاد کردند. اگر چه SQL ناشی از تلاشهای کاد بود اما Donald D. Chamberlin و Raymond F. Boyce را به عنوان طراحان زبان SEQUEL می دانند.
سمینارهایی در زمینه فناوری بانک اطلاعاتی و مباحثاتی در مورد مزایای مدل رابطه ای جدید برگزار گردید. تا ۱۹۷۶ مشخص بود که IBM طرفدار جدی فناوری بانک اطلاعاتی رابطه ای بوده، توجه زیادی نسبت به زبانSQL دارد. تبلیغات در زمینه System/R باعث جذب گروهی از مهندسین در Menlo Park در کالیفرنیا گردید، و این گروه به این نتیجه رسیدند که تحقیقات IBM منجر به یک بازار تجاری برای بانک های اطلاعاتی رابطه ای خواهد گردید.
در ۱۹۷۷ این گروه شرکتی بنام Inc وRelational Software تاسیس نمودند تا یک DBMS رابطه ای بر اساس SQL بسازند. محصولی بنام Oracle در۱۹۷۹ عرضه گردید، و اولین DBMS رابطه ای بوجود آمد. به این ترتیب محصول Oracle باعث گردید اولین محصول IBM برای مدت ۲ سال در بازار دچار رکود باشد. این محصول بر روی مینی کامپیوترهای VAx Digital's اجرا می شد که خیلی از کامپیوترهای بزرگ IBM ارزان تر بودند.
امروزه این شرکت با نام Oracle Corporation اولین فروشنده سیستم های مدیریت بانک اطلاعاتی رابطه ای است. استادان آزمایشگاههای کامپیوتر در دانشگاه برکلی کالیفرنیا نیز در نیمه دهه ۱۹۷۰ مشغول تحقیق در زمینه بانک های اطلاعاتی رابطه ای بودن (مانند تیم تحقیق IBM)، گروه فوق نیز یک نمونه از DBMS رابطه ای ایجاد نمودند و سیستم خود را Ingres نام نهادند.
پروژه Ingres شامل یک زبان پرسش یا Query language بود بنام QUEL، اگر چه از SQL خیلی ساخت یافته تر بود، اما شباهت آن به زبان انگلیسی کمتر بود.
در حالیکه Oracle و Ingres برای ارائه محصولات تجاری در رقابت بودند، پروژه System/R شرکت IBM در تلاش بوده است که یک محصو ل تجاری با نام SQL/Data system (یاSQL/DS) عرضه نماید. IBM موجودیت SQL/DS را در ۱۹۸۱ اعلام، و در ۱۹۸۲ شروع به عرضه محصول خود نمود. در سال ۱۹۸۳ IBM یک نسخه SQL/DS را برای VM/CMS (سیستم عاملی که در کامپیوتر بزرگ IBM غالبا استفاده شده بود)، اعلام نمود.
همچنین در سال ۱۹۸۳ شرکتIBM، محصول Database۲ یا DB۲ را معرفی نمود که یک DBMS رابطه ای بود برای سیستم های بزرگ آن شرکت. DB۲ تحت سیستم عامل IBM's VMS(سیستم عامل مراکز کامپیوتری بزرگ) اجرا می شد. اولین نسخه DB۲در ۱۹۸۵ عرضه گردید، و مسئولین IBM اعلام نمو دند که این محصول یک برنامه استراتژیک برای تکنولوژی نرم افزاری IBM می باش DB۲ .از آن تاریخ تاکنون DBMS رابطه ای شاخص بوده و IBM از آن حمایت نموده و زبان DB۲'s SQL استاندارد عملی زبان بانک اطلاعاتی بوده است.
SQL استاندارد (ANSI (American National Standards Institute را در سال ۱۹۸۶ و ISO (International Organization for Standardization) را در سال ۱۹۸۷ اتخاذ نمود. استانداردهای مختلفی از SQL تاکنون عرضه شده که در جدول زیر بیان می کنیم:
SQL-۸۷
SQL-۸۹
SQL-۹۲
SQL:۱۹۹۹
SQL:۲۰۰۳
حوزه و وسعت
بسیاری از اصطلاحات توسعه یافته SQL تحت استاندارد بین المللی بوده و در نتیجه از آنها شبیه بقیه زبانهای استاندارد مثل محصولات شرکت اوراکل PL/SQL یا Sybase و SQL PL (مدل رویه ای) از شرکت IBM می باشد.
SQL برای کارهای ویژه و محدودی (گزارش گیری از داده ها در پایگاه داده رابطه ای) طراحی شده است. بر خلاف زبانهای دستوری مثل بیسیک یا سی که برای حل مسائل طراحی شده، SQL زبانی بر پایه اعلان است. زبانهای توسعه یافته ای مثل PL/SQL به دنبال کامل کردن زبان به هدف ایجاد زبان برنامه نویسی با حفظ مزیت های SQL می باشد. شیوه دیگر کار این است که به کدهای زبان برنامه نویسی اجازه دسترسی به پایگاه داده به کمک دستورات SQL داده شود مثلاً PostgreSQL به توابعش اجازه می دهد که درون کدهای Perl، Tcl و C نوشته شوند. گاهی به شوخی گفته می شود که SQL نه ساخت یافته است،نه محدود به گزارش گیری ها و اصلاً یک زبان نیست!
واژه های کلیدی SQL
واژه های کلیدی SQL به گروه های مختلفی تقسیم می گردد، در زیر به برخی از آنها اشاره می کنیم آنهایی که آشنا تر هستند را تنها با یک مثال شرح می دهیم:
* دستورات باز یابی داده(SELECT)
* دستورات عملیات داده(INSERT، UPDATE، MERGE،TRUNCAT و DELETE)
* دستورات تراکنش داده(COMMIT و ROLLBACK)
* دستورات تعریف داده(CREATE وDROP)
* دستورات کنترل داده(GRANT و REVOKE)
دستورات بازیابی داده
دستور SELECT جهت بازیابی برشی سطری از یک یا چند جدول به کار میرود. این دستور پرکاربردترین دستور DML می باشد و برای گزارش گیری های موثر مورد استفاده قرار می گیرد. ساختمان این دستور می تواند از اجزای زیر تشکیل شده باشد:
* FROM : مشخص کردن جداول و نحوه اتصال آنها به هم.
* WHERE : انتخاب سطر هایی با شرایط خاص.
* GROUP BY : ترکیب سطر ها با مقادیر مربوط به مجموعه ای از سطرهای کوچکتر.
* HAVING : مشخص کردن سطرهای ترکیبی.
* ORDER BY : مشخص کردن اینکه کدام ستونها برای مرتب کردن داده ها به کار میرود.
مثال ۱) نشان دادن رکوردهای تمام کتاب های بیش ۱۰۰٫۰۰ واحد قیمت. نتایج بر اساس نام کتاب مرتب می گردد. نماد ستاره(*) به معنای نشان دادن تمام ستون های(صفات) جداول(ها) می باشد:
SELECT * FROM books WHERE price > ۱۰۰٫۰۰
ORDER BY title
مثال ۲) این مسئله نحوه استفاده از جداول چندگانه را نشان می دهد. bk و ba نام مستعار جداول می باشد. در این مثال تعداد مولفان مختلف هر کتاب را نشان داده می شود:
SELECT bk.title, count(*) AS Authors
FROM books AS bk, book_authors AS ba
WHERE bk.book_number = ba.book_number
GROUP BY bk.title
دستورات عملیات داده
این دستورات به اختصار (DML( Data Manipulation Language گفته می شود و شامل دستوراتی همچون زیر است:
INSERT : اضافه کردن سطر هایی (تاپل هایی) به جدول موجود.
UPDATE : جهت تغییر مقادیر سطرهای موجود جدول.
MERGE : ترکیب کردن داده ها در جداول چندگانه این دستور جدید در SQL:۲۰۰۳ اضافه شده است، پیش از این پایگاه داده ها از دستور UPSERT استفاده می کردند.
TRUNCAT : تمام داده های جدول را حذف می کند(از دستورات غیر استاندارد اما پر کاربرد SQL می باشد)
DELETE : حذف سطر هایی از جدول موجود.
مثال ۳)
Example:
INSERT INTO my_table (field۱, field۲, field۳) VALUES ('test', 'N', NULL);
UPDATE my_table SET field۱ = 'updated value' WHERE field۲ = 'N';
DELETE FROM my_table WHERE field۲ = 'N';
دستورات تراکنش داده
(START TRANSACTION (BEGIN WORK : جهت آغاز یک تراکنش پایگاه داده به کار می رود تا کنترل کند که تراکنش یا به پایان برسد یا اصلاً بی تاثیر باشد.
COMMIT : با عث می شود که تغییرات درون ترانش به طور دائمی ثبت گردد.
ROLLBACK : باعث می شود که تغییرات ار آخرین COMMIT یا ROLLBACK دور انداخته شود، در نتیجه وضعیت داده ها به قبل از درخواست دخییرات آنها بر می گردد.
این دو دستور در کنار هم برای کنترل و قفل گذاری به کار می رود و هنگام خروج از تراکنش این کنترل و قفل گذاری از بین می رود.
مثال ۴)
START TRANSACTION;
UPDATE inventory SET quantity = quantity – ۳ WHERE item = 'pants';
COMMIT;
دستورات تعریف داده
دومین دسته دستورات SQL دستورات تعرف داده یا (DDL (Data Definition Language می باشد. این دستورات به کاربر اجازه تعریف جداول جدید و اجزای آنها را می دهد. بیشتر SQL های تجاری دستوراتی با این خصوصیات را دارند. مهم ترین گزینه های پایه ای DDL دستورات زیر است:
CREATE : ایجاد یک شی (مثلاً یک جدول).
DROP : حذف شی تعریف شده ای در پایگاه داده.
بیشتر پایگاه های داده دستور ALTER را نیز دارند که اجازه تغییر یک شی موجود را به شیوه های مختلف می دهد ( مثلاً اضافه کردن یک ستون به جدول).
مثال ۵)
CREATE TABLE my_table (
my_field۱ INT UNSIGNED,
my_field۲ VARCHAR (۵۰),
my_field۳ DATE NOT NULL,
PRIMARY KEY (my_field۱, my_field۲)
)
دستورات کنترل داده
سومین دسته از دستورات SQL دستورات کنترل داده یا (DCL (Data Control Languageمی باشد. این دستورات جنبه های اجازه دسترسی به داده ها را مشخص می کند و تعیین می کند کدام کاربر می تواند روی پایگاه داده عملیات انجام دهد یا کدام کاربر تنها می تواند قابلیت خواندن آنها را داشته باشد. دو دستور اصلی به قرار زیر است:
GRANT : اجازه دادن به یک یاچند کاربر برای اجرا کردن یک یا مجموعه ای ازدستورات بر روی یک شی.
REVOKE : حذف یا محدود کردن قدرت اجرای کاربران.
مثال ۶)
Example: SELECT * FROM inventory — Retrieve everything from inventory table
معایب SQL
در کاربرد عملی از SQL معایب زیر بر آن وارد است:
* دستورات نحوی(syntax) آن تا حدی مشکل است به نحوی که گاهی آنرا با COBOL مقایسه می کنند.
* شیوه استانداردی را برای دستورات چند تکه بزرگ ندارد.
* نمونه های مختلف آن ها که توسط فروشندگان مختلف ارائه می شود گاهی با هم سازگاری ندارد.
* وجود برخی دستورات بلند
* اشتباه گرفتن وظیفه های دستوراتی مثل UPDATE و INSERT .
محاسن SQL
ولی SQL دارای محاسنی هم هست:
* سازگاری با اکثر زبانهای دستوری
* سازگاری با اکثر پایگاه های داده مثل SQL Server,Oracle و حتی MS ACCESS
* پس از اینکه برنامه نویس این زبان را درک کرد استفاده از آن بسیار ساده است
* کاربرد در زبانهای جدید و پیشرفته
مدل های مشابه SQL
* IBM BS۱۲ (Business System ۱۲)
* Tutorial D
* TQL Proposal
* HQL ( بر پایه ابزار JAVA
* OSQL(برپایه ابزارهای شی گرای PHP برای عملیات و گزارش گیری)
* Quel (در سال ۱۹۷۴ در دانشگاه برکلی ایجاد شد)
* ODMG (Object Data Management Group)
منابع
۱- ویکی پدیای انگلیسی
۲- وبلاگ ایفجام ( http://www.ifjam.50megs.com)
۳- Donald D. Chamberlin and Raymond F. Boyce, ۱۹۷۴. "SEQUEL: A structured
English query language", International Conference on Management of Data, Proceedings of the ۱۹۷۴ ACM SIGFIDET (now SIGMOD) workshop on Data
description, access and control, Ann Arbor, Michigan, pp. ۲۴۹-۲۶۴
۴- Discussion on alleged SQL flaws (C۲ wiki)
۵- Web page about FSQL: References and links.
۶- Galindo J., Urrutia A., Piattini M., "Fuzzy Databases: Modeling, Design and Implementation". Idea Group Publishing Hershey, USA, ۲۰۰۵
* سامانه های مدیریّت پایگاه داده ها
* سایت تخصصی پایگاه داده SQLIran
* انجمن های تخصصی پایگاه داده SQLIran
* آموزش زبان T-SQL
فرم اصلی برنامه :
فرم اصلی برنامه تشکیل شده از 5 باتون ((button :
* موجودی انبار
* ورود کالا به انبار
* خروج کالا از انبار
* کالاهای مرجوعی
* جستجو
همچنین از نوار منو (Menu) که شامل :
* فایل ، که همان باتون ها را در خود دارد
* ابزارها ، که شامل 2 مدل جستجو میباشد (پیشرفته و ساده)
فرم موجودی انبار :
حال با کلیک کردن بر روی باتون موجودی انبار این فرم فعال میشود
در این فرم کلیه فیلد های موجود در جدول موجودی را فراخوانی می کند که شامل فیلد های :
روز ، ماه ، سال ، خریدار ، کد کالا ، نام کالا ، تعداد کالا ، فی و مرجوعی ( علت مرجوع ) میباشد که برای چاپ این اطلاعات کافیست بر روی باتون چاپ کلیک کرده تا صفحه پیش چاپ که با کریستال ریپورد(Crystal Report) طراحی شده ظاهر شده و طبق دستور شما چاپ را انجام دهد .
متن برنامه برای فراخوانی از جدول داده و نمایش آن در DataGridView و ارسال به Crystal Report به این صورت میباشد :
Public Class mojoodi
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Form1.Enabled = True
Form1.Show()
Me.Close()
End Sub
Private Sub mojoodi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SqlDataAdapter1.Fill(DataSet21, "mojoodi")
End Sub
Private Sub mojoodi_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
Form1.Enabled = True
Form1.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
crs1.Show()
End Sub
End Class
فرم ورود کالا :
با کلیک بر روی باتون ورود کالا فرم بالا ظاهر میشود :
در این فرم تعریف میکنیم چه کالایی وارد انبار میشود که کد کالا به صورت دلخواه کاربر تعریف میشود ، سپس نام کالا وتعداد کالا و تاریخ ورود آن و نام فروشنده و در نهایت قیمت خرید را وارد میکنیم و با زدن کلید ثبت ، اطلاعات در جدول موجودی ثبت میشود .
از جمله مزایایی که این فرم دارد میتوان به این مورد اشاره کرد که وقتی کد کالایی راوارد کنیم و این کد قبلا در جدول ثبت شده باشد نام کالایی که این کد برایش در نظر گرفته شده است نمایان میشود و همچنین با گذاشتن هشدار کاربر را از اطمینانش نسبت به تکراری بودن کد با خبر می سازیم .
متن برنامه برای ارسال اطلاعات موجود در Text box ها به فیلد های مورد نظر در جدول داده (موجودی) به این صورت است :
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cmdclasf As SqlCommand
Dim strsql1 As String
Dim marjoo As String
rooz = txtrooz.Text
mah = txtmah.Text
sal = txtsal.Text
cod = Txtcod.Text
name = Txtkala.Text
tedad = Txttedad.Text
fi = Txtfi.Text
forushande = Txtforushande.Text
Me.BindingContext(DataSet31, "mojoodi").AddNew()
strsql1 = "insert into mojoodi(rooz,mah,sal,kharidar,codekala,namekala,tedad,fi) values('" & rooz & "','" & mah & "','" & sal & "','" & forushande & "' ,'" & cod & "','" & name & "','" & tedad & "','" & fi & "')"
SqlConnection1.Open()
cmdclasf = New SqlCommand(strsql1, SqlConnection1)
cmdclasf.ExecuteNonQuery()
SqlConnection1.Close()
txtrooz.ResetText()
txtmah.ResetText()
txtsal.ResetText()
Txtcod.ResetText()
Txtkala.ResetText()
Txttedad.ResetText()
Txtfi.ResetText()
Txtforushande.ResetText()
End Sub
Private Sub Txtcod_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Txtcod.LostFocus
If IsNumeric(Txtcod.Text) Then
SqlDataAdapter1.SelectCommand.Parameters("@param1").Value = Txtcod.Text
SqlDataAdapter1.Fill(DataSet31, "mojoodi")
MsgBox("لطفا از تکراری نبودن کد کالا مطمئن شوید", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "اخطار")
Else
MsgBox("لطفا عدد وارد کنید", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "اخطار")
Txtcod.ResetText()
End If
End Sub
Private Sub Txtcod_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txtcod.TextChanged
End Sub
Private Sub SqlDataAdapter1_RowUpdated(ByVal sender As System.Object, ByVal e As System.Data.SqlClient.SqlRowUpdatedEventArgs) Handles SqlDataAdapter1.RowUpdated
End Sub
Private Sub vorudi_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub
فرم خروج کالا :
با کلیک بر روی باتون خروخ کالا فرم بالا ظاهر میشود ، در ردیف اول با زدن کد کالا نام کالا و تعداد و فی آن از جدول داده فراخوانی شده و به نمایش در می آید و کاربر متواند از تعداد کالای موجود در انبار نیز مطلع شود .
در ردیف بعد تاریخ درخواست شده که کاربر آن را پر میکند .
ردیف بعد نام خریدار ونوع خرید مشخص میشود که نوع خرید آن به دو شکل نقدی وچک تعریف شده ، اگر کاربر نقدی را انتخاب کند تنها کافیست بر روی باتون ثبت کلیک کند تا اطلاعات ذخیره گردد ، ولی اگر خرید چک را انتخاب کند قسمت مشخصات چک ظاهر شده و باید مشخصات چک را وارد کند و سپس باتون ثبت راکلیک کند .
متن برنامه برای فراخوانی و ثبت در جدول مشتری به این صورت میباشد :
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
If ComboBox1.SelectedItem = "پرداخت چک" Then
GroupBox1.Enabled = True
Else
GroupBox1.Enabled = False
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim rooz, mah, sal, codekala As Integer
Dim namekala, namebank, nameshobe As String
Dim shomarechek, fi, gheymat, mablaghchek As Long
Dim kharidar, strsql1 As String
Dim cmdclasf, cmdclasf1 As SqlCommand
Dim tedad As Integer
If txtrooz.Text <> "" And txtmah.Text <> "" And txtsal.Text <> "" And txtkala.Text <> "" And txtcod.Text <> "" And txtfi.Text <> "" And txtgheymat.Text <> "" And txtkharidar.Text <> "" Then
namekala = txtkala.Text
rooz = Val(txtrooz.Text)
mah = Val(txtmah.Text)
sal = Val(txtsal.Text)
codekala = Val(txtcod.Text)
kharidar = txtkharidar.Text
fi = Val(txtfi.Text)
gheymat = Val(txtgheymat.Text)
shomarechek = Val(txtshomare.Text)
namebank = txtbank.Text
nameshobe = txtshobe.Text
tedad = Trim(Val(txttedad.Text))
mablaghchek = gheymat
strsql1 = "update mojoodi set tedad=tedad-" & tedad & " where codekala=" & codekala
SqlConnection1.Open()
cmdclasf = New SqlCommand(strsql1, SqlConnection1)
cmdclasf.ExecuteNonQuery()
DataSet41.Clear()
SqlConnection1.Close()
SqlDataAdapter1.Fill(DataSet41, "mojoodi")
strsql1 = "insert into moshtari(rooz,mah,sal,codekala,namekala,tedad,fi,kharidar,mablaghchek,shomarechek,namebank,nameshobe)values('" & rooz & "','" & mah & "','" & sal & "','" & codekala & "','" & namekala & "','" & tedad & "','" & fi & "','" & kharidar & "','" & mablaghchek & "','" & shomarechek & "','" & namebank & "','" & nameshobe & "')"
SqlConnection1.Open()
cmdclasf1 = New SqlCommand(strsql1, SqlConnection1)
cmdclasf1.ExecuteNonQuery()
MsgBox("اطلاعات مورد نظر ثبت شد", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "اخطار")
txtkala.ResetText()
txtrooz.ResetText()
txtmah.ResetText()
txtsal.ResetText()
txtcod.ResetText()
txtkharidar.ResetText()
txtfi.ResetText()
txtgheymat.ResetText()
txtshomare.ResetText()
txtbank.ResetText()
txtshobe.ResetText()
txttedad.ResetText()
End If
End Sub
Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtcod.LostFocus
SqlDataAdapter1.SelectCommand.Parameters("@param1").Value = Trim(Val(txtcod.Text))
SqlDataAdapter1.Fill(DataSet41, "mojoodi")
txtgheymat.Text = Val(txtfi.Text) * Val(txttedad.Text)
End Sub
Private Sub txttedad_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txttedad.LostFocus
txtgheymat.Text = Val(txtfi.Text) * Val(txttedad.Text)
End Sub
Private Sub khoruj_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub
End Class
فرم مرجوعی کالا
در صفحه اصلی زمانی که بر روی باتون کالای مرجوعی کلیک کنیم فرم بالا ظاهر میشود .
در این فرم نیز با زدن کد کالا و زدن اینتر نام کالا فراخوانی میشود و با وارد کردن تعداد کالای مرجوعی و علت آن و فشردن باتون ثبت اطلاعات در جدول موجودی ثبت میشود .
(به جدول موجودی اضافه می شود )
متن برنامه برای فراخوانی و ثبت در جدول به ای صورت است :
Public Class marju
Private Sub marju_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
Form1.Enabled = True
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtCode.LostFocus
SqlDataAdapter1.SelectCommand.Parameters("@param1").Value = Trim(Val(txtCode.Text))
SqlDataAdapter1.Fill(DataSet61, "mojoodi")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strsql1 As String
Dim cmdclasf As SqlCommand
strsql1 = "update mojoodi set tedad=tedad +" & Trim(txttedad.Text) & " where codekala=" & Trim(Val(txtCode.Text))
SqlConnection1.Open()
cmdclasf = New SqlCommand(strsql1, SqlConnection1)
cmdclasf.ExecuteNonQuery()
SqlConnection1.Close()
MsgBox("تغییرات اعمال شد", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "هشدار")
End Sub
Private Sub marju_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub
End Class
فرم جستجو :
در فرم اصلی با کلیک بر روی باتون جستجو فرم بالا ظاهر میشود .
در این فرم با نوشتن کد کالا و زدن کلید اینتر DataGridViewمقدار جستجو شده را نمایش میدهد . که با زدن باتون چاپ (p) به صفحه parameter values رفته و مجدد باید پارامتر مورد نظر را وارد کنیم (کد کالا) و پس از زدن باتون finish این جستجو به حالت چاپ دربرگه ظاهر میشود .
متن برنامه برای جستجو در جدول و چاپ پارامتر به این نحو میباشد :
Public Class search
Private Sub search_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
Form1.Enabled = True
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Close()
End Sub
Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.LostFocus
Dim switch As Boolean = False
If switch = False Then
DataSet71.Clear()
SqlDataAdapter1.SelectCommand.Parameters("@param1").Value = Val(TextBox1.Text)
SqlDataAdapter1.Fill(DataSet71, "mojoodi")
switch = True
Else
SqlDataAdapter1.SelectCommand.Parameters("@param1").Value = Val(TextBox1.Text)
SqlDataAdapter1.Fill(DataSet71, "mojoodi")
End If
End Sub
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form3.Show()
End Sub
Private Sub TextBox1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
If e.KeyCode = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub
End Class
فرم جستجو پیشرفته :
برای مشاهده این فرم باید به منوی ابزارها رفته پس از آن جستجو و پس از آن جستجوی پیشرفته را کلیک کنیم .
در این فرم با وارد کردن کد کالا و وارد کردن ماه اولیه و پس از آن ماه ثانویه و زدن اینتر یا باتون جستجو ، جستجو بین این دو بازه زمانی ، در جدول داده ها (مشتری) صورت میپذیرد و با زدن باتون چاپ به قسمت پارامتر چاپ رفته و کد کالا سپس ماه اول و ماه دوم را وارد کرده و finish را میزنیم ،اینک آمار خروج این کالا در انبار را بین دو بازه زمانی داریم و میتوان آن را روی کاغذ چاپ کرد .
متن برنامه برای جستجوی پیشرفته به این صورت است :
Public Class search2
Private Sub search2_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
If e.KeyCode = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
Private Sub search2_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
Form1.Enabled = True
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.Show()
End Sub
End Class
جداول اطلاعات :
جدول موجودی :
محل ذخیره اطلاعات مربوط به کالاها میباشد (ورودی کالا و مرجوع کالا )
جدول مشتری :
محل ذخیره اطلاعات مربوط به مشتریان میباشد (خروج کالا )