PDA

View Full Version : آموزش: چک کردن تمامی فیلدهای مورد نیاز با یک فانکشن



id1385
چهارشنبه 11 دی 1392, 22:40 عصر
با سلام
برای اینکه بتوان تمامی فیلدهای مورد نیاز را چک نمود نیازی به چک کردن تک تک آنها نمی باشد
برای این کار از روش زیر پیروی می کنیم

1. فانکشن زیر را در یک ماژول اضافه می کنیم

Public Function GetReqTxtBox(ByVal strFormName As String) As String
Dim ret As String
Dim c As Control
For Each c In Forms(strFormName)
If TypeOf c Is TextBox Or TypeOf c Is ComboBox Then If c.Tag = "req" _
And IsNull(Trim(c.Value)) Then ret = ret & GenrateErr(c) & c.StatusBarText & "#" _
Else c.BackColor = 16777215
Next c
GetReqTxtBox = ret
End Function

Private Function GenrateErr(c As Control) As String
c.BackColor = 13294591
End Function


2. سپس برای استفاده از آن در فرم مورد نظر به شکل زیر عمل می کنیم
- در فرم مورد نظر کنترل خود (text, combo) را در قسمت خصوصیات
tag = req
این اعلام میکنه که در این فرم کنترل مورد نظر باید پر شود و مورد نیاز برای ادامه می باشد

status bar text
در این خصوصیت هم متن یا نام کنتل مورد نظر را که به کاربر نمایش داده میشود وارد می نماییم فرض می کنیم کنترل مورد نظر نام کاربری است پس در این قسمت وارد می کنیم "نام کاربری" و یا "نام کاربری را وارد نمایید"

و به همین ترتیب تمامی اینپوتهای مورد نیاز را خصوصیت دهی میکنیم

3. در رویداد دکمه یا هر چیز دیگری که میخواهیم ولیدیت انجام شود بدین صورت عمل می نماییم

Private Sub Cmd_Save_Click()
If validate = True Then
If TheType.Value = "new" Then
SaveNewUser
ElseIf TheType.Value = "edit" Then
EditTheUser
Else
MsgBox "Unknown Error", vbExclamation + vbMsgBoxRight, "ERR"
End If
End If
End Sub


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


Private Function validate() As Boolean
Dim values, msg As String
Dim errorArr() As String
values = GetReqTxtBox(Me.Name)

If Len(values) <> 0 Then
errorArr() = Split(values, "#")
For inti = 0 To UBound(errorArr()) - 1
msg = msg & vbNewLine & errorArr(inti) & " - "
Next inti
MsgBoxFa "Baraye sabt karbar etelaate zir morede niyaz ast" & vbNewLine & msg, vbExclamation + vbMsgBoxRight, "ÎØÇ"
Exit Function
Else
validate = True
End If
End Function


همانظور که در قطعه کد قبلی مشاهده کردیم ابتدا پروسه وارد فانکشن بالا می شود و در صورتی که مقدار برگشتی مثبت باشد سایر پردازش انجام می شود.

ماحصل کار به شکل زیر خواهد بود.

امیداورم مورد پسند قرار گیرد.


موفق باشید

G.hemati
پنج شنبه 12 دی 1392, 00:25 صبح
با سلام
دوست عزیز تشکر بابت آموزش ارزنده ای که ارائه نمودین .

ممنون میشم اگه ایراد نمونه زیر رو برطرف بفرمایین . من تمامی ماژولها و کد هارو در برنامه قرار دادم و بر روی Text1 اجرا کردم ولی هنگام اجرا Error میده

id1385
پنج شنبه 12 دی 1392, 14:37 عصر
با سلام

نمونه به ضمیمه تقدیم می شود.


موفق باشید