accdbExe

accdbExe
لینک سایر سایت‌های آموزش Access

اطلاعات تماس و ارسال نظر

شروع کار از: فروردین 1402

۶۱ مطلب در فروردين ۱۴۰۲ ثبت شده است

گاهی اوقات لازم است یک جدول جدید در پایگاه داده خود با VBA ایجاد کنید. شما می توانید آن را با یک DDL-SQL-Statement به دست آورید، اما روش دیگیری هم هست و آن استفاده از DAO Object Library است. استفاده از TableDef-Object که بسیار ساده است. تنها مشکلی که ممکن است پیش بیاید این است که چگونه یک AutoNumber-Column در جدول خود ایجاد کنید. هیچ ثابت خاصی برای شماره خودکار در DataTypeEnum وجود ندارد.

فیلدی از نوع Long Integer Auto Number

اگر می‌خواهید یک فیلدی از نوع Long Integer Auto Number با کدVBA ایجاد کنید، یک فیلد جدید از نوع dbLong ایجاد می‌کنید. سپس ویژگی dbAutoIncrField را برای این ستون تنظیم می کنید. این نمونه نحوه ایجاد Long Integer AutoNumber-Column با VBA را با استفاده از کتابخانه شی DAO نشان می دهد.

Sub createAutoIncrField()
Dim td As DAO.TableDef
Dim db As DAO.Database
Dim fld As DAO.Field
Set db = CurrentDb
Set td = db.TableDefs("tblYourTable")
Set fld = td.CreateField("AutoNumberColumn", dbLong)
fld.Attributes = fld.Attributes Or dbAutoIncrField
td.Fields.Append fld
End Sub

GUID Auto Number (Replication ID)

در نمای طراحی جدول نیز می توانید یک فیلد Auto Number از نوع Replication ID ایجاد کنید.

شناسه Replication یک GUID (شناسه منحصر به فرد جهانی)، یک عدد 128 بیتی است که معمولاً با نماد هگزا دسیمال نمایش داده می شود. مثال: 6786EF5C-C09E-48E5-A710-DA101C5B1674. معمولا GUID ها به صورت تصادفی ایجاد می شوند. با این حال، الگوریتم ایجاد باید تلاش کند تا دو بار ایجاد یک GUID یکسان را بسیار بعید جلوه دهد. دسترسی با GUID ها مشکلاتی دارد. بنابراین، اگر واقعاً می خواهید از GUID در پایگاه داده خود استفاده کنید، باید به دقت در نظر بگیرید. نتایج هنگام ایجاد یک GUID با VBA-Code دقیقاً با ایجاد دستی یکسان نیست. با این حال، من فکر می کنم آنها به اندازه کافی نزدیک هستند. برای ایجاد یک فیلد جدید از نوع dbGUID باید از TableDef-Object استفاده کنید. سپس تابع GenGUID را به عنوان DefaultValue به این فیلد اختصاص می دهید. GenGUID یک تابع شبه است که فقط برای موتور جت / ACE - پایگاه داده داخلی شناخته شده است. فقط برای این هدف خاص قابل استفاده است و نمی توان آن را مستقیماً فراخوانی کرد. در اینجا کد ایجاد یک Replication ID Auto Number است.

Public Sub CreateGUIDAutoNumberColumn()

Dim td As DAO.TableDef
Dim db As DAO.Database
Dim fi As DAO.Field

Set db = CurrentDb
Set td = db.TableDefs("tblYourTable")

Set fi = td.CreateField("YourGUIDColumn", dbGUID)
fi.DefaultValue = "GenGUID()"
td.Fields.Append fi

Set td = Nothing
Set db = Nothing

End Sub

فیلد با فیلد ایجاد شده دستی یکسان نیست. به جای (جدید) یک رکورد جدید #Name نمایش داده می شود؟ در ستون شماره خودکار در طراحی جدول ستون از نوع Number است نه Auto Number. من نتوانستم تفاوتی در رفتار بین شماره خودکار GUID ایجاد شده به صورت دستی و شماره ایجاد شده توسط VBA-Code تشخیص دهم. 


صفحه داده دسترسی به جدول، مقایسه ستون‌های GUID طراح جدول دسترسی، مقایسه ستون‌های GUID

این یک نمونه کوچک از یک تابع است که نام تمام فیلدهای تمام جداول در پایگاه داده شما را در پنجره مستقیم محیط VBA چاپ می کند.

Sub allColumns()

Dim x As Integer

Dim y As Integer

Dim db As DAO.Database

Set db = CurrentDb

For x = 0 To db.TableDefs.Count - 1

     Debug.Print db.TableDefs(x).name

          For y = 0 To CurrentDb.TableDefs(x).Fields.Count - 1

               Debug.Print CurrentDb.TableDefs(x).Fields(y).name

          Next

Next

db.Close Set db = Nothing

End Sub

SQL یا Structured Query Language یک زبان دامنه ای خاص است که در برنامه نویسی استفاده می شود و برای مدیریت داده های موجود در یک RDBMS (relational database management system  یا مدیریت پایگاه داده رابطه ای) یا RDSMS (relational data stream management system  یا سیستم مدیریت جریان داده های رابطه ای) به کار می رود. این زبان یک زبان پرس و جوی ساختاریافته و یک زبان برنامه نویسی استاندارد شده است که برای مدیریت پایگاه داده های رابطه ای و انجام عملیات های مختلف بر روی داده های موجود در آن ها استفاده می شود.

دستورات SQL نحوه استفاده
AND / OR SELECT column_name(s)
FROM table_name
WHERE condition
AND|OR condition
ALTER TABLE ALTER TABLE table_name
ADD column_name datatype
or
ALTER TABLE table_name
DROP COLUMN column_name
AS (alias) SELECT column_name AS column_alias
FROM table_name
or
SELECT column_name
FROM table_name  AS table_alias
BETWEEN SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
CREATE DATABASE CREATE DATABASE database_name
CREATE TABLE CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name2 data_type,
...
)
CREATE INDEX CREATE INDEX index_name
ON table_name (column_name)
or
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE VIEW CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
DELETE DELETE FROM table_name
WHERE some_column=some_value
or
DELETE FROM table_name
DROP DATABASE DROP DATABASE database_name
DROP INDEX DROP INDEX table_name.index_name (SQL Server)
DROP INDEX index_name ON table_name (MS Access)
DROP INDEX index_name (DB2/Oracle)
ALTER TABLE table_name
DROP INDEX index_name (MySQL)
DROP TABLE DROP TABLE table_name
GROUP BY SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
IN SELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)
INSERT INTO INSERT INTO table_name
VALUES (value1, value2, value3,....) or INSERT INTO table_name
(column1, column2, column3,...)
VALUES (value1, value2, value3,....)
INNER JOIN SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LEFT JOIN SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
RIGHT JOIN SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
FULL JOIN SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name
LIKE SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
ORDER BY SELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC]
SELECT SELECT column_name(s)
FROM table_name
SELECT * SELECT *
FROM table_name
SELECT DISTINCT SELECT DISTINCT column_name(s)
FROM table_name
SELECT INTO SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_table_name or SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_table_name
SELECT TOP SELECT TOP number|percent column_name(s)
FROM table_name
TRUNCATE TABLE TRUNCATE TABLE table_name
UNION SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
UNION ALL SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
UPDATE UPDATE table_name
SET column1=value, column2=value,...
WHERE some_column=some_value
WHERE SELECT column_name(s)
FROM table_name
WHERE column_name operator value


موتور پایگاه داده سرور SQL به شما امکان دستورات sql در پایگاه داده می دهد پرس و جوها را در معماری های ذخیره سازی داده های مختلف پردازش کنید، مانند جداول محلی، جداول پارتیشن بندی شده و جداول پراکنده در چندین سرور. عناوین زیر پردازش پرس و جو و بهینه سازی استفاده مجدد از پرس و جو سرور SQL را با کش کردن برنامه های اجرایی توضیح دستورات sql در پایگاه داده می دهند.روش های اجرا.موتور پایگاه داده SQL Server می تواند دستورات sql در پایگاه داده عبارات Transact-SQL را با استفاده از دو حالت پردازش مجزا پردازش کند:

اجرای حالت ردیف یک روش پردازش پرس و جو است که با جداول سنتی RDBMS استفاده می شود، جایی دستورات sql در پایگاه داده که داده ها در قالب ردیف ذخیره می شوند. هنگامی که یک پرس و جو اجرا می شود و به داده ها در جداول rowstore دسترسی پیدا می کند، عملگرهای درخت اجرا و عملگرهای فرزند هر سطر ضروری را در تمام ستون های مشخص شده در طرح جدول می خوانند. از هر ردیف خوانده شده، SQL Server ستون های مورد نیاز برای مجموعه نتایج را بازیابی می کند، همانطور که با عبارت SELECT، محمول JOIN، یا محمول فیلتر نشان داده شده است.

دستورات sql در پایگاه داده

اجرای حالت ردیف برای سناریوهای OLTP بسیار کارآمد است، اما در هنگام تجزیه دستورات sql در پایگاه داده و تحلیل مقادیر زیادی از داده ها، مانند سناریوهای مربوط به انبارهای داده، می تواند کارایی کمتری داشته باشد.در حالت دسته ای اجرا شود اجرای حالت دسته ای یک روش پردازش پرس و جو است که به وسیله آن کوئری ها چندین ردیف را همزمان پردازش می کنند. هر ستون در یک دسته به عنوان یک بردار در یک منطقه جداگانه از حافظه ذخیره می شود، بنابراین پردازش حالت دسته ای مبتنی بر برداری است. پردازش حالت دسته‌ای همچنین از الگوریتم‌های بهینه‌سازی شده برای CPUهای چند هسته‌ای و ظرفیت حافظه بالاتر سخت‌افزار مدرن استفاده می‌کند.هنگامی که برای اولین بار معرفی شد، اجرای حالت دسته ای به شدت با فرمت ذخیره سازی ستونی ادغام و بهینه شده بود. با این حال، شروع SQL Server 2019 (15.x) به و از پایگاه داده Azure SQL، اجرای در حالت دسته‌ای دستورات sql در پایگاه داده دیگر نیازی به فهرست ستون‌ها ندارد. پردازش حالت دسته‌ای روی داده‌های فشرده، زمانی که در دسترس باشد، کار می‌کند و عملگرهای مبادله‌ای را که در اجرای حالت ردیف استفاده می‌شوند حذف می‌کند. نتیجه موازی سازی بهتر و عملکرد سریعتر است. هنگامی که یک پرس و جو در حالت دسته ای اجرا دستورات sql در پایگاه داده می شود و به داده ها در فهرست های فروشگاه ستون دسترسی پیدا می کند، عملگرهای درخت اجرا و عملگرهای فرزند چندین ردیف را با هم در بخش های ستون می خوانند.

SQL Server فقط ستون های مورد نیاز برای نتیجه را می خواند، همانطور که با عبارت SELECT، محمول JOIN یا محمول فیلتر نشان داده شده است. برای اطلاعات بیشتر در مورد نمایه‌های ستون‌فروشی، به معماری نمایه ستون‌فروشی مراجعه کنید.توجه داشته باشیداجرای حالت دسته ای در سناریوهای مربوط به “دستورات sql در پایگاه داده” انبارهای داده که در آن مقادیر زیادی داده خوانده و جمع آوری می شود بسیار کارآمد است.پردازش بیانیه SQLپردازش یک دستور Transact-SQL ساده ترین راه برای اجرای دستورات Transact-SQL در SQL Server است.

برای نشان دادن فرآیند اصلی، از فرآیند پردازش یک دستور SELECT استفاده می‌شود که فقط به جداول پایه محلی ارجاع می‌دهد، نه نماها یا جداول از راه دور.ترتیب تقدم عملگرهای منطقی اگر چندین عملگر منطقی در یک دستور استفاده شود، ابتدا NOT، سپس AND و در نهایت OR ارزیابی می شود. عملگرهای حسابی (و بیتی) قبل از عملگرهای منطقی ارزیابی می شوند. برای اطلاعات بیشتر، اولویت اپراتور را ببینید.در مثال زیر شرط رنگ برای محصول مدل دستورات sql در پایگاه داده 21 است نه محصول 20 زیرا AND بر OR اولویت دارد.

می‌توانید با اضافه کردن پرانتز برای لغو عملگر OR به ترتیب ارزیابی، معنای کوئری را تغییر دهید. جستجوی زیر فقط محصولات قرمز مدل 20 و 21 را پیدا می کند.استفاده از پرانتز، حتی در مواقعی که لازم نیست، می تواند به خوانایی بیشتر درخواست ها و کاهش خطر خطاهای اولویت اپراتور کمک کند. همچنین هیچ اثر سوء مادی بر عملکرد ندارد. مثال زیر خواناتر از نمونه قبلی دستورات sql در پایگاه داده است، اگرچه دو مثال از نظر نحوی یکسان هستند.

sql

را که سرور پایگاه داده برای بازیابی داده‌های درخواستی باید انجام دهد، تعریف نمی‌کند. بنابراین سرور پایگاه داده باید عبارت را تجزیه کند تا موثرترین روش استخراج داده را تعیین کند. این رویه که بهینه سازی عبارت SELECT نامیده می شود، توسط دستورات sql در پایگاه داده جزء Query Optimizer انجام می شود. داده های ورودی Query Optimizer شامل پرس و جو، طرح پایگاه داده (تعریف جدول و فهرست) و آمار پایگاه داده است. خروجی Query Optimizer یک طرح اجرای پرس و جو است که گاهی به عنوان طرح پرس و جو یا طرح اجرا نیز از آن یاد می شود. شرح مفصلی از محتویات یک طرح اجرایی در ادامه این مبحث ارائه شده است.داده های ورودی و خروجی Query Optimizer هنگام بهینه سازی یک عبارت SELECT در نمودار زیر نشان داده شده است:قالب مجموعه نتیجه. این مورد در بیشتر موارد در لیست انتخاب مشخص شده است. با این حال، بندهای دیگر، مانند ORDER BY و GROUP BY، می توانند بر فرمت نهایی مجموعه نتایج تأثیر بگذارند.جداول حاوی داده های منبع. حالت در عبارت FROM مشخص شده است. رابطه منطقی بین جداول به منظور دستور SELECT. این عنصر در مشخصات join تعریف شده است که دستورات sql در پایگاه داده در عبارت WHERE یا در یک عبارت ON به دنبال یک عبارت FROM گنجانده شده است.شرایطی که سطرهای جداول منبع باید داشته باشند تا در نتیجه عبارت SELECT قرار گیرند. این شرایط در بندهای WHERE و HAVING مشخص شده است.طرح اجرای یک پرس و جو شامل تعریف عناصر زیر است:ترتیب دسترسی به جداول منبع معمولاً سرور پایگاه داده می تواند. از توالی های مختلف برای دسترسی به جداول پایه و سپس کامپایل مجموعه نتایج استفاده کند. به عنوان مثال، اگر دستور SELECT به سه جدول ارجاع دهد، سرور پایگاه داده می تواند ابتدا به TableA دسترسی داشته باشد، از دستورات sql در پایگاه داده داده های TableA برای استخراج ردیف های مربوطه از TableB استفاده کند و سپس از داده های TableB برای استخراج داده ها از TableC استفاده کند. موارد زیر سایر توالی دسترسی به جداول است که می تواند توسط سرور پایگاه داده استفاده شود. روش های مورد استفاده برای استخراج داده ها از هر جدول.معمولاً راه های مختلفی برای دسترسی به داده های هر جدول وجود دارد. اگر فقط به دستورات sql در پایگاه داده چند ردیف با مقادیر کلیدی خاص نیاز باشد، سرور پایگاه داده می تواند از یک شاخص استفاده کند. اگر تمام ردیف های جدول مورد نیاز باشد، سرور پایگاه داده می تواند ایندکس ها را نادیده بگیرد و تجزیه و تحلیل جدول را انجام دهد. اگر به تمام ردیف‌های یک جدول نیاز دارید، اما فهرست شامل ستون‌های کلیدی است که در یک عبارت ORDER BY گنجانده شده‌اند. توصیه می‌کنیم برای جلوگیری از مرتب‌سازی مجزای مجموعه نتایج، فهرست را به جای جدول تجزیه کنید. اگر یک جدول بسیار کوچک است، تجزیه جدول می تواند کارآمدترین روش برای تقریباً هر گونه دسترسی به جدول باشد.روش‌های مورد استفاده برای دستورات sql در پایگاه داده انجام محاسبات و روش‌های مورد استفاده برای فیلتر، تجمیع و مرتب‌سازی داده‌ها از هر جدول.اگر از جداول به داده‌ها دسترسی دارید، می‌توانید از روش‌های مختلفی برای انجام محاسبات روی داده‌ها استفاده کنید. مانند محاسبه مقادیر اسکالر، برای جمع‌آوری و مرتب‌سازی داده‌ها همانطور که در متن query تعریف شده است، مانند زمانی که از یک بند GROUP BY یا ORDER BY استفاده می‌کنید. و برای فیلتر کردن داده ها، به عنوان مثال هنگام استفاده از عبارت WHERE یا HAVING.فرآیند انتخاب طرح اجرایی بهینه سازی نامیده می شود. Query Optimizer یکی از مهمترین اجزای موتور پایگاه دستورات sql در پایگاه داده داده است. سربار تولید شده با استفاده از بهینه ساز پرس و جو برای تجزیه پرس و جو و انتخاب یک طرح. تا حد زیادی با کارایی طرح اجرایی انتخاب شده جبران می شود. به عنوان مثال، فرض کنید یک پروژه ساخت خانه به دو شرکت ساختمانی مختلف واگذار شده است. اگر یک شرکت چند روزی را صرف برنامه ریزی ساخت خانه کند و شرکت دیگر بلافاصله بدون برنامه ریزی شروع به ساخت و ساز کند، به احتمال بسیار زیاد شرکتی که پروژه را برنامه ریزی کرده است ابتدا ساخت و ساز را به پایان برساند.SQL Server Query Optimizer یک بهینه ساز مبتنی بر هزینه است. هر طرح اجرایی ممکن از نظر میزان استفاده از منابع کامپیوتری دارای هزینه است. بهینه ساز پرس و جو طرح دستورات sql در پایگاه داده های ممکن را تجزیه و تحلیل می کند و طرحی را با کمترین هزینه تخمینی انتخاب می کند. برای برخی از دستورات پیچیده SELECT، هزاران طرح اجرایی ممکن وجود دارد. در این موارد، Query Optimizer همه ترکیب‌های ممکن را تجزیه و تحلیل نمی‌کند، اما از الگوریتم‌های پیچیده برای شناسایی سریع یک برنامه اجرایی که هزینه آن تا حد امکان به حداقل هزینه نظری نزدیک است، استفاده می‌کند. SQL Server Query Optimizer نه تنها برنامه اجرا را با کمترین هزینه از نظر منابع انتخاب می کند، بلکه طرحی را شناسایی می کند که نتایج را با هزینه معقول از نظر منابع به سرعت به کاربر برمی گرداند. به عنوان مثال، اجرای پرس و جوی موازی معمولاً از منابع بیشتری نسبت به اجرای سریال استفاده می کند، اما به شما امکان می دهد پرس و جو را سریعتر تکمیل کنید. SQL Server Query Optimizer از یک طرح اجرای موازی برای برگرداندن نتایج استفاده می کند، تا دستورات sql در پایگاه داده زمانی که این طرح بار روی سرور را افزایش ندهد. SQL Server Query Optimizer برای برآورد هزینه های منابع روش های مختلف استخراج اطلاعات از یک جدول یا فهرست، بر آمار توزیع تکیه می کند. آمار توزیع برای ستون ها و نمایه ها ثبت می شود و حاوی اطلاعاتی در مورد چگالی 1 داده های اساسی است. این اطلاعات برای نشان دادن انتخابی بودن مقادیر در یک شاخص یا ستون استفاده می شود. به عنوان مثال، در جدولی که خودروها را نشان می دهد، خودروهای زیادی توسط یک سازنده تولید می شوند، اما به هر کدام یک شماره شناسایی اختصاص داده شده است. یک شاخص بر اساس شماره شناسایی خودرو نسبت به شاخص مبتنی بر سازنده انتخابی تر است، زیرا شماره شناسایی خودرو دارای تراکم کمتری نسبت دستورات sql در پایگاه داده به سازنده است. اگر آمار شاخص به روز نباشد، بهینه ساز پرس و جو ممکن است بهترین راه حل را برای وضعیت فعلی جدول انتخاب نکند. تراکم توزیع مقادیر منحصربه‌فرد موجود در داده‌ها یا میانگین تعداد مقادیر تکراری را برای یک ستون مشخص تعریف می‌کند. با کاهش چگالی، گزینش پذیری یک مقدار افزایش می یابد. SQL Server Query Optimizer یک مؤلفه مهم است زیرا به سرور پایگاه دستورات sql در پایگاه داده داده اجازه می دهد تا بدون نیاز به مداخله برنامه نویس یا مدیر پایگاه داده به صورت پویا با شرایط متغیر پایگاه داده سازگار شود. به این ترتیب برنامه نویسان می توانند روی توصیف نتیجه نهایی پرس و جو تمرکز کنند. با هر اجرای عبارت، بهینه ساز پرس و جوی SQL Server یک برنامه اجرایی موثر برای وضعیت فعلی پایگاه داده جمع آوری می کند.توجه داشته باشید SQL Server Management Studio سه گزینه برای مشاهده برنامه های اجرایی دارد:برنامه اجرای تخمینی، که طرح کامپایل شده تولید شده توسط بهینه ساز پرس و جو است.طرح اجرای واقعی، که طرح تدوین شده به اضافه زمینه اجراست. این شامل اطلاعات زمان اجرا در دسترس پس از اجرا است، مانند هشدارهای اجرا یا در نسخه های جدیدتر موتور پایگاه داده، زمان سپری شده و CPU استفاده شده در طول اجرا.آمار پرس و جو پویا، یعنی طرح دستورات sql در پایگاه داده کامپایل شده به اضافه زمینه اجرا. آنها شامل اطلاعات زمان اجرا با پیشرفت اجرا هستند و هر ثانیه به روز می شوند. اطلاعات زمان اجرا شامل تعداد واقعی خطوطی است که از اپراتورها عبور می کنند.پردازش یک عبارت SELECTدر اینجا روش اصلی مورد نیاز برای پردازش یک دستور SELECT در SQL Server است:تجزیه کننده عبارت SELECT را تجزیه می کند و آن را به واحدهای منطقی مانند کلمات کلیدی، عبارات، عملگرها و شناسه ها تقسیم می کند.یک درخت پرس و جو، که گاهی اوقات دنباله منطقی نامیده می شود. ساخته می شود که مراحل منطقی مورد نیاز برای تبدیل داده منبع به فرمت مورد نیاز برای مجموعه نتایج را شرح می دهد.Query Optimizer راه های مختلف دسترسی به جداول منبع را تجزیه و تحلیل می کند و مجموعه ای از مراحل را انتخاب می کند که نتایج را سریعتر و با استفاده کمتر از منابع برمی گرداند. درخت پرس و جو برای ثبت مجموعه دستورات sql در پایگاه داده دقیق مراحل به روز می شود. نسخه نهایی بهینه شده درخت پرس و جو، طرح اجرا نامیده می شود. موتور رابطه ای شروع به اجرای طرح اجرا می کند. همانطور که مراحلی که به داده‌های جدول پایه نیاز دارند پردازش می‌شوند، موتور رابطه‌ای از موتور ذخیره‌سازی می‌خواهد تا داده‌های مجموعه ردیف مورد نیاز خود موتور رابطه‌ای را ارسال کند.موتور رابطه ای داده های برگشتی توسط موتور ذخیره سازی را دستورات sql در پایگاه داده در قالب تعریف شده برای مجموعه نتایج پردازش می کند و مجموعه نتایج را به مشتری برمی گرداند.ارزیابی عبارات و پردازش ثابت هادر SQL Server، برخی از عبارات ثابت در مرحله مقدماتی برای بهبود عملکرد پرس و جو ارزیابی می شوند.

دستورات sql در پایگاه داده

این رفتار پردازش ثابت در زمان کامپایل نامیده می شود. یک ثابت یک Transact-SQL است،عباراتی که ثابت ها را می توان در زمان کامپایل پردازش کردSQL Server از پردازش ثابت زمان کامپایل برای انواع عبارات زیر استفاده می کند:عبارات حسابی که فقط شامل ثابت هستند، مانند 1 + 1 یا 5/3 * 2.عبارات منطقی که فقط شامل ثابت هستند، به عنوان مثال 1 = 1 و 1> 2 و 3> 4.توابع از دستورات sql در پایگاه داده پیش تعریف شده ای که SQL Server آنها را برای پردازش ثابت مناسب می داند، مانند CAST و CONVERT. به طور کلی، اگر تابعی فقط تابعی از ورودی های آن باشد و نه سایر اطلاعات متنی، مانند گزینه های SET، تنظیمات زبان، گزینه های پایگاه داده و کلیدهای رمزنگاری، می تواند پردازش زمان کامپایل ثابت ها را انجام دهد. برای توابع غیر قطعی امکان انجام پردازش زمان کامپایل ثابت ها وجود دستورات sql در پایگاه داده ندارد. برای توابع قطعی از پیش تعریف شده، به استثنای برخی موارد، می توانید پردازش زمان کامپایل ثابت ها را انجام دهید.روش های قطعی انواع CLR تعریف شده توسط کاربر و توابع CLR تعریف شده توسط کاربر با مقادیر اسکالر قطعی (شروع با SQL Server 2012 (11.x)). برای اطلاعات بیشتر، Compile-Time Constant Processing for CLR User Defined Methods and Functions را ببینید.توجه داشته باشیدیک استثنا برای انواع LOB اعمال می شود. اگر نوع خروجی پردازش ثابت از دستورات sql در پایگاه داده نوع LOB باشد، یعنی متن، ntext، تصویر، nvarchar (max)، varchar (max)، varbinary (max)، یا XML، SQL Server پردازش ثابتی را برای عبارت انجام نمی دهد. عباراتی که پردازش ثابت برای آنها در زمان کامپایل قابل انجام نیست. برای همه انواع دیگر عبارات، ثابت ها را نمی توان در زمان کامپایل پردازش کرد. به طور خاص، پردازش ثابت زمان کامپایل برای انواع عبارات زیر قابل انجام نیست:عبارات غیر ثابت، مانند عبارتی که نتیجه آن به مقدار یک ستون بستگی دارد. عباراتی که نتیجه آنها به یک متغیر یا پارامتر محلی مانند @x بستگی دارد.توابع غیر قطعی دستورات sql در پایگاه داده توابع Transact-SQL تعریف شده توسط کاربر 1.عباراتی که نتیجه آنها به تنظیمات زبان بستگی دارد.عباراتی که نتیجه آنها به گزینه های SET بستگی دارد. عباراتی که نتیجه آنها به گزینه های پیکربندی سرور بستگی دارد.1 قبل از SQL Server 2012 (11.x)، توابع و روش های تعریف شده توسط کاربر CLR با مقادیر اسکالر قطعی انواع تعریف شده توسط کاربر CLR از پردازش زمان کامپایل پشتیبانی نمی کردند.نمونه‌هایی دستورات sql در پایگاه داده از عباراتی که ثابت‌های زمان کامپایل را می‌توان پردازش کرد و عباراتی که پردازش زمان کامپایل برای آنها امکان‌پذیر نیست.پرس و جوی زیر را در نظر بگیرید:اگر گزینه پایگاه داده PARAMETERIZATION برای پرس و جو روی FORCED تنظیم نشده باشد. عبارت 117.00 + 1000.00 ارزیابی شده و با نتیجه 1117.00، قبل از کامپایل شدن کوئری جایگزین می شود. از مزایای کامپایل کردن ثابت ها در زمان کامپایل می توان به موارد زیر اشاره کرد:عبارت نباید چندین بار در زمان اجرا ارزیابی شود.مقدار عبارت پس از ارزیابی توسط بهینه ساز پرس و جو برای تخمین اندازه مجموعه نتایج قسمت TotalDue> 117.00 + 1000.00 از دستورات sql در پایگاه داده پرس و جو استفاده می شود. اگر dbo.f یک تابع اسکالر تعریف شده توسط کاربر است. برای عبارت dbo.f (100) هیچ پردازش زمان کامپایل ثابت ها وجود ندارد، زیرا این در SQL Server برای عباراتی که شامل توابع تعریف شده توسط کاربر هستند امکان پذیر نیست، حتی اگر آنها قطعی هستند. برای اطلاعات بیشتر در مورد پارامترسازی، در ادامه این مقاله به پارامترسازی اجباری مراجعه کنید.ارزیابی دستورات sql در پایگاه داده عبارات برخی از عباراتی که پردازش ثابت برای آنها انجام نمی شود اما آرگومان های آنها در زمان کامپایل شناخته شده است، خواه پارامتر باشند یا ثابت، با استفاده از برآوردگر اندازه مجموعه نتایج (کاردینالیته) موجود در بهینه ساز پرس و جو در طول بهینه سازی ارزیابی می شوند. به ویژه، اگر همه ورودی ها شناخته شده باشند، عملگرهای ویژه و توابع از پیش تعریف شده زیر در زمان کامپایل ارزیابی می شوند: UPPER، LOWER، RTRIM، DATEPART (فقط YY)، GETDATE، CAST، و CONVERT. اپراتورهای زیر نیز در زمان دستورات sql در پایگاه داده کامپایل ارزیابی می شوند که همه ورودی های آنها شناخته شده باشد:عملگرهای حسابی +، -، *، /، – unaryعملگرهای منطقی AND، OR و NOTعملگرهای مقایسه <,>, <=,> =, <>, LIKE, IS NULL و IS NOT NULLسایر عملگرها یا توابع توسط بهینه ساز پرس و جو هنگام تخمین کاردینالیته ارزیابی نمی شوند. نمونه هایی از ارزیابی عبارات در زمان کامپایلروش ذخیره شده زیر را در نظر بگیرید:هنگام بهینه‌سازی عبارت SELECT در رویه، بهینه‌ساز پرس و جو سعی می‌کند کاردینالیته مورد انتظار مجموعه نتایج را برای شرط OrderDate> @d + 1 ارزیابی کند. برای عبارت @d + 1 هیچ پردازش ثابت در زمان کامپایل وجود ندارد، زیرا @d یک پارامتر است. با این حال، در طول بهینه سازی، مقدار دستورات sql در پایگاه داده پارامتر مشخص است. بنابراین، بهینه‌ساز پرس و جو می‌تواند اندازه مجموعه نتایج را به طور دقیق تخمین بزند و این به شما امکان می‌دهد یک طرح پرس و جو مناسب را انتخاب کنید. سپس مثالی مشابه نمونه قبلی در نظر بگیرید، با این تفاوت که یک متغیر محلی @ d2 جایگزین دستورات sql در پایگاه داده d + 1 @ در پرس و جو می شود و این عبارت به جای پرس و جو در یک عبارت SET ارزیابی می شود.وقتی دستور SELECT در MyProc2 در SQL Server بهینه شده است، مقدار d2@ مشخص نیست. در نتیجه، Query Optimizer از یک تخمین پیش‌فرض برای انتخاب OrderDate> @ d2 استفاده می‌کند که در این مورد 30 درصد است. پردازش سایر دستورالعمل هاروال اصلی توصیف شده برای پردازش یک دستور SELECT برای سایر دستورات Transact-SQL مانند INSERT، UPDATE و DELETE نیز اعمال می شود. هر دو عبارت UPDATE و DELETE باید مجموعه ردیفی را که دستورات sql در پایگاه داده باید اصلاح یا حذف شود را تعریف کنند. با استفاده از فرآیند شناسایی ردیف مربوط به آن چیزی که ردیف های مبدأ را که مجموعه نتیجه یک عبارت SELECT را تشکیل می دهند، شناسایی می کند. دستورات UPDATE و INSERT هر دو می توانند حاوی عبارات SELECT داخلی باشند که مقادیر داده را برای به روز رسانی یا درج ارائه می دهند.عبارات دستورات sql در پایگاه داده زبان تعریف داده (DDL)، مانند CREATE PROCEDURE یا ALTER TABLE، همچنین به مجموعه ای از عملیات رابطه ای انجام شده بر روی جداول فهرست سیستم و در برخی موارد، مانند ALTER TABLE ADD COLUMN، بر روی جداول داده حل می شود.میزهای کار موتور رابطه ای ممکن است. نیاز به پر کردن یک جدول کاری برای انجام یک عملیات منطقی مشخص شده در یک دستور Transact-SQL داشته باشد. جداول کار جداول داخلی هستند که برای درج نتایج میانی استفاده می شوند. جداول کاری برای برخی از جستارهای GROUP BY، ORDER BY یا UNION ایجاد می شود. به عنوان مثال، اگر دستورات sql در پایگاه داده یک بند ORDER BY به ستون‌هایی اشاره می‌کند که توسط شاخص‌ها پوشش داده نمی‌شوند، ممکن است لازم باشد یک جدول کاری ایجاد شود تا مجموعه نتایج را به ترتیب مورد نیاز مرتب کند. میزهای کاری گاهی اوقات به عنوان قرقره برای نگهداری موقت نتیجه اجرای طرح پرس و جو نیز استفاده می شوند. جداول کار در tempdb کامپایل می شوند و زمانی که دیگر مورد نیاز نباشند به طور خودکار حذف می شوند.مشاهده دستورات sql در پایگاه داده وضوح در SQL Server Query Processor، نماهای نمایه شده و غیر نمایه شده به روش های مختلفی مدیریت می شوند:ردیف های نمای نمایه شده در پایگاه داده با همان فرمت جدول ذخیره می شوند. اگر بهینه ساز پرس و جو تصمیم بگیرد که از نمای نمایه شده در طرح پرس و جو استفاده کند، نمای نمایه شده به عنوان جدول پایه در نظر گرفته می شود.فقط تعریف نمای نمایه شده ذخیره می شود، نه ردیف های نما. بهینه ساز پرس و جو منطق تعریف view را در طرح اجرایی کامپایل شده برای دستور Transact-SQL که به نمای غیر نمایه شده ارجاع می دهد تعبیه دستورات sql در پایگاه داده می کند.منطقی که توسط بهینه‌ساز پرس و جوی SQL Server برای تصمیم‌گیری زمان استفاده از نمای نمایه‌سازی شده استفاده می‌شود. مشابه منطقی است که برای تصمیم‌گیری زمان استفاده از فهرست برای جدول استفاده می‌شود. اگر داده‌های نمای نمایه‌سازی‌شده تمام یا بخشی از عبارت Transact-SQL را پوشش دهد و Query Optimizer فهرستی از view را به‌عنوان ارزان‌ترین مسیر دسترسی شناسایی کند، این نمایه صرف نظر از اینکه نمای مورد نظر دستورات sql در پایگاه داده در پرس و جو ارجاع داده شده باشد یا خیر، انتخاب می‌شود.اگر یک دستور Transact-SQL به یک نمای غیر نمایه شده ارجاع دهد. تجزیه کننده و بهینه ساز پرس و جو منابع عبارت Transact-SQL و view را تجزیه می کنند و سپس آنها را در یک طرح اجرایی حل می کنند. طرح اجرا برای دستور Transact-SQL و برای view یکسان است.برای مثال، دیدگاه زیر را در دستورات sql در پایگاه داده نظر بگیرید:بر اساس این دیدگاه، دو دستور Transact-SQL زیر عملیات مشابهی را روی جداول پایه انجام می‌دهند و نتایج یکسانی را تولید می‌کنند.

Sub main()
DoCmd.RunSQL "SELECT '' AS Fam, '' AS Nam INTO Table1;"
End Sub

Sub main()

ابتدا متغییر و اشیائی را معرفی می کنیم و VBA تکلیف مشخص‌تری با  متغییرهای ما داشته باشد.

Dim frm As Form
Dim ctlLabel As Control, ctlText As Control
Dim intDataX As Integer, intDataY As Integer
Dim intLabelX As Integer, intLabelY As Integer

دستورات بعدی یک فرم جدید را ایجاد خواهند کرد.

Set frm = CreateForm
frm.RecordSource = "Orders"

دستور بالا رابطه دیتای فرم را با یکی از جداول به نام "Orders" مشخص می کند.

سپس در دستورات بعدی مکان بالا،چپ، عرض و ارتفاع کنترلرهایی مانند Lable و TextBoxی که م یخواهیم در فرم ایجاد کنیم، تعیین می کنیم.

intLabelX = 100
intLabelY = 100
intDataX = 1000
intDataY = 100

و در دستورات بعدی در بخش detail فرم یک TexBox ایجاد می کنیم.

Set ctlText = CreateControl(frm.Name, acTextBox, , "", "", _
intDataX, intDataY)

و در دستورات بعدی در بخش detail فرم یک Lable ایجاد می کنیم.

Set ctlLabel = CreateControl(frm.Name, acLabel, , _
ctlText.Name, "NewLabel", intLabelX, intLabelY)

و به اکسس اطلاع می دهیم که کار با با تنظیمات فرم تمام شده است و آنرا دوباره سازی کند.

DoCmd.Restore
End Sub

دپارتمان و مهندسان نرم افزار اکسس به دنبال آن هستند که به سمتی بروند که اکسس پایگاه داده ای باشد که در یک مرورگر وب استاندارد بتوانید به راحتی از آن استفاده کنید؛ مایکروسافت بسیار تلاش کرده است که کاربرانش بتوانند از طریق نرم افزرهایی مانند Share Point و دیگر نرم افزارهای مشابه اش اینکار را عملی کنند و به زودی و طی سالهای اتی به موقعیت نائل خواهند آمد، یکی از مکانیزم های بازدارنده در این کار، این است که مایکروسافت سعی دارد از طریق سیستم عامل ویندوز تحت وب و موتور های Aspx این مسئله را حل کند و این سرورها سرورهایی گران هستند که معمولا -به خصوص در ایران - کمتر کسی به خرید و استفاده از آنها تن می دهد. اما در اکسس 2013 به بعد آن، طراحی و تغییر این وضعیت در دستور کار آفیس قرار گرفته است. داده ها و اشیاء پایگاه داده در SQL Server یا Microsoft Azure SQL Database ذخیره می شوند، بنابراین می توانید داده ها را در سازمان خود با استفاده از SharePoint داخلی به اشتراک بگذارید.

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

  1. Access 2013 یا جدیدتر را باز کنید و روی برنامه وب سفارشی کلیک کنید .

  2. نام و مکان سرور برنامه خود را وارد کنید (همچنین می توانید یک مکان سرور را از لیست مکان ها انتخاب کنید ) و روی ایجاد کلیک کنید .

نکته:  برای بررسی موقعیت سرور یا نام پایگاه داده خود، روی برگه File > Info کلیک کنید .

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

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

کادر جستجوی الگوی جدول در صفحه افزودن جداول.

برای افزودن یک جدول الگو:

 در کادر جستجو ، نوع اطلاعاتی را که قرار است ذخیره کنید، مانند وظایف یا افراد را تایپ کنید. روی دکمه جستجو کلیک کنید و یک جدول مناسب را از لیست ارائه شده انتخاب کنید.

نکته:  برای مشاهده همه گزینه‌های جدول الگو، همه را در کادر جستجو تایپ کنید .

اگر الگو دارای جداول مرتبط باشد، نماد چند جدول را خواهید دید. برای مثال، هنگامی که جدول Assets را اضافه می کنید، Access جدول مربوط به Employees را نیز اضافه می کند.

برای افزودن یک جدول خالی: روی افزودن یک جدول خالی جدیدنمادی که نشان دهنده حضور چندین جدول در قالب است، کلیک کنید .

می توانید جداول جدید اضافه شده را در قسمت سمت چپ مشاهده کنید.

کار با نماها

Access به طور خودکار برای هر جدول نماهای List و Datasheet ایجاد می کند. بسته به نوع الگوی جدولی که انتخاب می کنید، ممکن است نمای خلاصه ای را نیز مشاهده کنید که موارد را بر اساس یک فیلد خاص گروه بندی می کند. با کلیک بر روی علامت مثبت می توانید یک نما اضافه کنید.

برای ویرایش طرح نما از یک برنامه Access باز شده:

  1. یک جدول را انتخاب کنید.

  2. یک نما را انتخاب کنید.

  3. روی دکمه تنظیمات/عملکردها کلیک کنید و اقدامی را که می خواهید انجام دهید انتخاب کنید.

    نماهای موجود برای یک برنامه Access

    توجه:  حذف نماها (یا کنترل‌های روی نماها) داده‌های اساسی را حذف نمی‌کند.

افزودن داده ها

برای وارد کردن یا تغییر داده‌ها در جداول، در برگه صفحه اصلی ، روی Open in Browser کلیک کنید . جدول و نمای مورد نظر برای استفاده را انتخاب کنید، سپس از دکمه های نوار عمل برای افزودن، ویرایش و حذف موارد استفاده کنید. همچنین می توانید داده ها را از یک منبع خارجی مانند پایگاه داده دسکتاپ Access، یک فایل Microsoft Excel، یک منبع ODBC، یک فایل متنی یا یک لیست شیرپوینت وارد کنید. داده ها به عنوان یک جدول جدید اضافه خواهند شد. برای اطلاعات بیشتر وارد کردن داده از پایگاه داده Access به برنامه وب اکسس را ببینید .

انتخاب منبع داده: Access;  برتری داشتن؛  داده های SQL Server/ODBC.  متن/CSV؛  لیست شیرپوینت

توجه:  اگر پایگاه داده وب Access 2010 دارید، می توانید آن را در Access 2013 یا جدیدتر ویرایش کنید، اما نمی توانید آن را به یک برنامه وب اکسس به روز کنید. در عوض، یک برنامه وب سفارشی جدید ایجاد کنید و جداول را از پایگاه داده وب Access 2010 وارد کنید. نماهای پیش فرض به صورت خودکار ایجاد می شوند و می توانید نماهای سفارشی خود را اضافه کنید.

در حال ذخیره برنامه شما

با کلیک بر روی Save در نوار ابزار دسترسی سریع، تغییرات شما در سرور شیرپوینت آپلود می شود، بنابراین هیچ مرحله دیگری برای "انتشار" وجود ندارد.

برای تهیه نسخه پشتیبان یا جابجایی برنامه خود، با کلیک روی File > Save As > Save as New App، آن را به عنوان بسته برنامه شیرپوینت ذخیره کنید عنوانی را وارد کنید و انتخاب کنید که آیا می‌خواهید فقط طراحی برنامه خود را ذخیره کنید یا می‌خواهید داده‌ها را در بسته قرار دهید.

برای گزینه های بیشتر در مورد ذخیره برنامه خود، به ایجاد بسته برنامه Access در سایت Microsoft مراجعه کنید .

برای مروری سریع بر گزینه‌های بیشتر با برنامه‌های Access، به چه چیزی در Access 2013 جدید است در سایت Microsoft مراجعه کنید .

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

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

اکنون داستان موفقیت یک توسعه دهنده در مورد ساخت یک برنامه وب سفارشی MS Access را بخوانید.

چالش های پیرامون برنامه های کاربردی وب مایکروسافت

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

آرتور ناراحتی خود را از ساخت برنامه های کاربردی وب برای پایگاه داده های مایکروسافت اکسس در وبلاگ خود، " معضل توسعه دهنده دسترسی " توضیح می دهد:

توسعه دهندگان اکسس با یک معضل مواجه بودند (و هستند): به نظر می رسد هیچ آینده ای در توسعه ادامه دسترسی وجود ندارد.

  1. به نظر می رسد مایکروسافت این انجمن را رها کرده است.
  2. جایگزین ارائه شده توسط مایکروسافت، ویژوال استودیو، از نظر استاندارد، بزرگ و پیچیده است (شاید به اندازه جاوا بزرگ و پیچیده و سخت نباشد، اما این داستان دیگری است). حتی با آموزش حرفه‌ای و سال‌ها تجربه، یک توسعه‌دهنده شانس چندانی برای بهره‌وری واقعی (مثلاً قادر به صدور صورت‌حساب برای ساعت‌های کار) در کمتر از یک یا دو سال ندارد.
  3. جهان به سرعت از برنامه های دسکتاپ دورتر و به برنامه های مبتنی بر وب، نزدیکتر می شود.
  4. اکنون توسعه‌دهنده با مشکل توسعه اپلیکیشن‌ها برای گوشی‌های هوشمند، تبلت‌ها و سایر فناوری‌های جدید مواجه هستند.»

نحوه ایجاد یک اپلیکیشن وب اکسس

آرتور همچنان توضیح می دهد که چگونه درباره راه حل های وب را تحقیق و آزمایش کرده است. او در مقاله خود توضیح می دهد که چرا نرم افزار «آلفا» را برای توسعه سریع برنامه های وب انتخاب کرده است. او از پلتفرم توسعه وب و اپلیکیشن موبایل آلفا برای تبدیل پایگاه داده های دسکتاپ قدیمی Microsoft Access به پایگاه داده وب استفاده می کند. سخت ترین بخش های توسعه و اجرای برنامه های وب شما را سرعت می بخشد.

او نوشته:

"در یک کلام، من آلفا را دوست دارم. به هر خواسته ای که در حال حاضر از یک محصول توسعه می دهم پاسخ می دهد:

1.    RAD - در پیک. شما می توانید کارهای مهمی را در Alpha Five سریعتر از هر محیط توسعه دیگری که من می شناسم انجام دهید.

2.    زبان برنامه نویسی – Alpha Five بر روی XBasic ساخته شده است، یک زبان برنامه نویسی جامد که اتفاقاً چند پلتفرمی نیز می باشد. نقاط برتر و قوت آن عبارتند از:

آ.   دوستانه - XBasic بسیار شبیه VBA است، اما قدرتمندتر و مختصرتر است. توسعه دهندگان دسترسی تقریباً بلافاصله احساس راحتی می کنند. البته تفاوت‌هایی وجود دارد، مانند نام‌های کمی متفاوت برای رویدادها و ویژگی‌ها، اما اینها به راحتی قابل کنترل هستند.

ب   کلاس‌ها – XBasic کلاس‌های واقعی را بر خلاف پیاده‌سازی پیچیده، نامرغوب و نیمه کاره در Access پیاده‌سازی می‌کند.

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

3.    اتصالات پایگاه داده – آلفا پنج، فرمت پایگاه داده بومی خود را دارد اما اتصالات آسانی را با پایگاه داده های Access فراهم می کند. همچنین اتصالات ODBC را به هر پایگاه داده جدی ارائه می دهد، و یکی دو مورد که ممکن است نام آنها را نشنیده باشید.

4.    فرآیند توسعه وب – توسعه اپلیکیشن وب جایی است که Alpha Five واقعا می درخشد . صادقانه بگویم، درهای Access را منفجر می کند (بدون ذکر پلتفرم های متعدد دیگر). در ابتدای پروژه (یا هر زمان در طول توسعه)، توسعه‌دهنده می‌تواند انتخاب کند که آیا این پروژه برای دسکتاپ یا وب باشد. این انتخاب بر جعبه ابزار و ابزارهایی که ارائه می دهد تأثیر می گذارد.

5.    آموزش - در این دسته، Alpha Five درهای Access را باز می کند . در حالی که مایکروسافت برخی از برنامه های کاربردی را ارائه می دهد، احتمالاً پیشرفته ترین آنها یک برنامه ساده Time and Billing است. آلفا پنج از نظر کمیت و کیفیت بسیار فراتر می رود. قالب های برنامه وب آن به صورت حرفه ای طراحی و کدگذاری شده اند.

6.    عملکرد - من آلفا پنج را در برابر Access در چندین زمینه آزمایش کرده ام که این موارد شامل بومی/بومی، انتهای پشتی و اتصالات به SQL Server و MySQL است. در هر صورت، آلفا فایو بسیار بهتر از Access عمل می کند.

7.    زمان اجرا - این یک نگرانی مهم برای توسعه دهندگان Access است. مایکروسافت شامل یک بسته Runtime رایگان است که به توسعه‌دهنده اجازه می‌دهد یک برنامه کاربردی ایجاد کند و سپس آن را گسترش دهد. ... آلفا به جای Runtime یک Application Server ارائه می دهد که با هزینه ای ناچیز در نرم افزار گنجانده شده است. سپس توسعه‌دهنده Alpha حق دارد برنامه‌های Alpha Five را بین تعداد نامحدودی از مشتریان توزیع کند.

8.    انجمن - توسعه دهندگان دسترسی می دانند که جامعه توسعه دهندگان یک جزء حیاتی در توسعه موفقیت آمیز است. اکسس از چندین انجمن لذت می برد که توسعه دهندگان می توانند در صورت داشتن مشکلات توسعه به آنها مراجعه کنند. وب سایت آلفا نیز چنین جامعه ای را فراهم می کند." 

ساخت اپلیکیشن های وب مایکروسافت را به صورت رایگان امتحان کنید

Microsoft Access راه‌حل‌های تجاری کم‌ کد ایده‌آل را برای ساخت برنامه‌های وب ارائه می‌دهد . Alpha Anywhere Community Edition به هر توسعه‌دهنده‌ای که نیاز به ساخت یک برنامه وب، برنامه تلفن همراه یا می‌خواهد ایده‌های جدید برنامه وب را نمونه‌سازی کند، دسترسی کامل و باز را امکان‌پذیر می‌کند. از آنجایی که راه‌حل کم‌کد است، توسعه‌دهندگان می‌توانند بدون نیاز به نوشتن کد، توسعه برنامه وب را سرعت بخشند . به قدری گسترده که انگار یک اپلیکیشن بومی ساخته اند. برنامه های وب Microsoft Access را با برنامه ساز رایگان ما بسازید .

در محیط برنامه‌نویسی VBA، در پنجره Mudule چند جور می توان برنامه نویسی کرد:

بخش اول: تعیین کلیات و ایجاد مقدمات برنامه نویسی

بخش دوم: زیر بخش های هر ماژول(Subها و Functionها)


منظور از این بخش اول، همان خطی است که در آن عبارت زیر را مشاهده می کنید:

Option Compare Database

در این بخش می توانید تعیین کنید که Module چگونه کار کند، یا از چه متغییرهایی(عمومیGlobal، اختصاصی Private) استفاده کند کدام dll‌های ویندوز، یا DLL‌هایی را که خودتان تولید کرده اید را استفاده کند.فعلا به این بخش کاری نخواهیم داشت.

زیر بخش‌ها:

دو نوع زیر بخش می توانید ایجاد کنید، که در واقع در هر زیر بخش کدهای برنامه نویسی خود را تایپ می کنیم.

  1. زیر بخش از نوع Sub
  2. زیر بخش از نوع Function

فرقی که Sub با Function دارد به به قابلیت برگشت مقدار به برنامه ای دارد که آنرا فراخوانی کرده است.


مثلا یک زیر بخش یا یک زیر برنامه به نام زیر برنامه اصلی ()Sub Main، می سازیم و در آن یک پیام به کاربر می دهیم.

Sub main()
MsgBox "Hello"
End Sub


اکنون می خواهیم در همین زیر برنامه که دیگر به آن برنامه اصلی خواهیم گفت -چون نام زیر برنامه را زیر برنامه اصلی()Sub Main، گذاشته ایم- درخواست ورود یک مقدار از کاربر می کنیم.

Sub main()
InputBox "", "", "" 
End Sub


در مرحله بعد می خواهیم عبارتی را که از کاربر دریافت کرده ایم را نمایش دهیم:

Sub main()
MsgBox InputBox ("", "", "")
End Sub


همانطور که می بینید در این بخش دو پرانتز به خط اضافه شده است؛ این سئوال باید پیش بیاید، آیا نمی شد به این صورت این خط را بنویسیم؟

Sub main()
MsgBox InputBox "", "", ""
End Sub

پاسخ خیر است. اما چرا؟

در این خط دو دستور قرار داده‌ایم، یکی MsgBox که منجر به نمایش پیام می شود، و دیگری دستور InputBox با سه پارامتر اجباری که همگی از نوع جمله‌ای(String) هستند، و من از عبارتهای خالی برای این یه پارامتر استفاده کرده‌ام.

هر دستور خودش یک Sub یا Functions است که نیاز به تعریف ندارد.

اگر انتظار نداشته باشم که یک دستور مقداری را باز گرداند، نباید پارامترهای دستور را داخل پرانتز()، قرار دهیم؛ اما اگر انتظار داشته باشیم، مقداری را بازگرداند، اولا باید دستور قابلیت برگشت مقدار را داشته باشد یعنی نوعی Function باشد، و ثانیا باید بعد از دستور از علامت پرانتز() استفاده کنیم، و اگر پارامترهایی باید به دستور بدهیم باید، پارامترها را داخل پرانتز قرار دهیم و آنها را با , از هم جدا کنیم.

دستور Msgbox خودش می تواند مقداری را بازگرداند!

اما ما در اینجا چنین انتظاری از آن نداریم.

مثلا این دستور را ببنید:

MsgBox MsgBox("")

معنی دستور بالا یعنی: نمایش مقدار برگشت داده شده، از اجرای دستور MsgBox

یعنی ("")MsgBox مقداری را باز خواهد گرداند، و MsgBox سمت چپ(یعنی MsgBox اولی)، این مقدار را نمایش خواهد داد.

چند خط بالاتر این عبارت را نگاه کنید:

«دستور InputBox با سه پارامتر اجباری که همگی از نوع جمله‌ای(String) هستند،»، دستور MsgBox هم دارای یک پارامتر اجباری است و به همین دلیل مجبور هستیم داخل پرانتز از عبارت "" استفاده کنیم، یعنی یک پارامتر باید به Function یا دستور داخلی MsgBox وارد کنیم، موقعی که انتظار نداریم Msgbox، مقداری را بازگرداند پارامتر به MsgBox داده می شود، اما این پارامتر داخل پرانتز نیست:

Sub main()
MsgBox "Hello"
End Sub


حالا بیایید با آنچه که تا کنون گفته ایم کمی کار کنیم:

می خواهم یک Sub تولید کنم که هیچ پارامتر اجباری نداشته باشد، سپس آنرا اجرا کنم.

یک Sub به نام My_Box، که فقط پیامی را به عنوان پیش فرض نمایش می دهد.

Sub main()
      My_Box
End Sub

Sub My_Box()
MsgBox "Hello"
End Sub

My_Box در زیر برنامه اصلی صدا زده شده، اما پارامتری به آن داده نشده؛ خروجی این برنامه، نمایش پیام Hello است؛ و همیشه Hello را نمایش می دهد.

طرح یک سئوال و پاسخ به آن:

آیا می توانیم یک زیر برنامه ایجاد کنیم که هم پارامتر ورودی بتواند بگیرد و هم اگر به آن پارامتر نخواهیم بدهیم کار کند؟

ببینید که چرا این سئوال را از خودمان پرسیده ایم؟

وقتی دستور My_Box  را اجرا می کنیم فقط پیام Hello نمایش داده می شود، و نمی توانیم پیامی بجز Hello را نمایش دهیم، آیا می توانیم از هر دو امکان استفاده کنیم؟

یعنی: هم اگر نخواستیم پارامتری به زیر برنامه بدهیم، زیر برنامه به درستی کار کند، و اشکالی پیش نیاید؛ و هم اگر پیامی به آن دادیم پیام را نمایش دهد؟!

پاسخ کوتاه به این سئوال «بله» است.

اما برای پاسخ تشریحی به این سئوال باید دو مطلب را یادبگیرید:

  1. چگونه برای یک زیر برنامه پارامتر تعیین کنیم؟
  2. چگونه پارامتر را دلخواه، و غیر اجباری کنیم؟


چگونه برای یک زیر برنامه پارامتر تعیین کنیم؟

Sub main()
   My_Box "Hello"
End Sub

Sub My_Box(parameter)
   MsgBox parameter
End Sub

در این دو زیر برنامه ای که بالا ساخته ایم، پارامتری اجباری برای زیر برنامه My_Box تنظیم شده است؛ عبارت Paremeter در این بخش شبیه به ظرفی عمل می کند که عبارت Hello را با خودش به Sub وارد می کند و همین عبارت را جلوی دستور MsgBox قرار می دهد.

به اصلاح به Parameter متغییر می گویند، چونکه مقدار داخل اش توسط شما قابل تغییر است.


چگونه پارامتر را دلخواه، و غیر اجباری کنیم؟ 

Sub main()
   My_Box 
End Sub

Sub My_Box(Optional parameter="Hello")
   MsgBox parameter
End Sub

در این دو زیر برنامه ای که بالا ساخته ایم، پارامتر زیر برنامه My_Box دارای مقدار پیشفرض شده و غیر اجباری شده است.

مقدار پیشفرض با اضافه کردن عبارت "Hello"= داخل پرانتز، و غیر اجباری شدن پارامتر با عبارت Optional انجام شده.


تا اینجا اگر بجای عبارت Sub از Function استفاده کنید، هیچ اشکالی پیش نخواهد آمد.

اما از اینجا به بعد می خواهیم از معنی واقعی Function استفاده کنیم، پس باید جایی که Function نیاز است، Function بنویسیدو جایی که به Sub نیز است، Sub بنویسید.

اصولا وقتی Function  را نیاز خواهیم داشت که بخواهیم مقداری را از دستوری که function را فراخوانی کرده بدست آوریم. یک مثال می زنم.

شما فرماندهی هستید و دو سرباز دارید، که هر دو متخصص تخریب هستند، دو پُل در جَنگ وجود دارد که باید تخریب شوند، یکی از سربازها را با مقداری مُهمات برای تخریب پل اول، مامور می کنید.

سرباز اول sub است به نام solider  او به پل می رسد و آنرا تخریب می کند و سپس پیش شما بر می گردد.

Sub Solider()

Delete The Bridge

End sub

سرباز دوم را با مقداری مهمات برای تخریب پُل دوم، مامور می کنید.

سرباز دوم function است به نام modern_solider  او به پُل می رسد و آنرا بمب‌گذاری می کند، اما آنرا تخریب نمی کند و سپس پیش شما بر می گردد، او برای شما یک Remote Control یا یک کنترل از را دور بیسیم می آورد و به شما می گوید این کنترل تخریب پل است.

Function modern_solider() as Boolean

Bombing The Bridge

End function

اکنون می توانید با استفاده از ریموت کنترل، کنترل بهتری روی تخریب پُل داشته باشید، حتی ممکن است پُل را تخریب نکنید، یا در زمان مناسب تری آنرا تخریب کنید.


برای استفاده از Function در محیط VBA مثالی می زنیم:

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

Sub main()

    MsgBox MY_Input()

End Sub

Function MY_Input() as Variant

    MY_Input=InputBox ("","","")

End function

روال اصلی(main) یک تابع(function) را صدا می زند و مقدار برگشتی آنرا به صورت یک پیام نمایش می دهد.

تابع (function) که نامش MY_Input است، هیچ پارامتری دریافت نمی کند، فقط عبارتی را از کاربر دریافت می کند. سپس این عبارت را باز می گرداند.

وقتی تابع(function)یی را تعریف می‌کنید باید تعیین کنید که چه نوع مقداری را باید بازگرداند، البته در VBA می توانید تعیین کنید مقدار از هر نوعی می‌تواند باشد (Variant)، پس از فراخوانی تابع همان نام تابع شبیه به ظرفی(متغییری) عمل می کند و حاوی مقداری خواهد شد که برگردانده.

یعنی در sub به نام main ، می توانید تصور کنید که در متغییری به نام My_Input مقدار وجود داردکه  از همین تابع(function) بدست آمده. 


برای ورود به بخش برنامه نویسی VBA  پس از آنکه وارد نرم افزار اکسس شدید، و فایل جدید را ساختید، کلید های Alt+F11 را بزنید، بااینکار وارد پنجره ای خواهید شد که عنوان ان با این عبارت شروع می شود: Microsoft Visual Basic for Applications، دقت کنید که Applications،ا(s) جمع دارد. یعنی همه Application های آفیس از این بخش بهره می برند، اما این بخش جزء جدایی ناپذیر Access است. در این پنجره وقتی زمینه خاکستری می بینید یعنی ماژولی وجود ندارد که بخواهید در آن برنامه نویسی کنید، و یا  همه ماژول ها بسته شده اند.

برای ایجاد ماژول(Module) جدید از منوی Insert گزینه Module را انتخاب کنید. تا یک پنجره جدید باز شود. پس از نمایان شدن پنجره جدید در آن عبارت زیر را خواهید دید.

Option Compare Database

به این عبارت کاری نداشته باشید.

زیر این عبارت، عبارات زیر را تایپ کنید.

Sub main()
MsgBox "Hello"
End Sub

اکنون شما نخستین برنامه خود را نوشته اید. سه نکتۀ زیر را در نظر بگیرید و به دنیای برنامه نویسی خود سلام کنید.

  1. فرقی نمی کند که با حروف بزرگ یا کوچک تایپ کرده باشید.
  2. ولی فاصله ها مهم هستند. مثلا باید حتما بین "MsgBox"Hello فاصله باشد.
  3. برای اجرای این برنامه ای که نوشتید کلید F5 صفحه کلید را بزنید.

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

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

پس این  کارها را انجام می دهید:

  1. تعریف مقادیر
  2. مقایسه مقادیر
  3. دستور دادن

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

(بعضی اوقات حس می کنید دستوراتی که صادر می کنید در توان زیرمجموعه شما- که وظیفه انجام دستورات شما دارند- نیست، در چنین شرایطی مجبور هستید برون سپاری کنید: برون سپاری معادل با استفاده از dll‌ها است- وقتی از dll ها استفاده می کنید دقیقا همان کاری را می کنید که تاکنون می‌کردید یعنی هر سه کار بالا را باز هم انجام خواهید داد.)

ابتدا به دستورات خواهیم پرداخت، قبل از صدور دستورات باید دستورات را دسته بندی کنید- هر دسته بندی را یک رویه(دستورالعمل) می نامیم.


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

رویه Sub مجموعه ای از دستورات ویژوال بیسیک است که توسط دستورات Sub و End Sub محصور شده است که اقداماتی را انجام می دهد اما مقداری را بر نمی گرداند.

رویه Function مجموعه ای از دستورات ویژوال بیسیک است که توسط دستورات Function و End Function محصور شده است. یک رویه Function مشابه رویه Sub است، اما یک تابع همچنین می تواند مقداری را برگرداند.

برای فراخوانی یک رویه Sub از رویه دیگر، نام رویه را تایپ کرده و مقادیری را برای هر آرگومان مورد نیاز وارد کنید. دستور Call الزامی نیست، اما اگر از آن استفاده می کنید، باید هر آرگومان را در پرانتز قرار دهید.

هنگامی که یک روش Sub یا Function را فراخوانی می‌کنید، می‌توانید آرگومان‌ها را به‌صورت موقعیتی، به ترتیبی که در تعریف رویه ظاهر می‌شوند، ارائه دهید، یا می‌توانید آرگومان‌ها را بدون در نظر گرفتن موقعیت، با نام ارائه کنید.

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

اعلان متغیرها
هنگام اعلان متغیرها، معمولاً از دستور Dim استفاده می کنید. یک عبارت اعلامیه را می توان در یک رویه قرار داد تا یک متغیر در سطح رویه ایجاد کند. یا ممکن است در بالای یک ماژول، در بخش Declarations قرار داده شود تا یک متغیر در سطح ماژول ایجاد شود.

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

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

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

استفاده از عبارات If...Then...Else
می توانید از دستور If...Then...Else برای اجرای یک دستور خاص یا بلوکی از دستورات بسته به مقدار یک شرط استفاده کنید. عبارات If...Then...Else را می توان در سطوح مختلفی که شما نیاز دارید تو در تو قرار داد.

استفاده از عبارت Select Case
هنگام مقایسه یک عبارت با چندین مقدار مختلف، از عبارت Select Case به عنوان جایگزینی برای استفاده از ElseIf در عبارات If...Then...Else استفاده کنید. در حالی که عبارات If...Then...Else می توانند یک عبارت متفاوت را برای هر عبارت ElseIf ارزیابی کنند، دستور Select Case یک عبارت را فقط یک بار در بالای ساختار کنترل ارزیابی می کند.

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

دستورات Do...Loop
می توانید از دستورات Do...Loop برای اجرای یک بلوک از دستورات به تعداد نامحدود استفاده کنید. عبارات یا زمانی که یک شرط True است یا تا زمانی که یک شرط True شود، تکرار می شوند.

عبارات For...Next
می توانید از عبارات For...Next برای تکرار یک بلوک از عبارات به تعداد مشخص استفاده کنید. برای حلقه ها از یک متغیر شمارنده استفاده کنید که مقدار آن با هر تکرار حلقه کم یا زیاد می شود.

اشیا، روش ها، ویژگی ها و رویدادها
یک شی نشان دهنده یک عنصر از یک برنامه کاربردی است، مانند یک کاربرگ، یک سلول، یک نمودار، یک fo

رویه یا Procedure مجموعه ای از کدهای مرتبط با هم است که درون یک ماژول در محیط VBE نوشته شده و عمل خاصی را انجام میدهند. دو نوع رویه (Procedure) در VBA وجود دارد:

  1.  زیرروال‌ها (Subroutines)
  2.  توابع (Functions)

(Subroutines) زیرروال‌ها یا Subroutineها:

مجموعه ای از کدهای VBA است که درون یک ماژول نوشته شده و در زمان اجرا توسط کاربر یا فراخوانی توسط زیرروال دیگر، عمل خاصی را انجام میدهد. زیرروال ها همیشه با کلمه کلیدی Sub همراه با نام ماکرو یا زیرروال شروع شده و با عبارت Sub End پایان مییابند.

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

نکته 2 : برای اجرای آزمایشی زیرروالهای بدون آرگومان, میتوانید بعد از کلیک درون زیرروال, دکمه F5 را فشار دهید و یا از منوی Run دستور Sub Run را انتخاب کنید.

در زیر روال ها یا تابع ها دستوراتی تایپ می شود و انتظار می رود هنگام اجرای روتین(sub) یا تابع(function)، دستورات صادر شده اجرا شوند.

دستورات VBA را می توان به دو دسته تقسیم کرد:

  1. دستوراتی که جزء دستور زبان(Syntext) ویژوال بیسیک هستند.
  2. دستوراتی که جزء موتور VBA مستقر در Access است،.

دستورات دسته اول(1) دستورات یا عملگرهای عمومی Visual Basic:

اینگونه دستورات، در همه برنامه هایی که از دستور زبان VB استفاده می کنند کاربرد دارد. مانند دستور MsgBox و یا دستور InputBox.

دستورات دسته، دوم(2) دستورات یا عملگرهای اختصاصی Visual Basic fo Access:

اینگونه دستورات در سایر برنامه‌ها مانند VB و یا Excel و Word و ... بی معنی هستند، یا به صورت اتفاقی مشترکا در آن برنامه‌ها کارایی مشابه دارند، اما جزء دستورات اختصاصی VBA در Access به شمار می‌آیند.

به دلیل اینکه در حال بررسی نرم افزار Access هسیتم ابتدا دستورات دسته دوم را بررسی خواهیم کرد، بررسی دستورات دسته اول را در همین صفحه خواهید یافت.


دستورات یا عملگرهای اختصاصی Visual Basic fo Access:

هر کدام از دستورات دارای پارامترها و شرایط اجرای منحصر به خود هستند، پس از یک نگاه کلی به همه دستورات به جزئیات آنها خواهیم پرداخت.

دسترسی به شی AccessObject
دسترسی به ویژگی شی AccessObjectProperty
دسترسی به ویژگی های شی AccessObjectProperties
داده اضافی AdditionalData
همه نمودارهای پایگاه داده AllDatabaseDiagrams
همه فرم ها AllForms
همه توابع AllFunctions
همه ماکروها AllMacros
همه ماژول ها AllModules
همه پرس و جوها AllQueries
همه گزارش ها AllReports
همه رویه های ذخیره شده AllStoredProcedures
همه جداول AllTables
همه نماها AllViews
کاربرد Application
پیوست Attachment
تصحیح خودکار AutoCorrect
قاب شی محدود شده BoundObjectFrame
چارت سازمانی Chart
محور نمودار ChartAxis
سری نمودار ChartSeries
مقادیر نمودار ChartValues
کادر را علامت بزنید CheckBox
داده های کد CodeData
پروژه کد CodeProject
جعبه ترکیبی ComboBox
دکمه فرمان CommandButton
کنترل Control
کنترل ها Controls
داده های جاری CurrentData
پروژه فعلی CurrentProject
کنترل سفارشی CustomControl
اطلاعات وابستگی DependencyInfo
اشیاء وابستگی DependencyObjects
فرمان را انجام دهید DoCmd
کنترل مرورگر لبه EdgeBrowserControl
سلول خالی EmptyCell
وجود، موجودیت Entity
موجودیت ها Entities
فرم Form
شرط قالب FormatCondition
شرایط قالب FormatConditions
تشکیل می دهد Forms
سطح گروه GroupLevel
هایپر لینک Hyperlink
تصویر Image
مشخصه ورود و صدور ImportExportSpecification
مشخصات  ورود و صدور ImportExportSpecifications
برچسب Label
خط Line
کادر فهرست ListBox
خطای ماکرو MacroError
مدول Module
ماژول ها Modules
دکمه ناوبری NavigationButton
کنترل ناوبری NavigationControl
قاب شی ObjectFrame
عمل Operation
عملیات Operations
دکمه گزینه OptionButton
گروه گزینه OptionGroup
صفحه Page
صفحات Pages
صفحه شکستن PageBreak
چاپگر Printer
چاپگرها Printers
خواص Properties
مستطیل Rectangle
ارجاع Reference
منابع References
گزارش Report
گزارش ها Reports
متغیر بازگشتی ReturnVar
متغیرهای بازگشتی ReturnVars
صفحه نمایش Screen
بخش Section
منبع مشترک SharedResource
منابع مشترک SharedResources
برچسب هوشمند SmartTag
اقدام تگ هوشمند SmartTagAction
اقدامات برچسب هوشمند SmartTagActions
ویژگی تگ هوشمند SmartTagProperty
ویژگی های برچسب هوشمند SmartTagProperties
برچسب های هوشمند SmartTags
فرم فرعی SubForm
کنترل برگه TabControl
متغیر دما TempVar
متغیرهای دما TempVars
جعبه متن TextBox
دکمه جابجایی ToggleButton
کنترل مرورگر وب WebBrowserControl
سرویس وب WebService
خدمات وب WebServices
پارامتر WS WSParameter
پارامترهای WS WSParameters
شمارش ها Enumerations

در بین دستورات بالا دستوری وجود دارد(DOCMD) که از دامنه وسیعی استفاده می کند این دستور وقتی به زیردستور SQL می رسد بسیار وسیعتر می شود، این دستور وظیفه برقراری ارتباط با موتور SQL را دارد و یک رشته را به برای آن ارسال می کند و نتیجه اجرای این عملیات را برای VBA باز می گرداند، اما در واقع شما با یک موتور قوی روبرو هستید که به عبارتی اصول کار Access نیز بر روی این موتور بنا نهاده شده است. لذا درباره دستور DOCMD.RunSQL باید به صورت ویژه توضیح داده شود، که در این صفحه به صورت اختصاصی به آن خواهیم پرداخت.


 دستورات یا عملگرهای عمومی Visual Basic:

بررسی اجمالی Overview  
آرایه Array
دسترسی به یک شیء با نام شیء CallByName
انتخاب Choose
فرمان Command

توابع تبدیل

Conversion

ایجاد شی CreateObject
مسیر(دایرکتوری) جاری CurDir
تاریخ Date
افزودن تاریخ DateAdd
تفاوت تاریخ DateDiff
قسمت تاریخ  DatePart
سریال تاریخ DateSerial
مقدار تاریخ DateValue
روز Day
DDB DDB
دایرکتوری Dir
انجام یک رویداد به صورت درخواست DoEvents
دسترسی به متغییرهای محیط ویندوز Environ
به انتهای فایل رسیده ایم؟ EOF
خطایی رخ داده؟ Error
ویژگی فایل FileAttr
تاریخ و زمان ایجاد فایل FileDateTime
طول فایل FileLen
فیلتر کردن Filter
فرمت پول FormatCurrency
فرمت تاریخ زمان FormatDateTime
شماره قالب FormatNumber
فرمت درصد FormatPercent
آزاد کردن فایل FreeFile
FV
دریافت همه تنظیمات GetAllSettings
دریافت ویژگی ها GetAttr
دریافت شی GetObject
دریافت تنظیمات GetSetting
ساعت Hour
اگر کوتاه IIf
وضعیت IME IMEStatus
ورودی Input
جعبه ورودی InputBox
بررسی وجود رشته ای در رشته‌ای دیگر InStr
InStrRev
IPmt
IRR
آرایه است؟ IsArray
تاریخ است؟ IsDate
خالی است؟ IsEmpty
آیا خطا است؟ IsError
مفقود شده است؟ IsMissing
نول(Null) است؟ IsNull
عدد است؟ IsNumeric
آیا شیء است؟ IsObject
پیوستن Join
طول محدود LBound
مورد طول LCase
ترک کرد Left
طول Len
محل Loc
طول فایل LOF
برش فواصل خالی، از چپ، از راست راست  LTrim, RTrim, and Trim
شناسه Mac MacID
اسکریپت MAC MacScript

توابع ریاضی

اواسط یک رشته Mid
دقیقه Minute
MIRR
ماه Month
نام ماه MonthName
جعبه پیام MsgBox
اکنون Now
NPer
NPV
تقسیم بندی Partition
بعد Pmt
PPmt
PV
رنگ QB QBColor
نرخ Rate
جایگزین کردن Replace
ساخت یک رنگ با سه رنگ اصلی RGB
درست Right
گردکردن عدد Round
دومین Second
جستجو کردن Seek
پوسته Shell
SLN
فاصله ها Space
Spc
شکاف Split
مقایسه رشته ها StrComp
تبدیل رشته StrConv
رشته String
معکوس رشته StrReverse
تعویض Switch
SYD
Tab
زمان Time
تایمر Timer
سریال زمانی TimeSerial
ارزش زمانی TimeValue
اسم را تایپ کن TypeName
کران بالا UBound
حروف بزرگ UCase
نوع متغیر VarType
روز هفته Weekday
نام روز هفته WeekdayName
سال Year

عملگرها

عملگرها و توابع از جمله ابزارهای VBA برای انجام محاسبات می باشند.

عملگرهای VBA دارای تقدم هایی نسبت به هم می باشند که برای ایجاد تغییر در این تقدم ها می توانید از پرانتز استفاده کنید.

عملگرهای حسابی

عملگر ^ : توان

عملگر - : منفی

عملگر * : ضرب

عملگر / : تقسیم
عملگر \ : خارج قسمت تقسیم صحیح
عملگر Mod : باقیمانده تقسیم صحیح
عملگر - : تفریق
عملگر + : جمع
عملگر & : الحاق دو رشته متنی به هم

 عملگرهای مقایسه‌ای

عملگر =
عملگر <
عملگر >
عملگر =<
عملگر =>
عملگر <>

عملگر Like 

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

در تعریف نوع مقایسه میتوانید از کارکترهای جایگزین زیر استفاده کنید:

کارکتر مفهوم

؟ یک کارکتر

* چند کارکتر

# یک رقم از 0 تا 9

charlist یک کارکتر از لست کاراکترها

عملگرهای منطقی

عملگر And
عملگر Or
عملگر Not
عملگر Xor
عملگر Eqv
عملگر Imp

  • اگر در برنامه نویسی خیلی مبتدی هستید، از اینجا شروع کنید.
  • باید Access و محیط Desktop آن‌را بشناسید تا بتوانید برای آن برنامه‌نویسی کنید، برای آشنایی با ♣ Microsoft Office Access از اینجا شروع کنید.

    • اضافه کردن یک فیلد به جدول
    • حذف یک فیلد از جدول
    • تغییر نوع فیلد یک جدول
    • تغییر مقدار پیش‌فرض یک فیلد در یک جدول مشخص