چهارشنبه 17 آبان ماه سال 1385 ساعت 07:04 AM

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

در رویداد OnError مربوط به فرم ورود اطلاعات این کد را می نویسیم:

If DataErr = 3022 Then

MsgBox "اطلاعات وارده تکراری است"

Response = acDataErrContinue

End If

اساسا ، هر خطا در اکسس یا VB یک کد تولید می کند .

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

به طور کلی دو روش کنترل خطا از این قرارند:

1- اگر خطا مربوط به کل فرم باشد باید از طریق رویداد OnError فرم کنترل شود .

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

در این رویداد ، پارامتر DataErr حاوی کد خطاست. (بعبارت واضح تر اگر می خواهید کد مربوط به هر Error را شناسایی کنید می توانید این دستور در رویداد OnError فرم بنویسید: MsgBox DataErr )

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

Dim Str as String

Select Case DataErr

Case 3022

Str="اطلاعات وارده تکراری است"

Case 2237

Str = "اطلاعات وارده در لیست وجود ندارد"

'خط فوق برای مواردی است که یک مقداری که در کمبو باکس وجود ندارد ، تایپ شده باشد

Case ...

Str=...

....

End Select

Msgbox Str

Response = acDataErrContinue

2- اگر خطا مربوط به کدهایی باشد که خودمان در یک Sub نوشته ایم :

در این روش باید در ابتدای Sub با دستور : <اسم زیر روال کنترل خطا> On Error Goto ، کنترل خطا را به یک روال کنترل خطا ارجاع دهیم.

( تمام کدهایی که ویزارد Command Button بطور خودکار در رویداد OnClick دکمه ها ایجاد می کند نمونه خوبی برای این روش هستند. ضمنا در این روش بکمک Err.Number کد خطا شناسایی می شود )

del.icio.us  digg  newsvine  furl  Y!  smarking  segnalo
شنبه 6 آبان ماه سال 1385 ساعت 02:34 AM

 مقدمه :

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

مثلا برای چاپ یک چک روی خود برگه چک ، علاوه بر نیاز به چاپ مبلغ عددی چک لازم  است تا مبلغ حروفی چک هم روی برگه چاپ شود.

 

نحوه استفاده از تابع :

تابع Adad که در زیر ارائه شده است یک عدد را به عنوان ورودی گرفته و معادل حروفی آن عدد در زبان فارسی را به عنوان خروجی تولید می کند.

مثلا (Adad(1373 مقدار"یکهزار و سیصد و هفتاد و سه" را به عنوان خروجی تولید می کند.

برای استفاده از این توابع باید از چند خط پایین تر (Start of Module) تا انتهای این یادداشت را در حافظه کپی (Copy) کرده و در یک ماجول جدید در اکسس یا VB ، Paste کنید .

( توجه داشته باشید که نمایش کدهای نوشته شده در این جا راست به چپ است که پس از کپی کردن آن در ماجول اکسس بشکل صحیح نمایش داده خواهد شد)

 

 

' *********** Start of Module ***********

 

'توابع تبدیل عدد به معادل حروفی آن در زبان فارسی

'برنامه نویس : حمید آزادی اردکانی

'ویرایش اول : اردیبهشت 1380

' پست الکترونیک : azadi1355@yahoo.com

' آدرس وب : http://try.persianblog.com

 

Function Adad(ByVal Number As Double) As String

If Number = 0 Then

Adad = "صفر"

End If

Dim Flag As Boolean

Dim S As String

Dim I, L As Byte

Dim K(1 To 5) As Double

 

S = Trim(Str(Number))

L = Len(S)

If L > 15 Then

Adad = "بسیار بزرگ"

Exit Function

End If

For I = 1 To 15 - L

S = "0" & S

Next I

For I = 1 To Int((L / 3) + 0.99)

K(5 - I + 1) = Val(Mid(S, 3 * (5 - I) + 1, 3))

Next I

Flag = False

S = ""

For I = 1 To 5

If K(I) <> 0 Then

Select Case I

Case 1

S = S & Three(K(I)) & " تریلیون"

Flag = True

Case 2

S = S & IIf(Flag = True, " و ", "") & Three(K(I)) & " میلیارد"

Flag = True

Case 3

S = S & IIf(Flag = True, " و ", "") & Three(K(I)) & " میلیون"

Flag = True

Case 4

S = S & IIf(Flag = True, " و ", "") & Three(K(I)) & " هزار"

Flag = True

Case 5

S = S & IIf(Flag = True, " و ", "") & Three(K(I))

End Select

End If

Next I

Adad = S

End Function

 

 

Function Three(ByVal Number As Integer) As String

Dim S As String

Dim I, L As Long

Dim h(1 To 3) As Byte

Dim Flag As Boolean

L = Len(Trim(Str(Number)))

If Number = 0 Then

Three = ""

Exit Function

End If

If Number = 100 Then

Three = "یکصد"

Exit Function

End If

 

If L = 2 Then h(1) = 0

If L = 1 Then

h(1) = 0

h(2) = 0

End If

 

For I = 1 To L

h(3 - I + 1) = Mid(Trim(Str(Number)), L - I + 1, 1)

Next I

 

Select Case h(1)

Case 1

S = "یکصد"

Case 2

S = "دویست"

Case 3

S = "سیصد"

Case 4

S = "چهارصد"

Case 5

S = "پانصد"

Case 6

S = "ششصد"

Case 7

S = "هفتصد"

Case 8

S = "هشتصد"

Case 9

S = "نهصد"

End Select

 

Select Case h(2)

Case 1

Select Case h(3)

Case 0

S = S & " و " & "ده"

Case 1

S = S & " و " & "یازده"

Case 2

S = S & " و " & "دوازده"

Case 3

S = S & " و " & "سیزده"

Case 4

S = S & " و " & "چهارده"

Case 5

S = S & " و " & "پانزده"

Case 6

S = S & " و " & "شانزده"

Case 7

S = S & " و " & "هفده"

Case 8

S = S & " و " & "هجده"

Case 9

S = S & " و " & "نوزده"

End Select

 

Case 2

S = S & " و " & "بیست"

Case 3

S = S & " و " & "سی"

Case 4

S = S & " و " & "چهل"

Case 5

S = S & " و " & "پنجاه"

Case 6

S = S & " و " & "شصت"

Case 7

S = S & " و " & "هفتاد"

Case 8

S = S & " و " & "هشتاد"

Case 9

S = S & " و " & "نود"

End Select

 

If h(2) <> 1 Then

Select Case h(3)

Case 1

S = S & " و " & "یک"

Case 2

S = S & " و " & "دو"

Case 3

S = S & " و " & "سه"

Case 4

S = S & " و " & "چهار"

Case 5

S = S & " و " & "پنج"

Case 6

S = S & " و " & "شش"

Case 7

S = S & " و " & "هفت"

Case 8

S = S & " و " & "هشت"

Case 9

S = S & " و " & "نه"

End Select

End If

S = IIf(L < 3, Right(S, Len(S) - 3), S)

Three = S

End Function

 

' *********** End Of Module ***********

del.icio.us  digg  newsvine  furl  Y!  smarking  segnalo
شنبه 29 مهر ماه سال 1385 ساعت 08:00 AM
روش غیرفعال کردن دکمه Shift به هنگام باز شدن فایل های اکسس . مقدمه مطلب زیر در زمینه افزایش امنیت سیستم ها است. نکته ای که در زمینه امنیت هر نوع سیستمی باید به آن توجه داشت این است که به طور کلی امنیت یک امر نسبی است . به عبارت دیگر یک راه حل امنیتی ، قطعا جلوی بسیاری از حملات علیه سیستم را خواهد گرفت ولی هیچ گاه به طور کامل حملات را خنثی نخواهد کرد و همیشه حفره های امنیتی وجود خواهند داشت . در یادداشت قبل گفتیم که به هنگام باز شدن فایلهای اکسس، Startup اجراء می شود . حال اگر به خواهیم دکمه شیفت را غیر فعال کنیم تا کسی نتواند وارد محیط طراحی شود باید به این طریق عمل کرد : استفاده از خاصیت AllowByPassKey خاصیت AllowByPassKey یکی از خواص شیء Database است که: اگر مقدار آن True باشد دکمه شیفت فعال است . و اگر مقدار آن False باشد دکمه شیفت غیر فعال است . این خاصیت عملا در لیست خواص یک Database نیست و باید آن را فقط برای اولین بار ایجاد (Create) کرد . بعد از ایجاد آن می توان مقدار آن را False یا True کرد . تذکر : حتما یک کپی از فایل خودتان قبل از اجراء این برنامه بردارید چون ممکن است دیگر نتوانید وارد محیط برنامه خودتان شوید . سه دکمه روی یک فرم مطابق شکل بالا ایجاد کنید و کدهای زیر را در آن بنویسد. (نمایش کدهای نوشته شده مناسب نیست ولی اگر آن را در حافظه کپی کنید و در ماجول فرمتان کپی کند به درستی نمایش داده می شود .) 'برای اولین دفعه : Private Sub Create_Click() On Error GoTo Er Dim db As Database Dim prp As Property Set db = CurrentDb Set prp = db.CreateProperty("allowbypasskey", dbBoolean, False) db.Properties.Append prp db.Close Ex: Exit Sub Er: If Err.Number = 3367 Then MsgBox "این خاصیت ایجاد شده و لازم نیست مجددا ایجاد شود" End If Resume Ex End Sub 'جهت غیر فعال کردن شیفت Private Sub ShiftNo_Click() Dim db As Database Set db = CurrentDb db.Properties("allowbypasskey") = False db.Close End Sub 'جهت فعال کردن شیفت Private Sub ShiftOk_Click() Dim db As Database Set db = CurrentDb db.Properties("allowbypasskey") = True db.Close End Sub روش های ضد امنیتی دیگری هم هست که همین خاصیت توسط کاربران برنامه تغییر داده شود. امیدوارم مفید واقع شده باشد.
del.icio.us  digg  newsvine  furl  Y!  smarking  segnalo
پنجشنبه 17 فروردین ماه سال 1385 ساعت 11:18 AM

کاری ازخودم

ابتدا بایدآن رادریک سند ورد بارگذاری نموده سپس سند مزبور رابه یک نمایش پاور پوینت درآورید .

del.icio.us  digg  newsvine  furl  Y!  smarking  segnalo
شنبه 20 اسفند ماه سال 1384 ساعت 07:42 AM

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

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

برای دیدن تابع بقیه رو بخونید

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

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

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

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


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

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

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

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

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

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

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

del.icio.us  digg  newsvine  furl  Y!  smarking  segnalo
پنجشنبه 18 اسفند ماه سال 1384 ساعت 08:00 AM

 برگرفته از وبلاگ civilizationiran.mihanblog.com

تعریف کلی از اکسس
اکسس ابزاری برای تولید بانکهای اطلاعاتی رابطه ای است. بانکهای اطلاعاتی امکان گردآوری انواع اطلاعات را برای ذخیره ‌سازی ،جستجو و بازیابی فراهم می‌کند.

اجزا بانک اطلاعاتی اکسس عبارتند از:

DataBase:

1.
Table
2.
Query
3.
Form
4.
Report
5.
Macros
6.
Modules

• ‏‏
Table جدول ) هر جدول برای نگهداری داده‌های خام بانک اطلاعاتی است.داده‌ها را شما در جدول وارد می‌کنید.جداول سپس این داده‌ها را به شکل سطرها و ستونهایی سازماندهی میکند.

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

Form :متداولترین روش استفاده از فرمها،برای ورود و نمایش داده‌ها است.

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

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

Modules : محیط بسیار قوی و با کیفیت برای برنامه‌نویسی محاسبات و عملیات پیچیده روی سیستم بانک اطلاعاتی.
-----------------------------------
الف ‌- تعریف داده
Data :
هرگونه اطلاعات لازم و کاربردی درباره یک موجودیت را یک داده می‌گویند.

ب‌- تعریف
Fild :
به هر ستون یک جدول که در بر گیرنده کلیه اطلاعات مربوط به آن ستون می‌باشد و بخشی از یک موجودیت را تشگیل میدهد فیلد گفته می‌شود.

ت‌- تعریف
Record :
به هر سطر یک جدول که اطلاعات مربوط به یک موجودیت را نشان می‌دهد ، رکورد گویند.

ث‌- تعریف پایگاه داده‌ای ارتباطی:
پایگاه داده‌های ارتباطی، مجموعه‌ای از جدول‌های داده است که یک فیلد مشترک در هر یک از جدولهای موجود دارد و از طریق آن می‌توان داده‌ها را بهم ربط داد.به این مدل از پایگاه داده‌ها ، پایگاه داده‌های ارتباطی
RelationShip می‌گویند.

del.icio.us  digg  newsvine  furl  Y!  smarking  segnalo