accdbExe

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

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

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

برای فهم آرایه یک مثال می‌زنم:

فرض کنید تعدادی متغییر داریم که می‌خواهیم همه را نمایش دهیم، اگر متغییرها دارای یک الگو باشند راحتتر می توانیم از آنها استفاده کنیم، مثلا من 100 متغییر تعریف می کنم و آنها را اینطوری نام گذاری می کنم A0وA1وA2وA3وA4و...,A99، حالا می خواهم آنها را نمایش دهم، به این صورت کد می نویسم:

msgbox A0

msgbox A1

msgbox A2

msgbox A3

msgbox A4

msgbox ...

msgbox A99

باید برای ... همه چنین دستوراتی زیر هم کپی شوند، شما حتما درک می کنید که تغییرهای A5 تا A98 باید در ... تایپ شوند.

اگر تعداد متغییر ها بیشتر باشد، شاید بتوانیم این عملیات را با کپی پیست(Copy/Paste)، انجام دهیم ولی تعداد خطوط کدهای نوشته شده 100 خط افزایش خواهد یافت، همین کار را می توان با  4 خط انجام داد!

فرض کنید این دستور را بنویسیم:

Dim A(100)

for i = 0 to 99

msgbox A(i)

next

خروجی همان 100 خط کد بالا است!

یک متغییر با 100 عضو ایجاد کرده‌ام که در نام آن می‌توانم از متغییر دیگری استفاده کنم!

می‌توانم بجای عدد موجود در نام متغییر مثل A99 از این عبارت استفاده کنم (99)A، به شرطی که متغییر را از این نوع تعریف کنم این نوع را آرایه می گویند، حالا می توانم بجای عدد 99 از متغییر i استفاده کنم.

Dim A(100)

i=99

msgbox A(i)

و در بلوک دستور بعدی از متغییر i در یک حلقه استفاده کنم و i را تغییر دهم.

Dim A(100)

for i = 0 to 99

msgbox A(i)

next


  • Base 0 & 1

دستور تعیین پایه 0 یا 1:

همانطور که می دانید در کامپیوتر همیشه اعداد از 0 شروع می شوند یعنی اعداد یک رقمی از 0 تا 9 هستند؛ با استفاده از این دستور می توانید تعیین کنید که در حال تفسیر کدهای برنامه نویسی شده شما، کامپیوتر، اعداد را از 1 شروع کند.


Base 0 & 1
Option Base {0 | 1}

از آنجا که پایه پیش فرض 0 است، دستور Option Base هرگز مورد نیاز نیست.

اگر بخواهید که تفسیر کدهای برنامه نویسی شده شما، در حالت پیش فرض همیشه اعداد از 1 شروع شوند، باید فقط یک بار در یک ماژول(Module)، Option Base را استفاده کنید.


DIM

دستور ایجاد یک متغییر یا ایجاد یک آرایه، در Visual Basic و VBA استفاده از متغییرها بسیار-بسیار آسان ست، نه تنها نیاز به تعریف متغییرها قبل از استفاده از آنها نیست حتی لازم نیست نوع متغییر را تعیین کنید، و حتی می توانید از نوعی از متغییر در شرایط سخت استفاده کنید که هر نوعی میتواند داشته باشد، یعنی میتواند هم عددی باشد و هم جمله ای.

اما اگر سعی داشته باشید متغییر یا نوع آنرا تعیین کنید می توانید از دستور DIM استفاده کنید.

اما برای تعریف متغییرهای آرایه ای قضیه کمی متفاوت‌تر است، در این باره باید حتما از دستور DIM استفاده کنید و تعیین کنید که متغییر چند عضو باید داشته.


Dim
Dim statement placed right in the procedure where it's going to be used. The value of a procedure level variable
cannot be accessed outside it's procedure. When the procedure finishes (End Sub or End Function), the variable
is destroyed and memory allocated to the variable is released.
Example:
Dim Word As String


ReDim

در برنامه نویسی VBA تعداد اعضای آرایه قابل تغییر نیست، اگر تعداد اعضای یک آرایه را تغییر دهید، تمام اطلاعات موجود در متغییرهای آرایه حذف خواهد شد، اما غیر ممکن نیست؛ یعنی می توان تعداد اعضای یک آرایه را تغییر داد.

مثلا اگر آرایه‌ای 100 عضو داشته باشد و بخواهیم تعداد اعضای آنرا به 200 عضو تغییر دهیم، امکانپذیر است، برای این منظور از دستور Redim استفاده می کنیم.

دستور نوشتاری فرمان(Syntax) به نحو زیر است:


ReDim
Used at procedure level to reallocate storage space for dynamic array variables.
Syntax
ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .
The ReDim statement syntax has these parts:
Part Description
Preserve Optional. Keyword used to preserve the data in an existing array when you change the size
of the last dimension.
varname Required. Name of the variable; follows standard variable naming conventions.
subscripts Required. Dimensions of an array variable; up to 60 multiple dimensions may be declared.
The subscripts argument uses the following syntax:
[lower To] upper [,[lower To] upper] . . .
When not explicitly stated in lower, the lower bound of an array is controlled by the
Option Base statement. The lower bound is zero if no Option Base statement is present.
Aaron Wirth
20
type Optional. Data type of the variable; may be Byte, Boolean, Integer, Long, Currency,
Single, Double, Decimal (not currently supported), Date, String (for variable-length
strings), String * length (for fixed-length strings), Object, Variant, a user-defined type, or
an object type. Use a separate As type clause for each variable being defined. For a
Variant containing an array, type describes the type of each element of the array, but
doesn't change the Variant to some other type.
Remarks
The ReDim statement is used to size or resize a dynamic array that has already been formally declared using a
Private, Public, or Dim statement with empty parentheses (without dimension subscripts).
Example:
Dim X(10, 10, 10)
[Code]
ReDim Preserve X(10, 10, 15)


Erase statement

متغییرها، مقداری حافظه اشغال می کنند اما این مقدار در برابر حافظه کامپیوتر خیلی کم است، اما اگر از آرایه استفاده کنید، به تعداد اعضای آرایه از حافظه استفاده می‌شود و استفاده بی رویه از آرایه ها موجب اشغال بیش از حد حافظه و نهایتا از کار افتادن نرم افزار خواهد شد، مثلا یک متغییر 10000 عضوی، 10000 بار بزرگتر از یک متغییر یک عضوی است، پس از اینکه با آرایه‌ها کارمان تمام شد باید آنها را حذف کینم، هر چند موقع خروج از نرم افزار یا موقع خروج از یک زیر برنامه به صورت خودکار آرایه ها حذف می شوند، اما طی استفاده از برنامه، برنامه نویس باید به آرایه ها توجه داشته باشد(چون برخی آرایه ها به صورت عمومی تعریف می شوند)، و اگرنه کاربران نرم افزار به او خواهند گفت هر بار که از نرم افزار شما استفاده می کنیم سیستم به شدت کند می شود!

برای حذف آرایه هاز دستور Erase استفاده می کنیم. خیلی راحت "نام آرایه Erase".

دستور نوشتاری فرمان(Syntax) به نحو زیر است:


Erase statement
Reinitializes the elements of fixed-size arrays and releases dynamic-array storage space.
Syntax
Erase arraylist
The required arraylist argument is one or more comma-delimited array variables to be erased.
Remarks
Erase behaves differently depending on whether an array is fixed-size (ordinary) or dynamic. Erase recovers
no memory for fixed-size arrays. Erase sets the elements of a fixed array as follows:
Type of Array Effect of Erase on Fixed-Array Elements
Fixed numeric array Sets each element to zero.
Fixed string array (variable
length)
Sets each element to a zero-length string ("").
Fixed string array (fixed
length)
Sets each element to zero.
Fixed Variant array Sets each element to Empty.
Array of user-defined types Sets each element as if it were a separate variable.
Array of objects Sets each element to the special value Nothing.
Example:
Erase sMessage
In a regular array, the Erase statement will simply initialize all the elements. (False for Boolean, 0 for numbers,
and "" for strings). In a dynamic array, Erase will also release all the memory allocated to the array.


Array Function

معمولا برای مقدار دهی به آرایه پس از تعریف آرایه در خط دستور مقادیری را به آرایه اختصاص می دهیم، مثلا:

Dim A(100)

for i = 0 to 99

msgbox A(i)

next

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

اما یک راه دیگر برای قرار دادن مقادیر در آرایه ها وجود دارد که می توان با استفاده از این روش هنگام تعریف آرایه ها همزمان به آن مقدار داد؛ این روش مثلا برای تعریف آرایه ای 12 عضوی که شامل اسامی ماههای سال باشد، یا آرایه های 7 عضوی که شامل اسامی روزهای هفته باشد، استفاده می شود.

مثلا:

MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")

در این دستور یک آرایه 7 عضوی که اعضای آن از 0 تا 6 نامگذاری می شوند، (0)MyWeek تا (6)MyWeek بوجود آمده.

دستور نوشتاری فرمان(Syntax) به نحو زیر است:

Array Function

Returns a Variant containing an array.
Syntax
Array(arglist)
The required arglist argument is a comma-delimited list of values that are assigned to the elements of the array
contained within the Variant. If no arguments are specified, an array of zero length is created.
Remarks
The notation used to refer to an element of an array consists of the variable name followed by parentheses
containing an index number indicating the desired element. In the following example, the first statement creates
a variable named A as a Variant. The second statement assigns an array to variable A. The last statement
assigns the value contained in the second array element to another variable.
Example:
Dim MyWeek, MyDay
MyWeek = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
' Return values assume lower bound set to 1 (using Option Base
' statement).
MyDay = MyWeek(2) ' MyDay contains "Tue".
MyDay = MyWeek(4) ' MyDay contains "Thu".