
توجه: روش جدید بکار گیری این توابع را در اکسس در سایت فرساران ببینید.
مقدمه
بعد از انتشار توابع کار با تاریخ و عدد به حروف در اکسل ، برخی از دوستان سوال کردند که چگونه میتوان از این امکانات [1] در نرم افزار اکسس نیز استفاده کرد. در این مقاله نحوه نصب و بکارگیر این توابع را فرا خواهیم گرفت.
اگر ما DLL ها را بشناسیم ، خیلی ساده جواب این سوال را پیدا خواهیم کرد یعنی میدانیم DLL فایلی است ترجمه شده و میتوان آنرا به همان سادگی که در اکسل فراخوانی کردهایم، در اکسس نیز آن کار را تقریبا با همان ترفندها انجام دهیم.
قدم اول :
ابتدا بایستی محتویات فایل add-in.xla را در یک ماژول اکسس کپی کنید.
این فایل شامل تعاریف فایلهای DLL است و همان فایلی است که در اکسل از آن استفاده کردهایم و میتوانید فایل را از وبلاگ farsaran.blogfa.com دریافت کنید . البته برای سادگی کاربرد، محتویات این فایل در ادامه همین مقاله در پیوست شماره 1 آمده است.
قدم دوم :
- Access را اجرا کنید و بانک اطلاعاتی خود را باز کنید.
- به قسمت Modules بروید و گزینه New را انتخاب کنید.
با اینکار شما وارد محیط ویژوال بیسیک خواهید شد

قدم سوم :
- محتویات پیوست 1 را انتخاب کنید و در ماژول (پنجره که باز شده است آنرا کپی کنید.)
نتیجه کار شما چیزی مشابه شکل زیر باید باشد.
- ماژول را Save کنید .
( با زدن روی دکمه نشان داده شده در شکل زیر میتوانید اینکار را انجام دهید.)
- نام پیش فرض برای این ماژول Module1 است ، آنرا بپذیرید تا ماژول با این نام در فایل اکسس شما ذخیره شود.

قدم چهارم :
در این مرحله بایستی فایلهای DLL [2] را نصب کنید.
از منوی Tools گزینه Prefrences را انتخاب کنید.

- در پنجره باز شده با زدن دکمه Browse فایلهای addad2horof.dll و VJDate.dll را انتخاب کنید.

- از محیط ویژوال بیسیک خارج شوید . (Alt+Q)
حال میتوانید از توابع استفاده کنید. در ادامه به ذکر چند مثال ساده ! از موارد استفاده این توابع در اکسس میپردازیم .
در صورتیکه دوستان عزیز کاربردهای متنوعتری از این توابع را در پروژههای خود بکار گرفتند ، لطفا نتیجه کار خود را برای اینجانب بفرستند تا در اختیار سایرین نیز قرار گیرد.
مثال شماره 1- تبدیل عدد به حروف در یک Query
ابتدا یک Table با مشخصات زیر میسازیم.
|
نام فیلد : Name |
نوع داده : Text |
|
نام فیلد : Salary |
نوع داده: Number |

میخواهیم حقوق (salary) را به صورت حروف داشته باشیم . برای این منظور یک Query مانند شکل میسازیم و از تابع ABH به این صورت استفاده میکنیم :
Horof:ABH([Salary])
میدانیم که Horof نام فیلد جدید ما است و هر چیز دیگری میتواند باشد !

بعد از اجرای Query خواهیم داشت :

مثال شماره 2- درج روز هفته و تاریخ در یک Form
برای این منظور یک Form از Query که در مرحله قبل ایجاد کردهایم یک Form میسازیم و سپس این Form را در نمای Design باز میکنیم.
دو Textbox در فرم ایجاد میکنیم و سپس فرمولهای زیر را در این دو Textbox وارد میکنیم:
=j_today()
=j_weekday(j_today(),1)
شکل زیر میتواند به شما در ساختن این فرم کمک کند.

نتیجه نهایی Form را در شکل زیر مشاهد میکنید.

پیوست شماره 1
Function ABH(Number As String)
Dim obj As addad2horof.addadconventor
Set obj = New addadconventor
ABH = obj.DivID(Number)
End Function
Function J_TODAY(Optional Mode As Integer)
Dim x1 As New VJDate.DateClass
x1.Initial
If Mode = 1 Then
temp$ = x1.Jtoday("long")
J_TODAY = Left(temp$, 4) & "/" & Mid(temp$, 5, 2) & "/" & Right(temp$, 2)
Else
temp$ = x1.Jtoday("short")
J_TODAY = Left(temp$, 2) & "/" & Mid(temp$, 3, 2) & "/" & Right(temp$, 2)
End If
End Function
Function J_WEEKDAY(JDate As String, Optional Mode As Integer)
Dim x2 As New VJDate.DateClass
x2.Initial
Dim temp$
If Mode = 1 Then temp$ = "long" Else temp$ = "short"
J_WEEKDAY = x2.JWeekDay(x2.NormDate(JDate), temp$)
End Function
Function J_NORMDATE(JDate As String)
Dim x3 As New VJDate.DateClass
x3.Initial
J_NORMDATE = x3.NormDate(JDate)
End Function
Function J_ADDDAY(JDate As String, Number As Integer, Optional Mode As Integer)
Dim x4 As New VJDate.DateClass
x4.Initial
If Mode = 1 Then
temp$ = x4.JAddDay(x4.NormDate(JDate), Number, "long")
J_ADDDAY = Left(temp$, 4) & "/" & Mid(temp$, 5, 2) & "/" & Right(temp$, 2)
Else
temp$ = x4.JAddDay(x4.NormDate(JDate), Number, "short")
J_ADDDAY = Left(temp$, 2) & "/" & Mid(temp$, 3, 2) & "/" & Right(temp$, 2)
End If
End Function
Function J_DIFF(JDate1 As String, JDate2 As String)
Dim x5 As New VJDate.DateClass
x5.Initial
J_DIFF = x5.JDiff(x5.NormDate(JDate1), x5.NormDate(JDate2))
End Function
Function J_JALALDATE(MDate As String, Optional Mode As Integer)
Dim x6 As New VJDate.DateClass
x6.Initial
If Mode = 1 Then
temp$ = x6.JalalDate(x6.NormDate(MDate), "long")
J_JALALDATE = Left(temp$, 4) & "/" & Mid(temp$, 5, 2) & "/" & Right(temp$, 2)
Else
temp$ = x6.JalalDate(x6.NormDate(MDate))
J_JALALDATE = Left(temp$, 2) & "/" & Mid(temp$, 3, 2) & "/" & Right(temp$, 2)
End If
End Function
Function J_SUBDAY(JDate As String, Number As Integer, Optional Mode As Integer)
Dim x7 As New VJDate.DateClass
x7.Initial
If Mode = 1 Then
temp$ = x7.JSubDay(x7.NormDate(JDate), Number, "long")
J_SUBDAY = Left(temp$, 4) & "/" & Mid(temp$, 5, 2) & "/" & Right(temp$, 2)
Else
temp$ = x7.JSubDay(x7.NormDate(JDate), Number, "short")
J_SUBDAY = Left(temp$, 2) & "/" & Mid(temp$, 3, 2) & "/" & Right(temp$, 2)
End If
End Function
پیوست شماره 2 – نام و شرح توابع
استفاده از تابع تبدیل عدد به حروف
Syntax :
ABH(number)
number : یک عدد صحیح است و یا میتواند به یک سلول اشاره کند.
توجه : حداکثر عددی که این تابع میتواند تبدیل کند 999/999/999/999 میباشد.
تابع J_TODAY
این تابع تاریخ جاری سیستم را نشان میدهد.
Syntax:
J_TODAY(MODE)
Mode: گزینه اختیاری است و در صورتیکه 1 باشد سال را چهار رقمی مینویسد.
تابع J_WEEKDAY
این تابع مشخص میکند که یک تاریخ چندمین روز هفته است.
Syntax:
J_WEEKDAY(JDATE,MODE )
JDATE: تاریخ باید داخل علامت کوتیشن " " باشد.
تابع J_ADDDAY
میتوان یک تاریخ را با یک عدد جمع کرد و تاریخ جدید را بدست آورد.
Syntax:
J_ADDDAY(JDATE,NUMBER,MODE )
JDATE: تاریخ باید داخل علامت کوتیشن " " باشد.
NUMBER: عددی که باید به تاریخ اضافه شود. اگر عدد منفی باشد از این تاریخ کم خواهد شد و تاریخ متناظرش نوشته خواهد شد!
Mode: گزینه اختیاری است و در صورتیکه 1 باشد سال را چهار رقمی مینویسد.
تابع J_DIFF
این تابع دو تاریخ را از هم کم میکند و اختلاف روزهای آن را بر میگرداند.
Syntax:
J_DIFF(JDATE1,JDATE2)
JDATE1: تاریخ اول باید داخل علامت کوتیشن " " باشد.
JDATE2: تاریخ دوم باید داخل علامت کوتیشن " " باشد.
تابع J_JALALDATE
این تابع تاریخ میلادی را به تابع هجری شمسی معادلش تبدیل میکند.
Syntax:
J_JALALDATE (MDATE,Mode)
MDATE: تاریخ میلادی است که به صورت روز/ماه/سال نوشته میشود.
تابع J_SUBDAY
برای کم کردن یک عدد از یک تاریخ بکار میرود.
Syntax:
J_SUBDAY(JDATE,NUMBER,MODE)
JDATE: تاریخ باید داخل علامت کوتیشن " " باشد.
NUMBER: عددی صحیح است.
Mode: گزینه اختیاری است و در صورتیکه 1 باشد سال را چهار رقمی مینویسد.
تذکر: به جای این تابع میتوان از تابع J_ADDDATE با عدد منفی هم استفاده کرد
تابع J_NORMDATE
این تابع یک تاریخ را به فرم استانداردی که قابل استفاده برای سایر توابع ذکر شده است تبدیل میکند.
Syntax:
J_NORMDATE(JDATE)
JDATE: تاریخ باید داخل علامت کوتیشن " " باشد
تذکر: خروجی تابع J_NORMDATE یک رشته (STRING) است و در صورت میتوان آنرا با تابع VALUE به یک مقدار عددی تبدیل کرد.
منتظر دریافت نظرات سودمند شما هستیم.
فرشید میدانی - شهریور 1385
پاورقی :
[1] منظور توابع کار با تاریخ در اکسل است که در سایت farsaran.blogfa.com مفصل به آن پرداخته شده است.
[2] برای دریافت همه فایلها اینجا را کلیک کنید.
کلمات کلیدی مقاله :
تاریخ در اکسس – تاریخ هجری در اکسس – تاریخ جلالی در اکسس – تاریخ هجری شمسی در اکسس – تبدیل عدد به حروف در اکسس – ماژول نویسی اکسس – ویژوال بیسیک در اکسس – کار با توابع در اکسس –
Access Hejri Date – Access Iranian Date – Access Jalali Date – Access Persian Function -
