ورود

View Full Version : مشكل افزايش ارقام عدد با صفر جلوي آن؟



Profesorjd
جمعه 11 اردیبهشت 1388, 11:34 صبح
با سلام
در برنامه عدد 15 رقمي وجود دارد كه فيلد آن تكست است . از آنجاكه عدد 15 رقمي كامل نيست مثلاً 123 و مابقي صفر است ( مانند كد پستي كه بايد 10 رقم باشد ) گاهي كاربر فقط ارقام اوليه را وارد ميكند و صفر را وارد نمي نمايد . با استفاده از len و تابع IIF تعداد ارقم را شمرده و اگر از 15 كم بود به توان 10 رساند و با فيلد اصلي & ميكنم كه نتيجه 15 رقم شود .
IIf(len[field]<15 ;[Field]&mid(15-(len[field]^10);2);[field])
مشكل اينجاست كه نتيجه نهايي بصورت عدد باينري نمايش داده ميشود در صورتيكه ميخواهم تكست باقي بماند ( بجاي 123000000000000 ، 12+123E نمايش داده ميشود ) چگونه اين مشكل را رفع كنم يا بجاي استفاده از دستور فوق چه دستوري بكار ببرم ؟
تشكر

مهدی قربانی
شنبه 12 اردیبهشت 1388, 01:06 صبح
سلام
من متوجه نمي شم شما چرا براي قرار دادن صفر بجاي مابقي ارقام از اين روش استفاده مي كنيد !؟

Profesorjd
شنبه 12 اردیبهشت 1388, 22:15 عصر
با سلام و تشكر
عقل ناقص من به اين روش فكر كرده است ! اگر راه بهتري وجود دارد ممنون ميشوم از آن راه استفاده كنم

مهدی قربانی
شنبه 12 اردیبهشت 1388, 23:38 عصر
سلام
اختيار داريد هر تفكري در جاي خودش مفيده ، اين روش رو نقداً داشته باشيد :

=IIf(Len([FieldName])<15;[FieldName] & Mid("000000000000000";1;15-Len([FieldName]));[FieldName])
البته با ماجول هم ميشه اين عمليات رو انجام داد .

Profesorjd
یک شنبه 13 اردیبهشت 1388, 20:52 عصر
با سلام و ضمن تشكر
اگر منظورتان كدنويسي غير از روش فوق است ممنون ميشوم آنرا هم بفرماييد

مهدی قربانی
یک شنبه 13 اردیبهشت 1388, 23:45 عصر
سلام
اين ماجول با استفاده از تابع حلقه عمليات مورد نظر رو انجام ميده :

Function AddZero(Fld As Variant)
On Error GoTo AddZero1Err

Dim I As Integer
Dim LenStr As Integer
Dim StrZero As String

If Not IsNumeric(Val(Fld)) Then
MsgBox "مقدار وارده عددي نيست لطفاً مقدار عددي وارد نمائيد ", _
vbExclamation + vbMsgBoxRight, "توجه"
Else

LenStr = Len(Fld)

If LenStr < 15 Then

For I = 1 To 15 - LenStr
StrZero = StrZero & "0"
Next I
AddZero = Fld & StrZero

Else

AddZero = Fld
End If
End If

AddZero1Err:
Exit Function

End Function
نحوه استفاده از اين ماجول در Query و يا در Control Soure تكست باكس :

=AddZero([FieldName])